From d1f37d7f95aa52196979fa0481fe9d490b6a1939 Mon Sep 17 00:00:00 2001 From: Chris Date: Mon, 13 Nov 2023 10:00:16 +0100 Subject: [PATCH] updated CI --- .github/workflows/build-docker.yml | 111 +++++++++++------------------ 1 file changed, 40 insertions(+), 71 deletions(-) diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index f5ee8ae..778e7e5 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -1,90 +1,59 @@ -name: opentrashmail ci +name: ci on: push: - branches: [ master ] + branches: + - "**" + tags: + - "v*.*.*" pull_request: - branches: [ master ] - -env: - IMAGE_NAME: $(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') + branches: + - "main" jobs: docker: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 - - - name: Prepare - id: prep - run: | - DOCKER_IMAGE="ghcr.io/${{ env.IMAGE_NAME }}" - DOCKER_IMAGE_HUB="docker.io/${{ env.IMAGE_NAME }}" - VERSION=latest - SHORTREF=${GITHUB_SHA::8} - - # If this is git tag, use the tag name as a docker tag - if [[ $GITHUB_REF == refs/tags/* ]]; then - VERSION=${GITHUB_REF#refs/tags/v} - fi - TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${SHORTREF}" - TAGS_HUB="${DOCKER_IMAGE_HUB}:${VERSION},${DOCKER_IMAGE_HUB}:${SHORTREF}" - - # If the VERSION looks like a version number, assume that - # this is the most recent version of the image and also - # tag it 'latest'. - if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then - TAGS="$TAGS,${DOCKER_IMAGE}:latest" - TAGS_HUB="$TAGS_HUB,${DOCKER_IMAGE_HUB}:latest" - fi - - # Set output parameters. - echo ::set-output name=tags::${TAGS} - echo ::set-output name=docker_image::${DOCKER_IMAGE} - - echo ::set-output name=tags_hub::${TAGS_HUB} - echo ::set-output name=docker_image_hub::${DOCKER_IMAGE_HUB} - + uses: actions/checkout@v4 + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + # list of Docker images to use as base name for tags + images: | + hascheksolutions/opentrashmail + ghcr.io/hascheksolutions/opentrashmail + # generate Docker tags based on the following events/attributes + tags: | + type=schedule + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha - name: Set up QEMU - uses: docker/setup-qemu-action@master - with: - platforms: all - + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@master - - - name: Log in to Github Packages - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - + uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub - uses: docker/login-action@v2 + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 with: - registry: docker.io username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build and push to GHCR - uses: docker/build-push-action@v2 + - name: Login to GHCR + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 with: - builder: ${{ steps.buildx.outputs.name }} - context: . - file: docker/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.prep.outputs.tags }} - - - name: Build and push to Docker Hub - uses: docker/build-push-action@v2 + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 with: - builder: ${{ steps.buildx.outputs.name }} context: . - file: docker/Dockerfile - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.prep.outputs.tags_hub }} \ No newline at end of file + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file