name: CI Build on: push: branches: - '**' tags-ignore: - '**' paths-ignore: - 'docs/**' - 'website/**' # cancel older, redundant builds that haven't started yet concurrency: group: ${{ github.workflow }}-${{ github.ref }} jobs: ubuntu-build: name: Build Linux AMD64 CLI runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - name: setup-go uses: actions/setup-go@v3 with: go-version: '>=1.21.3' - name: setup-node uses: actions/setup-node@v3 with: node-version: 18.x - name: install ui node modules shell: bash run: npm install working-directory: ui - name: build node ui shell: bash run: npm run build working-directory: ui env: CI: "true" - name: go install shell: bash run: go install -ldflags "-X github.com/openziti/zrok/build.Version=${{ github.ref }} -X github.com/openziti/zrok/build.Hash=${{ github.sha }}" ./... - name: go test shell: bash run: go test -v ./... - name: setup python uses: actions/setup-python@v3 with: python-version: '3.10' - name: python deps shell: bash run: python -m pip install -U pip flake8 - name: python lint shell: bash run: flake8 sdk/python/sdk/zrok - name: solve GOBIN id: solve_go_bin 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 if-no-files-found: error # 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 shell: bash 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 }} password: ${{ secrets.DOCKER_HUB_API_TOKEN }} - name: Set Up Container Image Tags for zrok CLI Container env: ZROK_CONTAINER_IMAGE_REPO: ${{ vars.ZROK_CONTAINER_IMAGE_REPO || 'openziti/zrok' }} ZROK_CONTAINER_IMAGE_TAG: ${{ steps.slug.outputs.branch_tag }} id: tagprep_cli shell: bash run: | echo DOCKER_TAGS="${ZROK_CONTAINER_IMAGE_REPO}:${ZROK_CONTAINER_IMAGE_TAG}" \ | tee -a $GITHUB_OUTPUT - 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