Skip to content

Add semantic versioning to Build Action #167

Add semantic versioning to Build Action

Add semantic versioning to Build Action #167

Workflow file for this run

name: Build Image
on: [push, workflow_dispatch]
env:
ENDPOINT: "thecaptain989/lidarr-flac2mp3"
jobs:
build:
name: Build Job
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # Needed for semantic_version to work correctly
- name: Incrementing version
id: semantic_version
uses: paulhatch/semantic-version@v5.4.0
with:
search_commit_body: true
- name: Set Vars
run: |
echo "ENDPOINT=${ENDPOINT}" >> $GITHUB_STEP_SUMMARY
# **** If the mod needs to be versioned, set the versioning logic below. Otherwise leave as is. ****
MOD_VERSION="${{ steps.semantic_version.outputs.version }}+${GITHUB_SHA:0:7}"
echo "MOD_VERSION=${MOD_VERSION}" >> $GITHUB_ENV
echo "MOD_VERSION=${MOD_VERSION}" >> $GITHUB_STEP_SUMMARY
- name: Build image
run: |
docker buildx build --no-cache --build-arg MOD_VERSION="${MOD_VERSION}" --tag ${ENDPOINT}:${{ github.sha }} .
- name: Tag image
run: |
if [[ "${{ github.ref_name }}" == 'master' ]]; then
IMAGETAG=${ENDPOINT}:latest
else
IMAGETAG="${ENDPOINT}:${{ github.ref_name }}"
fi
IMAGEVERTAG="${ENDPOINT}:${{ steps.semantic_version.outputs.version_tag }}"
echo "IMAGETAG=${IMAGETAG}" >> $GITHUB_ENV
echo "IMAGEVERTAG=${IMAGEVERTAG}" >> $GITHUB_ENV
docker tag ${ENDPOINT}:${{ github.sha }} "${IMAGETAG}"
docker tag ${ENDPOINT}:${{ github.sha }} "${IMAGEVERTAG}"
docker tag ${ENDPOINT}:${{ github.sha }} ghcr.io/${ENDPOINT}:${{ github.sha }}
docker tag ${ENDPOINT}:${{ github.sha }} ghcr.io/"${IMAGEVERTAG}"
docker tag ${ENDPOINT}:${{ github.sha }} ghcr.io/"${IMAGETAG}"
- name: Credential check
run: |
echo "CR_USER=${{ secrets.CR_USER }}" >> $GITHUB_ENV
echo "CR_PAT=${{ secrets.CR_PAT }}" >> $GITHUB_ENV
echo "DOCKERUSER=${{ secrets.DOCKERUSER }}" >> $GITHUB_ENV
echo "DOCKERPASS=${{ secrets.DOCKERPASS }}" >> $GITHUB_ENV
if [[ "${{ secrets.CR_USER }}" == "" && "${{ secrets.CR_PAT }}" == "" && "${{ secrets.DOCKERUSER }}" == "" && "${{ secrets.DOCKERPASS }}" == "" ]]; then
echo "::error::Push credential secrets missing."
echo "::error::You must set either CR_USER & CR_PAT or DOCKERUSER & DOCKERPASS as secrets in your repo settings."
echo "::error::See https://github.com/linuxserver/docker-mods/blob/master/README.md for more information/instructions."
exit 1
fi
- name: Login to GitHub Container Registry
if: ${{ env.CR_USER && env.CR_PAT }}
run: |
echo "${{ secrets.CR_PAT }}" | docker login ghcr.io -u ${{ secrets.CR_USER }} --password-stdin
- name: Push tags to GitHub Container Registry
if: ${{ env.CR_USER && env.CR_PAT }}
run: |
docker push ghcr.io/${ENDPOINT}:${{ github.sha }}
docker push ghcr.io/"${IMAGETAG}"
docker push ghcr.io/"${IMAGEVERTAG}"
echo "Pushed the following images/tags to GHCR:" >> $GITHUB_STEP_SUMMARY
echo "ghcr.io/${ENDPOINT}:${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
echo "ghcr.io/${IMAGETAG}" >> $GITHUB_STEP_SUMMARY
echo "ghcr.io/${IMAGEVERTAG}" >> $GITHUB_STEP_SUMMARY
- name: Login to DockerHub
if: ${{ env.DOCKERUSER && env.DOCKERPASS }}
run: |
echo "${{ secrets.DOCKERPASS }}" | docker login -u "${{ secrets.DOCKERUSER }}" --password-stdin
- name: Push tags to DockerHub
if: ${{ env.DOCKERUSER && env.DOCKERPASS }}
run: |
docker push ${ENDPOINT}:${{ github.sha }}
docker push "${IMAGEVERTAG}"
docker push "${IMAGETAG}"
echo "Pushed the following images/tags to Docker Hub:" >> $GITHUB_STEP_SUMMARY
echo "${ENDPOINT}:${{ github.sha }}" >> $GITHUB_STEP_SUMMARY
echo "${IMAGETAG}" >> $GITHUB_STEP_SUMMARY
echo "${IMAGEVERTAG}" >> $GITHUB_STEP_SUMMARY