Skip to content

Commit

Permalink
Merge pull request #2843 from openziti/2011-release-ci---publish-cont…
Browse files Browse the repository at this point in the history
…ainer-image-attestations

publish container image attestations
  • Loading branch information
qrkourier authored Feb 26, 2025
2 parents d3b0db3 + 1f8f0c6 commit dfec22e
Showing 1 changed file with 60 additions and 23 deletions.
83 changes: 60 additions & 23 deletions .github/workflows/publish-docker-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,16 @@ on:
jobs:
publish-docker-images:
runs-on: ubuntu-24.04
permissions:
id-token: write # need write to get OIDC token for generating attestations
attestations: write # need write to create attestations
env:
REGISTRY: docker.io
ZITI_CLI_TAG: ${{ inputs.ziti-tag || github.event.inputs.ziti-tag }}
ZITI_CLI_IMAGE: ${{ vars.ZITI_CLI_IMAGE || 'docker.io/openziti/ziti-cli' }}
ZITI_CONTROLLER_IMAGE: ${{ vars.ZITI_CONTROLLER_IMAGE || 'docker.io/openziti/ziti-controller' }}
ZITI_ROUTER_IMAGE: ${{ vars.ZITI_ROUTER_IMAGE || 'docker.io/openziti/ziti-router' }}
ZITI_TUNNEL_IMAGE: ${{ vars.ZITI_TUNNEL_IMAGE || 'docker.io/openziti/ziti-tunnel' }}
ZITI_CLI_IMAGE: ${{ vars.ZITI_CLI_IMAGE || 'openziti/ziti-cli' }}
ZITI_CONTROLLER_IMAGE: ${{ vars.ZITI_CONTROLLER_IMAGE || 'openziti/ziti-controller' }}
ZITI_ROUTER_IMAGE: ${{ vars.ZITI_ROUTER_IMAGE || 'openziti/ziti-router' }}
ZITI_TUNNEL_IMAGE: ${{ vars.ZITI_TUNNEL_IMAGE || 'openziti/ziti-tunnel' }}
steps:
- name: Checkout Workspace
uses: actions/checkout@v4
Expand All @@ -39,26 +43,23 @@ jobs:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
# it is preferable to obtain the username from a var so that
# recurrences of the same string are not masked in CI output
registry: ${{ env.REGISTRY}}
username: ${{ vars.DOCKER_HUB_API_USER || secrets.DOCKER_HUB_API_USER }}
password: ${{ secrets.DOCKER_HUB_API_TOKEN }}

- name: Set Up Container Image Tags for Base CLI Container
env:
IMAGE_REPO: ${{ env.ZITI_CLI_IMAGE }}
IMAGE_REPO: ${{ env.REGISTRY }}/${{ env.ZITI_CLI_IMAGE }}
IMAGE_TAG: ${{ env.ZITI_CLI_TAG }}
id: tagprep_cli
shell: bash
run: |
DOCKER_TAGS="${IMAGE_REPO}:${IMAGE_TAG}"
echo DOCKER_TAGS="${DOCKER_TAGS}" | tee -a $GITHUB_OUTPUT
# this is the base image into which is stuffed the Linux binary for each
# arch that was downloaded in ./release/, hence the need to specify the
# Dockerfile and DOCKER_BUILD_DIR
- name: Build & Push Multi-Platform CLI Container Image to Hub
- name: Push CLI Image to Hub
uses: docker/build-push-action@v6
id: push_cli
with:
builder: ${{ steps.buildx.outputs.name }}
context: ${{ github.workspace }}/
Expand All @@ -67,23 +68,30 @@ jobs:
tags: ${{ steps.tagprep_cli.outputs.DOCKER_TAGS }}
build-args: |
DOCKER_BUILD_DIR=./dist/docker-images/ziti-cli
provenance: mode=max
sbom: true
push: true

- name: Publish Attestations to GitHub
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.ZITI_CLI_IMAGE }}
subject-digest: ${{ steps.push_cli.outputs.digest }}
push-to-registry: true

