diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml new file mode 100644 index 0000000..a7dd9ad --- /dev/null +++ b/.github/workflows/docker-build-push.yml @@ -0,0 +1,48 @@ +--- +name: Docker + +on: + push: + pull_request: + schedule: + - cron: '0 0 * * 0' + workflow_dispatch: + +permissions: {} + +jobs: + build: + if: ${{ ! startsWith(github.ref, 'refs/tags/') }} + runs-on: ubuntu-latest + steps: + - name: Set IMAGE + run: echo "IMAGE=${GITHUB_REPOSITORY#*/docker-}" >> "${GITHUB_ENV}" + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 + - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 + - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 + id: meta + with: + images: ${{ github.repository_owner }}/${{ env.IMAGE }} + tags: | + type=schedule + type=ref,event=branch + type=ref,event=pr + type=sha + - name: Test the Docker image + working-directory: ${{ env.IMAGE }} + run: docker compose -f docker-compose.test.yml run sut + - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 + if: github.ref == 'refs/heads/main' + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 + with: + context: ${{ env.IMAGE }} + platforms: linux/amd64,linux/arm64 + pull: true + push: ${{ github.ref == 'refs/heads/main' }} + sbom: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/dockerrelease.yml b/.github/workflows/docker-release.yml similarity index 100% rename from .github/workflows/dockerrelease.yml rename to .github/workflows/docker-release.yml diff --git a/.github/workflows/dockerimage.yml b/.github/workflows/trigger-release.yml similarity index 54% rename from .github/workflows/dockerimage.yml rename to .github/workflows/trigger-release.yml index 73ebaee..f30b40e 100644 --- a/.github/workflows/dockerimage.yml +++ b/.github/workflows/trigger-release.yml @@ -1,11 +1,10 @@ --- -name: Docker +name: Trigger Release on: push: - pull_request: schedule: - - cron: '0 0 * * 0' + - cron: '0 0 * * *' workflow_dispatch: permissions: @@ -18,41 +17,12 @@ jobs: steps: - name: Set IMAGE run: echo "IMAGE=${GITHUB_REPOSITORY#*/docker-}" >> "${GITHUB_ENV}" - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - - uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0 - - uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0 - - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1 - id: meta - with: - images: ${{ github.repository_owner }}/${{ env.IMAGE }} - tags: | - type=schedule - type=ref,event=branch - type=ref,event=pr - type=sha - - uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0 - if: github.ref == 'refs/heads/main' - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0 - with: - context: ${{ env.IMAGE }} - platforms: linux/amd64,linux/arm64 - pull: true - push: ${{ github.ref == 'refs/heads/main' }} - sbom: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - - name: Test the Docker image - working-directory: ${{ env.IMAGE }} - run: docker compose -f docker-compose.test.yml run sut - name: Set VERSION if: github.ref == 'refs/heads/main' run: | # shellcheck disable=SC2086 VERSION="$(\grep ${IMAGE}/Dockerfile -e '^FROM' | \head -n 1 | \sed -e 's/@.*$//; s/^.*://;')" - if [[ "${VERSION}" =~ ^[0-9]+\.[0-9]+$ ]] ; then + if [[ "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] ; then \echo "VERSION=${VERSION}" >> "${GITHUB_ENV}" fi - name: Check if release already exists @@ -79,7 +49,7 @@ jobs: } }) result-encoding: string - - name: Trigger release + - name: Trigger Release if: env.VERSION != '' && steps.check-release.outputs.result == 'undefined' uses: actions/create-release@0cb9c9b65d5d1901c1f53e5e66eaf4afd303e70e # v1.1.4 env: diff --git a/.github/workflows/update-prs.yml b/.github/workflows/update-prs.yml index 669baae..2082e34 100644 --- a/.github/workflows/update-prs.yml +++ b/.github/workflows/update-prs.yml @@ -4,7 +4,7 @@ name: Update PRs on: push: schedule: - - cron: '0 0 * * 0' + - cron: '0 * * * *' workflow_dispatch: permissions: