checkpoint #143
Workflow file for this run
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
name: Docker build and push | |
on: [push] | |
jobs: | |
production: | |
# Testing with nektos/act: | |
# $ act --rm -j production --container-architecture linux/amd64 --pull=false --bind --action-offline-mode push | |
# | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Build context" | |
run: | | |
echo "env.ACT is ${{ env.ACT }}" | |
echo "ref is ${{ github.ref }}" | |
echo "ref_type is ${{ github.ref_type }}" | |
echo "head.sha is ${{ github.event.pull_request.head.sha }}" | |
- name: "Checkout repository" | |
if: ${{ !env.ACT }} # skip during local actions testing | |
id: checkout_repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: "Lowercase repository name for docker build" | |
id: lowercase-repository-name | |
run: echo "REPO_NAME=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV | |
- name: "Set tags for main/master" | |
id: set_tags | |
run: | | |
echo "VERSION_TAG=$(./git-version-gen | grep -v UNKNOWN)" >> ${GITHUB_ENV} | |
echo "TEST_TAG=$(git rev-parse HEAD)-test" >> ${GITHUB_ENV} | |
echo "SHA_TAG=$(git rev-parse HEAD)" >> ${GITHUB_ENV} | |
echo "${GITHUB_ENV}:" | |
cat ${GITHUB_ENV} | |
shell: bash | |
- name: "Docker metadata" | |
if: ${{ !env.ACT }} # skip during local actions testing | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: | | |
ghcr.io/${{ env.REPO_NAME }} | |
tags: | | |
# For merge to master branch, tag example: 'master' | |
type=ref,event=branch | |
# For PR event, tag example: 'pr-3' | |
type=ref,event=pr | |
# For PR event or merge event, tag example: 1.0.1.12-5667 | |
type=raw,value=${{ env.VERSION_TAG }} | |
# For PR event or merge, tag example: 566769e04d2436cf5f42ae4f46092c7dff6e668e | |
type=raw,value=${{ env.SHA_TAG }} | |
# For push to semver tag, tag example: 1.0.2 | |
# This also sets 'latest'. | |
type=semver,pattern={{version}} | |
# For push to semver tag, tag example: 1.0 | |
type=semver,pattern={{major}}.{{minor}} | |
- name: "Docker login" | |
if: ${{ !env.ACT }} # skip during local actions testing | |
id: docker_login | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Build the final Docker image" | |
if: ${{ !env.ACT }} # skip during local actions testing | |
id: docker_build | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
target: production | |
tags: ${{ steps.meta.outputs.tags }} | |
- name: "Build the final Docker image in nektos/act" | |
# The docker/build-push-action does actions/checkout, and that can't be | |
# turned off. So instead, we run the docker build command directly here | |
# assuming that 'act' was run with the '--bind' arg. | |
if: ${{ env.ACT }} # only during local actions testing | |
id: docker_build_nektos_act | |
run: /usr/bin/docker buildx build --tag ghcr.io/${{ env.REPO_NAME }}:act --target production . | |
debug: | |
runs-on: ubuntu-latest | |
steps: | |
- name: "Build context" | |
run: | | |
echo "ref is ${{ github.ref }}" | |
echo "ref_type is ${{ github.ref_type }}" | |
- name: "Checkout repository" | |
id: checkout_repo | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: "Lowercase repository name for docker build" | |
id: lowercase-repository-name | |
run: echo "REPO_NAME=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV | |
- name: "Set tags for main/master" | |
id: set_tags | |
run: | | |
echo "VERSION_TAG=$(./git-version-gen | grep -v UNKNOWN)" >> ${GITHUB_ENV} | |
echo "TEST_TAG=$(git rev-parse HEAD)-test" >> ${GITHUB_ENV} | |
echo "SHA_TAG=$(git rev-parse HEAD)" >> ${GITHUB_ENV} | |
echo "${GITHUB_ENV}:" | |
cat ${GITHUB_ENV} | |
shell: bash | |
- name: "Docker metadata" | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: | | |
ghcr.io/${{ env.REPO_NAME }}-debug | |
tags: | | |
# For merge to master branch, tag example: 'master' | |
type=ref,event=branch | |
# For PR event, tag example: 'pr-3' | |
type=ref,event=pr | |
# For PR event or merge event, tag example: 1.0.1.12-5667 | |
type=raw,value=${{ env.VERSION_TAG }} | |
# For PR event or merge, tag example: 566769e04d2436cf5f42ae4f46092c7dff6e668e | |
type=raw,value=${{ env.SHA_TAG }} | |
# For push to semver tag, tag example: 1.0.2 | |
# This also sets 'latest'. | |
type=semver,pattern={{version}} | |
# For push to semver tag, tag example: 1.0 | |
type=semver,pattern={{major}}.{{minor}} | |
- name: "Docker login" | |
id: docker_login | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: "Build the debug Docker image" | |
id: docker_build | |
uses: docker/build-push-action@v3 | |
with: | |
push: true | |
target: debug | |
tags: ${{ steps.meta.outputs.tags }} | |
create_release: | |
needs: production | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-tags: true | |
fetch-depth: 0 | |
- name: Repair tag | |
run: git fetch -f origin ${{ github.ref }}:${{ github.ref }} | |
- name: Verify that the tag is annotated | |
run: if test x$(git for-each-ref ${{ github.ref }} | awk '{print $2}') = xtag; then /bin/true; else echo "\"${{ github.ref }}\" does not look like an annotated tag!"; /bin/false; fi | |
- name: Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
#prerelease: true | |
generate_release_notes: true | |