Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add GitHub Actions workflow and action for Vespa CLI - MERGEOK #1

Merged
merged 1 commit into from
Aug 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Test

on:
push:
branches:
- 1.x
pull_request:
branches:
- 1.x

jobs:
test:
strategy:
fail-fast: true
matrix:
vespa-cli-version: [latest, 8.371.16]

runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Vespa CLI
uses: ./
with:
version: ${{ matrix.vespa-cli-version }}

- name: Verify Vespa CLI
run: vespa version

lint:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Lint YAML files
run: yamllint --format github .
7 changes: 7 additions & 0 deletions .yamllint
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
extends: default

rules:
line-length: disable
truthy:
check-keys: false
36 changes: 36 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Setup Vespa CLI on GitHub Actions

This action sets up Vespa CLI as part of your GitHub Actions workflow.

## Inputs

| name | required | type | default | description |
| ------------ | --- | ------ | --------------- | ----------- |
| version | yes | string | `latest` | The version of Vespa CLI to install. |

## Example usage

Workflow:

```yml
---
name: CI
on:
push: ~

jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- name: Install Vespa CLI
uses: vespa-engine/setup-vespa-cli@v1

- name: Do something with the vespa CLI
run: |
vespa auth login
...
vespa deploy

```
42 changes: 42 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
name: "Setup Vespa CLI"
description: "Installs the Vespa CLI tool on the runner."

inputs:
# The version of the Vespa CLI to install.
version:
description: "The version of the Vespa CLI to install."
default: "latest"

runs:
using: "composite"
steps:
- name: Select CLI version
shell: bash
id: vespa-cli-version
run: |
if [ "${{ inputs.version }}" == "latest" ]; then
VESPA_CLI_VERSION=$(curl -fsSL https://api.github.com/repos/vespa-engine/vespa/releases/latest | jq -r '.tag_name' | sed 's/^v//')
else
VESPA_CLI_VERSION="${{ inputs.version }}"
fi

echo "version=${VESPA_CLI_VERSION}" >> "$GITHUB_OUTPUT"

- name: Install Vespa CLI
shell: bash
env:
VESPA_CLI_VERSION: ${{ steps.vespa-cli-version.outputs.version }}
ARCH: ${{ startswith(runner.arch, 'ARM') && 'arm64' || 'amd64' }}
run: |
ARCHIVE_NAME="$(echo "vespa-cli_${VESPA_CLI_VERSION}_linux_${ARCH}" | tr '[:upper:]' '[:lower:]')"
DOWNLOAD_URL="https://github.com/vespa-engine/vespa/releases/download/v${VESPA_CLI_VERSION}/${ARCHIVE_NAME}.tar.gz"
echo "Downloading: ${DOWNLOAD_URL}"

curl -fsSL "${DOWNLOAD_URL}" | tar -zxf - -C /opt

chmod +x /opt/${ARCHIVE_NAME}/bin/*
ln -sf /opt/${ARCHIVE_NAME}/bin/vespa /usr/local/bin/

# Verify the installation
vespa version