### Application Level Image CI ### Dave Conroy name: 'build' on: push: paths: - '**' - '!README.md' jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Prepare id: prep run: | DOCKER_IMAGE=${GITHUB_REPOSITORY/docker-/} set -x if [[ $GITHUB_REF == refs/heads/* ]]; then if [[ $GITHUB_REF == refs/heads/*/* ]] ; then BRANCH="${DOCKER_IMAGE}:$(echo $GITHUB_REF | sed "s|refs/heads/||g" | sed "s|/|-|g")" else BRANCH=${GITHUB_REF#refs/heads/} fi case ${BRANCH} in "main" | "master" ) BRANCHTAG="${DOCKER_IMAGE}:latest" ;; "develop" ) BRANCHTAG="${DOCKER_IMAGE}:develop" ;; * ) if [ -n "${{ secrets.LATEST }}" ] ; then if [ "${BRANCHTAG}" = "${{ secrets.LATEST }}" ]; then BRANCHTAG="${DOCKER_IMAGE}:${BRANCH},${DOCKER_IMAGE}:${BRANCH}-latest,${DOCKER_IMAGE}:latest" else BRANCHTAG="${DOCKER_IMAGE}:${BRANCH},${DOCKER_IMAGE}:${BRANCH}-latest" fi else BRANCHTAG="${DOCKER_IMAGE}:${BRANCH},${DOCKER_IMAGE}:${BRANCH}-latest" fi ;; esac fi if [[ $GITHUB_REF == refs/tags/* ]]; then GITTAG="${DOCKER_IMAGE}:$(echo $GITHUB_REF | sed 's|refs/tags/||g')" fi if [ -n "${BRANCHTAG}" ] && [ -n "${GITTAG}" ]; then TAGS=${BRANCHTAG},${GITTAG} else TAGS="${BRANCHTAG}${GITTAG}" fi echo ::set-output name=tags::${TAGS} echo ::set-output name=docker_image::${DOCKER_IMAGE} - name: Set up QEMU uses: docker/setup-qemu-action@v2 with: platforms: all - name: Set up Docker Buildx id: buildx uses: docker/setup-buildx-action@v2 - name: Login to DockerHub if: github.event_name != 'pull_request' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Label id: Label run: | if [ -f "Dockerfile" ] ; then sed -i "/FROM .*/a LABEL tiredofit.image.git_repository=\"https://github.com/${GITHUB_REPOSITORY}\"" Dockerfile sed -i "/FROM .*/a LABEL tiredofit.image.git_commit=\"${GITHUB_SHA}\"" Dockerfile sed -i "/FROM .*/a LABEL tiredofit.image.git_committed_by=\"${GITHUB_ACTOR}\"" Dockerfile sed -i "/FROM .*/a LABEL tiredofit.image.image_build_date=\"$(date +'%Y-%m-%d %H:%M:%S')\"" Dockerfile if [ -f "CHANGELOG.md" ] ; then sed -i "/FROM .*/a LABEL tiredofit.image.git_changelog_version=\"$(head -n1 ./CHANGELOG.md | awk '{print $2}')\"" Dockerfile mkdir -p install/assets/.changelogs ; cp CHANGELOG.md install/assets/.changelogs/${GITHUB_REPOSITORY/\//_}.md fi if [[ $GITHUB_REF == refs/tags/* ]]; then sed -i "/FROM .*/a LABEL tiredofit.image.git_tag=\"${GITHUB_REF#refs/tags/v}\"" Dockerfile fi if [[ $GITHUB_REF == refs/heads/* ]]; then sed -i "/FROM .*/a LABEL tiredofit.image.git_branch=\"${GITHUB_REF#refs/heads/}\"" Dockerfile fi fi - name: Build uses: docker/build-push-action@v3 with: builder: ${{ steps.buildx.outputs.name }} context: . file: ./Dockerfile platforms: linux/amd64 push: true tags: ${{ steps.prep.outputs.tags }}