Skip to content

Commit

Permalink
chore(ci): GHA - Container git SHA and DATETIME tags
Browse files Browse the repository at this point in the history
Add git commit SHA and date time to all container tag variations in all build
& push flows

Container registries list images by date pushed so it can be quicker to
find the latest image using this sorting versus looking for and comparing date
strings within the tag.

However due to the use of non-idempotent commands like `apk update` in
`Dockerfile`'s the same git SHA could result in different container
images (with different container image SHA).
  • Loading branch information
kskewes-sf committed Mar 6, 2022
1 parent 22a578a commit d75942b
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ jobs:
run: echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/}
- name: Build
run: ./gradlew build --stacktrace ${{ steps.extract_repo_name.outputs.REPO }}-web:installDist"
- name: Get date
id: get_date
run: echo ::set-output name=DATETIME::$(date --utc +'%Y%m%d%H%M')
- name: Build and publish slim container image
uses: docker/build-push-action@v2
with:
Expand All @@ -35,7 +38,9 @@ jobs:
push: true
tags: |
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:spinnaker-${{ env.GITHUB_REF_NAME }}-latest-unvalidated"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:spinnaker-${{ env.GITHUB_REF_NAME }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-latest-unvalidated"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:spinnaker-${{ env.GITHUB_REF_NAME }}-latest-unvalidated-slim"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:spinnaker-${{ env.GITHUB_REF_NAME }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-latest-unvalidated-slim"
- name: Build and publish ubuntu container image
uses: docker/build-push-action@v2
with:
Expand All @@ -44,3 +49,4 @@ jobs:
push: true
tags: |
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:spinnaker-${{ env.GITHUB_REF_NAME }}-latest-unvalidated-ubuntu"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:spinnaker-${{ env.GITHUB_REF_NAME }}-${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-latest-unvalidated-ubuntu"
8 changes: 6 additions & 2 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,24 @@ jobs:
run: echo ::set-output name=REPO::${GITHUB_REPOSITORY##*/}
- name: Build
run: "./gradlew build ${{ steps.extract_repo_name.outputs.REPO }}-web:installDist"
- name: Get date
id: get_date
run: echo ::set-output name=DATETIME::$(date --utc +'%Y%m%d%H%M')
- name: Build slim container image
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile.slim
tags: |
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:latest"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-latest"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:latest-slim"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-slim"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-latest-slim"
- name: Build ubuntu container image
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile.ubuntu
tags: |
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:latest-ubuntu"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-ubuntu"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ github.sha }}-${{ steps.get_date.outputs.DATETIME }}-latest-ubuntu"
5 changes: 5 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ jobs:
GAR_JSON_KEY: ${{ secrets.GAR_JSON_KEY }}
run: |
./gradlew --info publish
- name: Get date
id: get_date
run: echo ::set-output name=DATETIME::$(date --utc +'%Y%m%d%H%M')
- name: Login to GAR
# Only run this on repositories in the 'spinnaker' org, not on forks.
if: startsWith(github.repository, 'spinnaker/')
Expand All @@ -70,6 +73,7 @@ jobs:
tags: |
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-slim"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-$${{ github.sha }}-{{ steps.get_date.outputs.DATETIME }}-slim"
- name: Build and publish ubuntu container image
# Only run this on repositories in the 'spinnaker' org, not on forks.
if: startsWith(github.repository, 'spinnaker/')
Expand All @@ -80,6 +84,7 @@ jobs:
push: true
tags: |
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-ubuntu"
"${{ env.CONTAINER_REGISTRY }}/${{ steps.extract_repo_name.outputs.REPO }}:${{ steps.release_info.outputs.RELEASE_VERSION }}-$${{ github.sha }}-{{ steps.get_date.outputs.DATETIME }}-ubuntu"
- name: Create release
if: steps.release_info.outputs.SKIP_RELEASE == 'false'
uses: actions/create-release@v1
Expand Down

0 comments on commit d75942b

Please sign in to comment.