Skip to content

Commit

Permalink
Push images to GitHub Container Registry in addition to DockerHub
Browse files Browse the repository at this point in the history
  • Loading branch information
SeanTAllen committed Aug 30, 2023
1 parent ed970e1 commit 0c31d08
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 5 deletions.
22 changes: 20 additions & 2 deletions .ci-scripts/release/build-docker-images-on-release.bash
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,30 @@ set -o nounset
# Version: "1.0.0"
VERSION="${GITHUB_REF/refs\/tags\//}"

## DockerHub

NAME="${GITHUB_REPOSITORY}"

# Build and push :VERSION tag e.g. ponylang/ponyup:0.32.1
DOCKER_TAG="${NAME}:${VERSION}"
docker build --pull -t "${DOCKER_TAG}" .
docker push "${DOCKER_TAG}"

# Build and push "release" tag e.g. ponylang/ponyup:release
DOCKER_TAG="${NAME}:release"
docker build --pull -t "${DOCKER_TAG}" .
docker push "${DOCKER_TAG}"

## GitHub Container Registry

NAME="ghcr.io/${GITHUB_REPOSITORY}"

# Build and push :VERSION tag e.g. ponylang/ponyup:0.32.1
DOCKER_TAG=${GITHUB_REPOSITORY}:"${VERSION}"
DOCKER_TAG="${NAME}:${VERSION}"
docker build --pull -t "${DOCKER_TAG}" .
docker push "${DOCKER_TAG}"

# Build and push "release" tag e.g. ponylang/ponyup:release
DOCKER_TAG=${GITHUB_REPOSITORY}:release
DOCKER_TAG="${NAME}:release"
docker build --pull -t "${DOCKER_TAG}" .
docker push "${DOCKER_TAG}"
11 changes: 10 additions & 1 deletion .ci-scripts/release/build-latest-docker-images.bash
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,16 @@ fi
# allow above so we can display nice error messages for expected unset variables
set -o nounset

## DockerHub

# Build and push "latest" tag e.g. ponylang/ponyup:latest
DOCKER_TAG="${GITHUB_REPOSITORY}:latest"
docker build --pull -t "${DOCKER_TAG}" .
docker push "${DOCKER_TAG}"

## GitHub Container Registry

# Build and push "latest" tag e.g. ponylang/ponyup:latest
DOCKER_TAG=${GITHUB_REPOSITORY}:latest
DOCKER_TAG="ghcr.io/${GITHUB_REPOSITORY}:latest"
docker build --pull -t "${DOCKER_TAG}" .
docker push "${DOCKER_TAG}"
47 changes: 46 additions & 1 deletion .github/workflows/latest-docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,55 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Docker login
- name: Login to DockerHub
run: docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
- name: Login to GitHub Container Registry
# v2.2.0
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
run: bash .ci-scripts/release/build-latest-docker-images.bash
- name: Send alert on failure
if: ${{ failure() }}
uses: zulip/github-actions-zulip/send-message@b62d5a0e48a4d984ea4fce5dd65ba691963d4db4
with:
api-key: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_API_KEY }}
email: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_EMAIL }}
organization-url: 'https://ponylang.zulipchat.com/'
to: notifications
type: stream
topic: ${{ github.repository }} scheduled job failure
content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.

prune-untagged-images:
needs:
- build-latest-docker-image

name: Prune untagged images
runs-on: ubuntu-latest
steps:
- name: Prune
# v4.1.1
uses: actions/delete-package-versions@0d39a63126868f5eefaa47169615edd3c0f61e20
with:
package-name: 'ponydoc'
package-type: 'container'
min-versions-to-keep: 1
delete-only-untagged-versions: 'true'
- name: Send alert on failure
if: ${{ failure() }}
uses: zulip/github-actions-zulip/send-message@b62d5a0e48a4d984ea4fce5dd65ba691963d4db4
with:
api-key: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_API_KEY }}
email: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_EMAIL }}
organization-url: 'https://ponylang.zulipchat.com/'
to: notifications
type: stream
topic: ${{ github.repository }} scheduled job failure
content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.
9 changes: 8 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,18 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Docker login
- name: Login to DockerHub
run: docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
- name: Login to GitHub Container Registry
# v2.2.0
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
run: bash .ci-scripts/release/build-docker-images-on-release.bash

Expand Down

0 comments on commit 0c31d08

Please sign in to comment.