Github Action to, based on git tags, generate convenience Docker tags.
In other words, this action suggests you what extra tags to create for Docker Hub upon new version-tag creation. For example, given existing tags: v1.0.0
, v1.0.1
, v1.1.0
, and new tag being added: v1.0.2
this action would recommend the creation of v1.0
, but not :latest
(as a tag with higher version exists), nor :v1
(as a newer tag with the same major version exists).
See action.yml
on:
push:
tags: [ '*' ]
…
steps:
- uses: actions/checkout@v1
- uses: meeDamian/tag-suggestions@1.0
id: tags
- name: Print all recommended versions
run: |
echo "latest: ${{ steps.tags.outputs.latest }}"
echo "major: ${{ steps.tags.outputs.major }}"
echo "minor: ${{ steps.tags.outputs.minor }}"
- name: Tag minor version, if recommended
run: |
# convert to lowercase
REPO="${GITHUB_REPOSITORY,,}"
# extract tag from `$GITHUB_REF`. Only works if workflow triggered by tag push.
VERSION="${GITHUB_REF#refs/tags/}"
if [ -n "${{ steps.tags.outputs.minor }}" ]; then
NEW_TAG="$REPO:${{ steps.tags.outputs.minor }}"
docker tag "$REPO:$VERSION" "$NEW_TAG"
docker push "$NEW_TAG"
fi
name | required | description |
---|---|---|
tag |
sometimes | Git tag to base suggestions on. If not provided, an extraction from ${GITHUB_REF} is attempted (AKA not needed on git tag push). |
For a tag: vX.Y.Z
name | value | description |
---|---|---|
latest |
latest |
Only set if :latest tag creation is recommended. |
major |
vX |
Only set if major tag creation is recommended. |
minor |
vX.Y |
Only set if minor tag creation is recommended. |
As of Sep 2019, Github Actions doesn't natively understand shortened tags in uses:
directive.
To go around that and not do what git-tag-manual
calls "The insane thing", I'm creating permanent git tags for each release in a semver format prefixed with v
, as well as maintain branches with shortened tags. You can see the exact process here.
Ex. 1.0
branch always points to the newest v1.0.x
tag.
In practice:
# For exact version
steps:
uses: meeDamian/tag-suggestions@v1.0.1
Or
# For newest minor version 1.0
steps:
uses: meeDamian/tag-suggestions@1.0
Note: It's likely branches will be deprecated once Github Actions fixes its limitation.
The scripts and documentation in this project are released under the MIT License