diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1d8c14e7..2a85086a 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -52,6 +52,28 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- + - name: Prepare tags to publish + id: prep + run: | + # Always publish to latest. + TAGS="${{ secrets.DOCKER_USERNAME }}/archivebox:latest,archivebox/archivebox:latest" + if [[ $GITHUB_REF == refs/tags/* ]]; then + VERSION="${GITHUB_REF#refs/tags/}" + MINOR=${VERSION%.*} + MAJOR=${MINOR%.*} + TAGS="$TAGS,${{ secrets.DOCKER_USERNAME }}/archivebox:$VERSION,archivebox/archivebox:$VERSION" + TAGS="$TAGS,${{ secrets.DOCKER_USERNAME }}/archivebox:$MINOR,archivebox/archivebox:$MINOR" + TAGS="$TAGS,${{ secrets.DOCKER_USERNAME }}/archivebox:$MAJOR,archivebox/archivebox:$MAJOR" + else + VERSION=$GITHUB_SHA + TAGS="$TAGS,${{ secrets.DOCKER_USERNAME }}/archivebox:$VERSION,archivebox/archivebox:$VERSION" + fi + + echo ::set-output name=tags::${TAGS} + env: + GITHUB_REF: ${{ github.ref }} + GITHUB_SHA: ${{ github.sha }} + - name: Build and push id: docker_build uses: docker/build-push-action@v2 @@ -60,14 +82,10 @@ jobs: file: ./Dockerfile builder: ${{ steps.buildx.outputs.name }} push: true - tags: | - ${{ secrets.DOCKER_USERNAME }}/archivebox:latest - ${{ secrets.DOCKER_USERNAME }}/archivebox:${{ github.sha }} - archivebox/archivebox:latest - archivebox/archivebox:${{ github.sha }} + tags: ${{ steps.prep.outputs.tags }} cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache platforms: linux/amd64,linux/arm64,linux/arm/v7 - + - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }}