From 3b8ebd5a2b0eecccee2e5db6414db13dc59dbc5e Mon Sep 17 00:00:00 2001 From: Erik Sundell Date: Thu, 15 Feb 2024 23:18:10 +0100 Subject: [PATCH] Publish both TigerVNC and TurboVNC image to quay.io --- .github/workflows/release.yaml | 72 ++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index e2f8019a..f3cb803e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -57,3 +57,75 @@ jobs: - name: publish to pypi uses: pypa/gh-action-pypi-publish@release/v1 if: startsWith(github.ref, 'refs/tags/') + + publish-images: + runs-on: ubuntu-22.04 + + strategy: + fail-fast: false + matrix: + include: + - vncserver: tigervnc + - vncserver: turbovnc + + steps: + - uses: actions/checkout@v4 + + - name: Set up QEMU (for docker buildx) + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx (for multi-arch builds) + uses: docker/setup-buildx-action@v3 + + - name: Make decisions to push etc. + id: decisions + run: | + if [ "${{ startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main') }}" = "true" ]; then + echo "push=true" >> $GITHUB_OUTPUT + else + echo "push=false" >> $GITHUB_OUTPUT + fi + + # We provide image tags with -tigervnc and -turbovnc suffixes to allow + # for an explicit choice, but also ship with a default choice of + # TigerVNC. + if [ "${{ matrix.vncserver == 'tigervnc') ]; then + echo "suffix=,-${{ matrix.vncserver }}" >> $GITHUB_OUTPUT + else + echo "suffix=-${{ matrix.vncserver }}" >> $GITHUB_OUTPUT + fi + + # For builds triggered by a git tag 1.2.3, we calculate image tags like: + # [{prefix}:1.2.3, {prefix}:1.2, {prefix}:1, {prefix}:latest] + # + # More details at + # https://github.com/jupyterhub/action-major-minor-tag-calculator. + # + - name: Get image tags + id: tags + uses: jupyterhub/action-major-minor-tag-calculator@v3 + with: + githubToken: ${{ secrets.GITHUB_TOKEN }} + prefix: "quay.io/jupyterhub/jupyter-remote-desktop-proxy:" + suffix: ${{ steps.decisions.outputs.suffix }} + branchRegex: ^\w[\w-.]*$ + defaultTag: quay.io/jupyterhub/jupyter-remote-desktop-proxy:noref + + - name: Login to container registry + # Credentials to Quay.io was setup by... + # 1. Creating a [Robot Account](https://quay.io/organization/jupyterhub?tab=robots) + # 2. Giving it push permissions to the image repository + # 3. Adding Robot Account credentials as workflow environment secrets + if: steps.decisions.outputs.push == 'true' + run: | + docker login -u "${{ secrets.QUAY_USERNAME }}" -p "${{ secrets.QUAY_PASSWORD }}" quay.io + + - name: Build and push image + uses: docker/build-push-action@v5 + with: + build-args: | + vncserver=${{ matrix.vncserver }} + context: . + platforms: linux/amd64,linux/arm64 + push: ${{ steps.decisions.outputs.push }} + tags: ${{ join(fromJson(steps.tags.outputs.tags)) }}