Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatically build and push image to Docker Hub when new tag is pushed #1386

Merged
merged 2 commits into from Apr 16, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
23 changes: 23 additions & 0 deletions .github/workflows/build-image.yml
@@ -0,0 +1,23 @@
name: Build image and publish to Docker Hub

on:
push:
tags:
- 'v-[0-9]{4}-[0-9]{2}-[0-9]{1,2}.[0-9]+'
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would think it should be \. instead of . but the semver example in the docs says otherwise,

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it looks like they're patterns, not regexes, so the guidelines are probably correct.


jobs:

deploy:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2

- name: Login to Docker Hub
run: echo ${{ secrets.DOCKER_HUB_PASSWORD }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin

- name: Build and push image
# Github stores the current tag in an enviroment variable (GITHUB_REF) in the format /refs/tags/TAG_NAME.
# Using shell parameter expansion, we extract the TAG_NAME.
run: ./docker/push.sh 'prod' "${GITHUB_REF/refs\/tags\//}"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I opened a ticket about improving push.sh to make it fail properly if any intermediate process fails (e.g. don't push if the build fails). Maybe we could include that here? (although I guess the push will fail also if the build fails, because the tagged version won't exist)