-
Notifications
You must be signed in to change notification settings - Fork 52
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Workflows: add build and push to Dockerhub workflow
Since now we are using the new docker build infra, the old image building and publishing workflow, based on dockerhub runners, is broken. Replace it with a new one, this time fully based on Github to standardize the image publishing process. `DOCKER_USERNAME` and `DOCKER_PASSWORD` of the registry must be added to repo secrets for this to work. In order to separate the flow of tagged and untagged builds, workflows are splitted: one works only on tags, the other on everyday push events. Sorry, dockerhub CI. New kid in town. Signed-off-by: Arnaldo Cesco <[email protected]>
- Loading branch information
Showing
4 changed files
with
257 additions
and
0 deletions.
There are no files selected for viewing
61 changes: 61 additions & 0 deletions
61
.github/workflows/publish-release-to-dockerhub-workflow.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# 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 | ||
matrix: | ||
app: | ||
- astarte_appengine_api | ||
- astarte_data_updater_plant | ||
- astarte_housekeeping | ||
- astarte_housekeeping_api | ||
- astarte_pairing | ||
- astarte_pairing_api | ||
- astarte_realm_management | ||
- astarte_realm_management_api | ||
- astarte_trigger_engine | ||
needs: [test-coverage, end-to-end-test] | ||
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/${{ matrix.app }} | ||
tags: | | ||
type=semver,pattern={{version}} | ||
- name: Build and push tagged Docker image | ||
id: push | ||
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 | ||
with: | ||
context: apps/${{ matrix.app }} | ||
file: Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |
74 changes: 74 additions & 0 deletions
74
.github/workflows/publish-snapshot-to-dockerhub-workflow.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
# 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 | ||
matrix: | ||
app: | ||
- astarte_appengine_api | ||
- astarte_data_updater_plant | ||
- astarte_housekeeping | ||
- astarte_housekeeping_api | ||
- astarte_pairing | ||
- astarte_pairing_api | ||
- astarte_realm_management | ||
- astarte_realm_management_api | ||
- astarte_trigger_engine | ||
needs: [test-coverage, end-to-end-test] | ||
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/${{ matrix.app }} | ||
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: apps/${{ matrix.app }} | ||
file: Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |
55 changes: 55 additions & 0 deletions
55
.github/workflows/publish-tool-release-to-dockerhub-workflow.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
# 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 of Astarte tools | ||
|
||
on: | ||
release: | ||
types: [published] | ||
|
||
jobs: | ||
push_tool_release_to_registry: | ||
name: Push Docker images of Astarte tools to Docker Hub | ||
runs-on: ubuntu-22.04 | ||
permissions: | ||
packages: write | ||
contents: read | ||
attestations: write | ||
id-token: write | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
app: | ||
- astarte_device_fleet_simulator | ||
- astarte_e2e | ||
- astarte_export | ||
- astarte_import | ||
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) of Astarte tools for Docker | ||
id: meta | ||
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | ||
with: | ||
images: | | ||
astarte/${{ matrix.app }} | ||
tags: | | ||
type=semver,pattern={{version}} | ||
- name: Build and push tagged Docker image of Astarte tools | ||
id: push | ||
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 | ||
with: | ||
context: tools/${{ matrix.app }} | ||
file: tools/${{ matrix.app }}/Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |
67 changes: 67 additions & 0 deletions
67
.github/workflows/publish-tool-snapshot-to-dockerhub-workflow.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# 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 of Astarte tools | ||
|
||
on: | ||
push: | ||
paths: | ||
- 'tools/**' | ||
- '.github/workflows/publish-tool-snapshot-to-dockerhub-workflow.yaml' | ||
branches: | ||
- 'master' | ||
- 'release-*' | ||
|
||
jobs: | ||
push_tool_snapshot_to_registry: | ||
name: Push Docker images of Astarte tools to Docker Hub | ||
runs-on: ubuntu-22.04 | ||
permissions: | ||
packages: write | ||
contents: read | ||
attestations: write | ||
id-token: write | ||
strategy: | ||
fail-fast: true | ||
matrix: | ||
app: | ||
- astarte_device_fleet_simulator | ||
- astarte_e2e | ||
- astarte_export | ||
- astarte_import | ||
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 of Astarte tools | ||
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) of Astarte tools for Docker | ||
id: meta | ||
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | ||
with: | ||
images: | | ||
astarte/${{ matrix.app }} | ||
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 of Astarte tools | ||
id: push | ||
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 | ||
with: | ||
context: tools/${{ matrix.app }} | ||
file: tools/${{ matrix.app }}/Dockerfile | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |