69 lines
2.6 KiB
YAML
69 lines
2.6 KiB
YAML
# 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:<semver>.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:<semver>`
|
|
# 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 }}
|