- name: Set Up Container Image Tags for Controller Container
env:
IMAGE_REPO: ${{ env. ZITI_CONTROLLER_IMAGE }}
IMAGE_REPO: ${{ env.REGISTRY }}/${{ env.ZITI_CONTROLLER_IMAGE }}
IMAGE_TAG: ${{ env.ZITI_CLI_TAG }}
id: tagprep_ctrl
shell: bash
run: |
DOCKER_TAGS="${IMAGE_REPO}:${IMAGE_TAG}"
echo DOCKER_TAGS="${DOCKER_TAGS}" | tee -a $GITHUB_OUTPUT
# This is a use-case image based on the minimal CLI image. It needs the
# ZITI_CLI_TAG env var so it can build from the versioned image that
# we pushed in the prior step.
- name: Build & Push Multi-Platform Controller Container Image to Hub
- name: Push Controller Image to Hub
uses: docker/build-push-action@v6
id: push_ctrl
with:
builder: ${{ steps.buildx.outputs.name }}
context: ${{ github.workspace }}/
Expand All @@ -92,22 +100,32 @@ jobs:
tags: ${{ steps.tagprep_ctrl.outputs.DOCKER_TAGS }}
build-args: |
ZITI_CLI_TAG=${{ env.ZITI_CLI_TAG }}
ZITI_CLI_IMAGE=${{ env.ZITI_CLI_IMAGE }}
ZITI_CLI_IMAGE=${{ env.REGISTRY }}/${{ env.ZITI_CLI_IMAGE }}
DOCKER_BUILD_DIR=./dist/docker-images/ziti-controller
provenance: mode=max
sbom: true
push: true

- name: Publish Attestations to GitHub
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.ZITI_CONTROLLER_IMAGE }}
subject-digest: ${{ steps.push_ctrl.outputs.digest }}
push-to-registry: true

- name: Set Up Container Image Tags for Router Container
env:
IMAGE_REPO: ${{ env.ZITI_ROUTER_IMAGE }}
IMAGE_REPO: ${{ env.REGISTRY }}/${{ env.ZITI_ROUTER_IMAGE }}
IMAGE_TAG: ${{ env.ZITI_CLI_TAG }}
id: tagprep_router
shell: bash
run: |
DOCKER_TAGS="${IMAGE_REPO}:${IMAGE_TAG}"
echo DOCKER_TAGS="${DOCKER_TAGS}" | tee -a $GITHUB_OUTPUT
- name: Build & Push Multi-Platform Router Container Image to Hub
- name: Push Router Image to Hub
uses: docker/build-push-action@v6
id: push_router
with:
builder: ${{ steps.buildx.outputs.name }}
context: ${{ github.workspace }}/
Expand All @@ -116,22 +134,32 @@ jobs:
tags: ${{ steps.tagprep_router.outputs.DOCKER_TAGS }}
build-args: |
ZITI_CLI_TAG=${{ env.ZITI_CLI_TAG }}
ZITI_CLI_IMAGE=${{ env.ZITI_CLI_IMAGE }}
ZITI_CLI_IMAGE=${{ env.REGISTRY }}/${{ env.ZITI_CLI_IMAGE }}
DOCKER_BUILD_DIR=./dist/docker-images/ziti-router
provenance: mode=max
sbom: true
push: true

- name: Publish Attestations to GitHub
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.ZITI_ROUTER_IMAGE }}
subject-digest: ${{ steps.push_router.outputs.digest }}
push-to-registry: true

- name: Set Up Container Image Tags for Go Tunneler Container
env:
IMAGE_REPO: ${{ env.ZITI_TUNNEL_IMAGE }}
IMAGE_REPO: ${{ env.REGISTRY }}/${{ env.ZITI_TUNNEL_IMAGE }}
IMAGE_TAG: ${{ env.ZITI_CLI_TAG }}
id: tagprep_tun
shell: bash
run: |
DOCKER_TAGS="${IMAGE_REPO}:${IMAGE_TAG}"
echo DOCKER_TAGS="${DOCKER_TAGS}" | tee -a $GITHUB_OUTPUT
- name: Build & Push Multi-Platform Go Tunneler Container Image to Hub
- name: Push Tunneler Image to Hub
uses: docker/build-push-action@v6
id: push_tunnel
with:
builder: ${{ steps.buildx.outputs.name }}
context: ${{ github.workspace }}/
Expand All @@ -140,5 +168,14 @@ jobs:
tags: ${{ steps.tagprep_tun.outputs.DOCKER_TAGS }}
build-args: |
ZITI_CLI_TAG=${{ env.ZITI_CLI_TAG }}
ZITI_CLI_IMAGE=${{ env.ZITI_CLI_IMAGE }}
ZITI_CLI_IMAGE=${{ env.REGISTRY }}/${{ env.ZITI_CLI_IMAGE }}
provenance: mode=max
sbom: true
push: true

- name: Publish Attestations to GitHub
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.ZITI_TUNNEL_IMAGE }}
subject-digest: ${{ steps.push_tunnel.outputs.digest }}
push-to-registry: true

0 comments on commit dfec22e

Please sign in to comment.