mirror of
https://github.com/openziti/zrok.git
synced 2024-12-23 15:18:52 +01:00
189 lines
7.3 KiB
YAML
189 lines
7.3 KiB
YAML
name: Publish Docker Images
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
zrok-version:
|
|
description: zrok release tag to publish as a Docker image
|
|
type: string
|
|
required: true
|
|
release:
|
|
types:
|
|
- released # excludes "prereleased" which is included in "published" to
|
|
# avoid prematurely releasing semver tagged container images
|
|
|
|
jobs:
|
|
publish-docker-images:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
RELEASE_REF: ${{ inputs.zrok-version || github.ref }}
|
|
steps:
|
|
# compose the semver string without leading "refs/tags" or "v" so we can predict the
|
|
# release artifact filename
|
|
- name: Set zrok Version Semver from Tag Ref
|
|
id: semver
|
|
run: |
|
|
zrok_semver=${RELEASE_REF#refs/tags/}
|
|
echo "zrok_semver=${zrok_semver#v}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Checkout Workspace
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Create the Release Arch Dirs
|
|
run: |
|
|
for TGZ in dist/{amd,arm}64/linux/; do
|
|
mkdir -pv ${TGZ}
|
|
done
|
|
|
|
- name: Download Linux AMD64 Release Artifact
|
|
uses: dsaltares/fetch-gh-release-asset@master
|
|
with:
|
|
version: tags/v${{ steps.semver.outputs.zrok_semver }}
|
|
file: zrok_${{ steps.semver.outputs.zrok_semver }}_linux_amd64.tar.gz
|
|
target: dist/amd64/linux/zrok_${{ steps.semver.outputs.zrok_semver }}_linux_amd64.tar.gz
|
|
|
|
- name: Download Linux ARM64 Release Artifact
|
|
uses: dsaltares/fetch-gh-release-asset@master
|
|
with:
|
|
version: tags/v${{ steps.semver.outputs.zrok_semver }}
|
|
file: zrok_${{ steps.semver.outputs.zrok_semver }}_linux_arm64.tar.gz
|
|
target: dist/arm64/linux/zrok_${{ steps.semver.outputs.zrok_semver }}_linux_arm64.tar.gz
|
|
|
|
- name: Unpack the Release Artifacts
|
|
run: |
|
|
for TGZ in dist/{amd,arm}64/linux; do
|
|
tar -xvzf ${TGZ}/zrok_*.tar.gz -C ${TGZ}
|
|
done
|
|
|
|
- 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: ${{ secrets.DOCKER_HUB_API_USER }}
|
|
password: ${{ secrets.DOCKER_HUB_API_TOKEN }}
|
|
|
|
- name: Set Up Container Image Tags for zrok CLI Container
|
|
env:
|
|
RELEASE_REPO: openziti/zrok
|
|
ZROK_VERSION: ${{ steps.semver.outputs.zrok_semver }}
|
|
id: tagprep_cli
|
|
run: |
|
|
DOCKER_TAGS=""
|
|
DOCKER_TAGS="${RELEASE_REPO}:${ZROK_VERSION},${RELEASE_REPO}:latest"
|
|
echo "DEBUG: DOCKER_TAGS=${DOCKER_TAGS}"
|
|
echo DOCKER_TAGS="${DOCKER_TAGS}" >> $GITHUB_OUTPUT
|
|
|
|
# this is the CLI image with the Linux binary for each
|
|
# arch that was downloaded in ./dist/
|
|
- name: Build & Push Multi-Platform 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,linux/arm64
|
|
tags: ${{ steps.tagprep_cli.outputs.DOCKER_TAGS }}
|
|
build-args: |
|
|
DOCKER_BUILD_DIR=./docker/images/zrok
|
|
ARTIFACTS_DIR=./dist
|
|
push: true
|
|
|
|
# - name: Set Up Container Image Tags for zrok Controller Container
|
|
# env:
|
|
# RELEASE_REPO: openziti/zrok-controller
|
|
# ZROK_VERSION: ${{ steps.semver.outputs.zrok_semver }}
|
|
# id: tagprep_ctrl
|
|
# run: |
|
|
# DOCKER_TAGS=""
|
|
# DOCKER_TAGS="${RELEASE_REPO}:${ZROK_VERSION},${RELEASE_REPO}:latest"
|
|
# echo "DEBUG: DOCKER_TAGS=${DOCKER_TAGS}"
|
|
# echo DOCKER_TAGS="${DOCKER_TAGS}" >> $GITHUB_OUTPUT
|
|
|
|
# # This is a use-case image based on the minimal CLI image. It needs the
|
|
# # ZROK_VERSION 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
|
|
# uses: docker/build-push-action@v3
|
|
# with:
|
|
# builder: ${{ steps.buildx.outputs.name }}
|
|
# context: ${{ github.workspace }}/docker/images/zrok-controller/
|
|
# platforms: linux/amd64,linux/arm64
|
|
# tags: ${{ steps.tagprep_ctrl.outputs.DOCKER_TAGS }}
|
|
# build-args: |
|
|
# ZROK_VERSION=${{ env.ZROK_VERSION }}
|
|
# push: true
|
|
|
|
# - name: Set Up Container Image Tags for zrok Frontend Container
|
|
# env:
|
|
# RELEASE_REPO: openziti/zrok-frontend
|
|
# ZROK_VERSION: ${{ steps.semver.outputs.zrok_semver }}
|
|
# id: tagprep_frontend
|
|
# run: |
|
|
# DOCKER_TAGS=""
|
|
# DOCKER_TAGS="${RELEASE_REPO}:${ZROK_VERSION},${RELEASE_REPO}:latest"
|
|
# echo "DEBUG: DOCKER_TAGS=${DOCKER_TAGS}"
|
|
# echo DOCKER_TAGS="${DOCKER_TAGS}" >> $GITHUB_OUTPUT
|
|
|
|
# - name: Build & Push Multi-Platform Frontend Container Image to Hub
|
|
# uses: docker/build-push-action@v3
|
|
# with:
|
|
# builder: ${{ steps.buildx.outputs.name }}
|
|
# context: ${{ github.workspace }}/docker/images/zrok-frontend/
|
|
# platforms: linux/amd64,linux/arm64
|
|
# tags: ${{ steps.tagprep_frontend.outputs.DOCKER_TAGS }}
|
|
# build-args: |
|
|
# ZROK_VERSION=${{ env.ZROK_VERSION }}
|
|
# push: true
|
|
|
|
# - name: Set Up Container Image Tags for zrok Share Container
|
|
# env:
|
|
# RELEASE_REPO: openziti/zrok-share
|
|
# ZROK_VERSION: ${{ steps.semver.outputs.zrok_semver }}
|
|
# id: tagprep_share
|
|
# run: |
|
|
# DOCKER_TAGS=""
|
|
# DOCKER_TAGS="${RELEASE_REPO}:${ZROK_VERSION},${RELEASE_REPO}:latest"
|
|
# echo "DEBUG: DOCKER_TAGS=${DOCKER_TAGS}"
|
|
# echo DOCKER_TAGS="${DOCKER_TAGS}" >> $GITHUB_OUTPUT
|
|
|
|
# - name: Build & Push Multi-Platform zrok Share Container Image to Hub
|
|
# uses: docker/build-push-action@v3
|
|
# with:
|
|
# builder: ${{ steps.buildx.outputs.name }}
|
|
# context: ${{ github.workspace }}/docker/images/zrok-share/
|
|
# platforms: linux/amd64,linux/arm64
|
|
# tags: ${{ steps.tagprep_share.outputs.DOCKER_TAGS }}
|
|
# build-args: |
|
|
# ZROK_VERSION=${{ env.ZROK_VERSION }}
|
|
# push: true
|
|
|
|
# - name: Set Up Container Image Tags for zrok Access Container
|
|
# env:
|
|
# RELEASE_REPO: openziti/zrok-access
|
|
# ZROK_VERSION: ${{ steps.semver.outputs.zrok_semver }}
|
|
# id: tagprep_access
|
|
# run: |
|
|
# DOCKER_TAGS=""
|
|
# DOCKER_TAGS="${RELEASE_REPO}:${ZROK_VERSION},${RELEASE_REPO}:latest"
|
|
# echo "DEBUG: DOCKER_TAGS=${DOCKER_TAGS}"
|
|
# echo DOCKER_TAGS="${DOCKER_TAGS}" >> $GITHUB_OUTPUT
|
|
|
|
# - name: Build & Push Multi-Platform zrok Access Container Image to Hub
|
|
# uses: docker/build-push-action@v3
|
|
# with:
|
|
# builder: ${{ steps.buildx.outputs.name }}
|
|
# context: ${{ github.workspace }}/docker/images/zrok-access/
|
|
# platforms: linux/amd64,linux/arm64
|
|
# tags: ${{ steps.tagprep_access.outputs.DOCKER_TAGS }}
|
|
# build-args: |
|
|
# ZROK_VERSION=${{ env.ZROK_VERSION }}
|
|
# push: true
|