Skip to content

Commit

Permalink
Workflows: add build and push to Dockerhub workflow
Browse files Browse the repository at this point in the history
Standardize the image publishing workflows to use Github
rather than Dockerhub CI.

For all details, see astarte-platform/astarte#960.

Signed-off-by: Arnaldo Cesco <[email protected]>
  • Loading branch information
Annopaolo committed Jul 2, 2024
1 parent df9326a commit bf71b1c
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 0 deletions.
50 changes: 50 additions & 0 deletions .github/workflows/publish-release-to-dockerhub-workflow.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# GitHub recommends pinning actions to a commit SHA.
# To get a newer version, you will need to update the SHA.
# You can also reference a tag or branch, but the action may change without warning.

name: Publish Docker images

on:
release:
types: [published]

jobs:
push_release_to_registry:
name: Push Docker images to Docker Hub
runs-on: ubuntu-22.04
permissions:
packages: write
contents: read
attestations: write
id-token: write
strategy:
fail-fast: true
needs: [test-coverage, test-dialyzer]
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Log in to Docker Hub
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: |
astarte/vernemq
tags: |
type=semver,pattern={{version}}
- name: Build and push tagged Docker image
id: push
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
with:
context: .
file: Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
63 changes: 63 additions & 0 deletions .github/workflows/publish-snapshot-to-dockerhub-workflow.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# GitHub recommends pinning actions to a commit SHA.
# To get a newer version, you will need to update the SHA.
# You can also reference a tag or branch, but the action may change without warning.

name: Publish snapshot Docker images

on:
push:
paths:
- 'apps/**'
- '.github/workflows/publish-snapshot-to-dockerhub-workflow.yaml'
- 'Dockerfile'
branches:
- 'master'
- 'release-*'

jobs:
push_snapshot_to_registry:
name: Push Docker images to Docker Hub
runs-on: ubuntu-22.04
permissions:
packages: write
contents: read
attestations: write
id-token: write
strategy:
fail-fast: true
needs: [test-coverage, test-dialyzer]
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Log in to Docker Hub
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Compute tag name for snapshot images
id: compute-tag
run: |
export TAG="$(echo ${{ github.ref }} | sed 's,refs/heads/,,' | sed 's/master/snapshot/g' | sed 's/release-\(.*\)/\1-snapshot/g' )"
echo "TAG=$TAG" >> "$GITHUB_OUTPUT"
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: |
astarte/vernemq
tags: |
# TODO we probably want something smarter, but the 'pattern' type runs only on tags at the moment
type=raw,value=${{ steps.compute-tag.outputs.TAG }}
- name: Build and push tagged Docker image
id: push
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
with:
context: .
file: Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

0 comments on commit bf71b1c

Please sign in to comment.