# This workflow is meant to trigger a build of Docker binaries when a release # is published, it uses the existing `sub-build-docker-image.yml` workflow # # We use a separate action as we might want to trigger this under # different circumstances than a Continuous Deployment, for example. # # This workflow is triggered if: # - A release is published # - A pre-release is changed to a release name: Release binaries on: release: types: - released jobs: # Each time this workflow is executed, a build will be triggered to create a new image # with the corresponding tags using information from git # The image will be named `zebra:.experimental` build-experimental: name: Build Experimental Features Release Docker uses: ./.github/workflows/sub-build-docker-image.yml with: dockerfile_path: ./docker/Dockerfile dockerfile_target: runtime image_name: zebra tag_suffix: .experimental features: ${{ format('{0} {1}', vars.RUST_PROD_FEATURES, vars.RUST_EXPERIMENTAL_FEATURES) }} rust_log: ${{ vars.RUST_LOG }} # This step needs access to Docker Hub secrets to run successfully secrets: inherit # The image will be named `zebra:` # It should be built last, so tags with the same name point to the production build, not the experimental build. build: name: Build Release Docker # Run this build last, regardless of whether experimental worked needs: build-experimental if: always() uses: ./.github/workflows/sub-build-docker-image.yml with: dockerfile_path: ./docker/Dockerfile dockerfile_target: runtime image_name: zebra latest_tag: true features: ${{ vars.RUST_PROD_FEATURES }} rust_log: ${{ vars.RUST_LOG }} # This step needs access to Docker Hub secrets to run successfully secrets: inherit failure-issue: name: Open or update issues for release binaries failures # When a new job is added to this workflow, add it to this list. needs: [ build, build-experimental ] # Open tickets for any failed build in this workflow. if: failure() || cancelled() runs-on: ubuntu-latest steps: - uses: jayqi/failed-build-issue-action@v1 with: title-template: "{{refname}} branch CI failed: {{eventName}} in {{workflow}}" # New failures open an issue with this label. label-name: S-ci-fail-binaries-auto-issue # If there is already an open issue with this label, any failures become comments on that issue. always-create-new-issue: false github-token: ${{ secrets.GITHUB_TOKEN }}