zrok/.github/workflows/ci-build.yml

127 lines
3.6 KiB
YAML
Raw Normal View History

2022-11-02 20:08:50 +01:00
name: CI Build
2022-11-02 19:14:30 +01:00
2023-02-08 17:40:27 +01:00
on:
push:
branches:
- '**'
tags-ignore:
- '**'
2023-02-11 03:27:32 +01:00
paths-ignore:
- 'docs/**'
- 'website/**'
2022-11-02 19:14:30 +01:00
# cancel older, redundant builds that haven't started yet
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
2022-11-02 19:14:30 +01:00
jobs:
2022-11-02 20:07:43 +01:00
ubuntu-build:
2023-04-04 20:05:08 +02:00
name: Build Linux AMD64 CLI
runs-on: ubuntu-20.04
2022-11-02 19:14:30 +01:00
steps:
- uses: actions/checkout@v3
- name: setup-go
uses: actions/setup-go@v3
with:
go-version: '>=1.21.3'
2022-11-02 19:14:30 +01:00
2022-11-02 19:24:11 +01:00
- name: setup-node
uses: actions/setup-node@v3
with:
2023-08-11 17:19:22 +02:00
node-version: 18.x
2022-11-02 19:24:11 +01:00
2023-10-25 20:37:10 +02:00
- name: install ui node modules
shell: bash
run: npm install
2022-11-02 19:24:11 +01:00
working-directory: ui
2023-10-25 20:37:10 +02:00
- name: build node ui
shell: bash
run: npm run build
2022-11-02 19:24:11 +01:00
working-directory: ui
2022-11-02 19:34:55 +01:00
env:
CI: "true"
2023-06-28 19:39:52 +02:00
2022-11-02 20:43:17 +01:00
- name: go install
2023-10-25 20:37:10 +02:00
shell: bash
run: go install -ldflags "-X github.com/openziti/zrok/build.Version=${{ github.ref }} -X github.com/openziti/zrok/build.Hash=${{ github.sha }}" ./...
2022-11-02 19:14:30 +01:00
2023-10-25 20:37:10 +02:00
- name: go test
shell: bash
run: go test -v ./...
- name: solve GOBIN
id: solve_go_bin
2023-10-25 20:37:10 +02:00
shell: bash
run: |
echo DEBUG: go_path="$(go env GOPATH)"
echo go_bin="$(go env GOPATH)/bin" >> $GITHUB_OUTPUT
- name: upload build artifact
uses: actions/upload-artifact@v3
with:
name: linux-amd64
path: ${{ steps.solve_go_bin.outputs.go_bin }}/zrok
2023-04-04 20:05:08 +02:00
if-no-files-found: error
2023-10-25 20:37:10 +02:00
2023-04-04 20:05:08 +02:00
# build a release candidate container image for branches named "main" or like "v*"
rc-container-build:
needs: ubuntu-build
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/v')
name: Build Release Candidate Container Image
runs-on: ubuntu-latest
steps:
- name: Set a container image tag from the branch name
id: slug
2023-10-25 20:37:10 +02:00
shell: bash
2023-04-04 20:05:08 +02:00
run: |
echo branch_tag=$(sed 's/[^a-z0-9_-]/__/gi' <<< "${GITHUB_REF#refs/heads/}") >> $GITHUB_OUTPUT
- name: Checkout Workspace
uses: actions/checkout@v3
- name: Download Branch Build Artifact
uses: actions/download-artifact@v3
with:
name: linux-amd64
path: ./dist/amd64/linux/
- name: Set Up QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: amd64,arm64
- name: Set Up Docker BuildKit
id: buildx
uses: docker/setup-buildx-action@v2
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ vars.DOCKER_HUB_API_USER || secrets.DOCKER_HUB_API_USER }}
2023-04-04 20:05:08 +02:00
password: ${{ secrets.DOCKER_HUB_API_TOKEN }}
- name: Set Up Container Image Tags for zrok CLI Container
env:
2023-04-13 06:02:15 +02:00
ZROK_CONTAINER_IMAGE_REPO: ${{ vars.ZROK_CONTAINER_IMAGE_REPO || 'openziti/zrok' }}
ZROK_CONTAINER_IMAGE_TAG: ${{ steps.slug.outputs.branch_tag }}
2023-04-04 20:05:08 +02:00
id: tagprep_cli
2023-10-25 20:37:10 +02:00
shell: bash
2023-04-04 20:05:08 +02:00
run: |
2023-10-25 20:37:10 +02:00
echo DOCKER_TAGS="${ZROK_CONTAINER_IMAGE_REPO}:${ZROK_CONTAINER_IMAGE_TAG}" \
| tee -a $GITHUB_OUTPUT
2023-04-04 20:05:08 +02:00
- name: Build & Push Linux AMD64 CLI Container Image to Hub
uses: docker/build-push-action@v3
with:
builder: ${{ steps.buildx.outputs.name }}
context: ${{ github.workspace }}/
file: ${{ github.workspace }}/docker/images/zrok/Dockerfile
platforms: linux/amd64
tags: ${{ steps.tagprep_cli.outputs.DOCKER_TAGS }}
build-args: |
DOCKER_BUILD_DIR=./docker/images/zrok
ARTIFACTS_DIR=./dist
push: true