name: Nagios Build # This workflow is triggered on pushes to the repository. # Taken from tutorial # https://github.com/gitschooldude/hello # https://www.youtube.com/watch?v=-xIXFxuZCMI # https://github.com/marketplace/actions/docker-setup-buildx # https://github.com/marketplace/actions/docker-login # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions/58034787 on: [push] jobs: nagios-build: runs-on: ubuntu-latest steps: - name: Print all github.* variables id: step_one_print_all run: | echo "github.action : ${{ github.action }}" echo "github.action_path : ${{ github.action_path }}" echo "github.actor : ${{ github.actor }}" echo "github.base_ref : ${{ github.base_ref }}" echo 'github.event : ${{ toJson(github.event) }}' echo "github.event_name : ${{ github.event_name }}" echo "github.event_path : ${{ github.event_path }}" echo "github.head_ref : ${{ github.head_ref }}" echo "github.job : ${{ github.job }}" echo "github.ref : ${{ github.ref }}" echo "github.repository : ${{ github.repository }}" echo "github.repository_owner : ${{ github.repository_owner }}" echo "github.run_id : ${{ github.run_id }}" echo "github.run_number : ${{ github.run_number }}" echo "github.sha : ${{ github.sha }}" echo "github.token : ${{ github.token }}" echo "github.workflow : ${{ github.workflow }}" echo "github.workspace : ${{ github.workspace }}" echo "my docker tag: ${{ env.action_mytag }}" - name: Set the value of a the Docker tag for branches other than master id: step_two_branches_all if: ${{ (startsWith( github.ref, 'refs/heads') == true) && (github.ref != 'refs/heads/master') }} run: | echo "action_mytag=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV - name: Set the value of the Docker tag for git tags id: step_set_docker_tag_for_git_tags if: ${{ startsWith( github.ref, 'refs/tags') == true}} run: | echo "action_mytag=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Set the value of the Docker tag for master branch id: step_branch_master if: ${{ github.ref == 'refs/heads/master' }} run: | echo "action_mytag=latest" >> $GITHUB_ENV - name: Print the Docker tag value which will be used id: step_print_docker_tag run: | echo "My docker tag will be: ${{ env.action_mytag }}" - name: Login to DockerHub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Checkout uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Available platforms run: echo ${{ steps.buildx.outputs.platforms }} - name: Cache Docker layers for this Git branch uses: actions/cache@v4 id: cache with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.ref }} restore-keys: | ${{ runner.os }}-buildx-${{ github.ref }} - name: Docker Buildx (build and cache) run: | docker buildx build \ --progress plain \ --cache-from "type=local,src=/tmp/.buildx-cache" \ --cache-to "type=local,dest=/tmp/.buildx-cache" \ --platform linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 \ --label "gitCommit=${{ github.sha }}" \ --label "org.opencontainers.image.revision=${{ github.sha }}" \ --tag ${GITHUB_ACTOR}/nagios:${{ env.action_mytag }} \ --output "type=image,push=false" . - name: 'Docker Buildx: Push to Dockerhub' run: | echo "== This branch is : ${GITHUB_REF}" echo "Will push image ${GITHUB_ACTOR}/nagios:${{ env.action_mytag }} to DockerHub" docker buildx build \ --progress plain \ --cache-from "type=local,src=/tmp/.buildx-cache" \ --platform linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 \ --label "gitCommit=${{ github.sha }}" \ --label "org.opencontainers.image.revision=${{ github.sha }}" \ --tag ${GITHUB_ACTOR}/nagios:${{ env.action_mytag }} \ --output "type=image,push=true" . - name: 'Docker Buildx: Push to GitHub Container Registry' run: | echo "== This branch is : ${GITHUB_REF}" echo "Will push image ghcr.io/${GITHUB_ACTOR}/nagios:${{ env.action_mytag }} to GitHub Container Registry" docker buildx build \ --progress plain \ --cache-from "type=local,src=/tmp/.buildx-cache" \ --platform linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 \ --label "gitCommit=${{ github.sha }}" \ --label "org.opencontainers.image.revision=${{ github.sha }}" \ --tag ghcr.io/${GITHUB_ACTOR}/nagios:${{ env.action_mytag }} \ --output "type=image,push=true" . - name: Inspect image run: | docker buildx imagetools inspect ${GITHUB_ACTOR}/nagios:${{ env.action_mytag }}