diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..de53193 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +/*.hcl linguist-detectable=false diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index ca78ad6..d7d31ba 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@v4 - name: Prepare - run: echo "TAG=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV + run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -45,20 +45,26 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v6 + name: Docker meta + id: meta + uses: docker/metadata-action@v5 with: - context: '.' - file: './Dockerfile' - platforms: 'linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7' + labels: | + org.opencontainers.image.title=vaultwarden-backup + org.opencontainers.image.description=Backup vaultwarden SQLite3/PostgreSQL/MySQL/MariaDB database by rclone + org.opencontainers.image.authors=ttionya + org.opencontainers.image.version=${{ env.VERSION }} + - + name: Build and push + uses: docker/bake-action@v5 + env: + VERSION: ${{ env.VERSION }} + with: + files: | + ./docker-bake.hcl + ${{ steps.meta.outputs.bake-file-labels }} + targets: image-stable push: true - tags: | - ttionya/vaultwarden-backup:latest - ttionya/vaultwarden-backup:${{ env.TAG }} - ttionya/bitwardenrs-backup:latest - ttionya/bitwardenrs-backup:${{ env.TAG }} - ghcr.io/ttionya/vaultwarden-backup:latest - ghcr.io/ttionya/vaultwarden-backup:${{ env.TAG }} publish-beta: name: Docker Publish Beta @@ -73,7 +79,7 @@ jobs: uses: actions/checkout@v4 - name: Prepare - run: echo "TAG=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV + run: echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -87,15 +93,26 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v6 + name: Docker meta + id: meta + uses: docker/metadata-action@v5 with: - context: '.' - file: './Dockerfile' - platforms: 'linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7' + labels: | + org.opencontainers.image.title=vaultwarden-backup + org.opencontainers.image.description=Backup vaultwarden SQLite3/PostgreSQL/MySQL/MariaDB database by rclone + org.opencontainers.image.authors=ttionya + org.opencontainers.image.version=${{ env.VERSION }} + - + name: Build and push + uses: docker/bake-action@v5 + env: + VERSION: ${{ env.VERSION }} + with: + files: | + ./docker-bake.hcl + ${{ steps.meta.outputs.bake-file-labels }} + targets: image-beta push: true - tags: | - ttionya/vaultwarden-backup:${{ env.TAG }} publish-schedule: name: Docker Publish Schedule @@ -121,7 +138,7 @@ jobs: name: Prepare run: | TAG=${{ steps.tag.outputs.release }} - echo "TAG=${TAG#v}" >> $GITHUB_ENV + echo "VERSION=${TAG#v}" >> $GITHUB_ENV - name: Set up QEMU uses: docker/setup-qemu-action@v3 @@ -142,17 +159,23 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v6 + name: Docker meta + id: meta + uses: docker/metadata-action@v5 with: - context: '.' - file: './Dockerfile' - platforms: 'linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7' + labels: | + org.opencontainers.image.title=vaultwarden-backup + org.opencontainers.image.description=Backup vaultwarden SQLite3/PostgreSQL/MySQL/MariaDB database by rclone + org.opencontainers.image.authors=ttionya + org.opencontainers.image.version=${{ env.VERSION }} + - + name: Build and push + uses: docker/bake-action@v5 + env: + VERSION: ${{ env.VERSION }} + with: + files: | + ./docker-bake.hcl + ${{ steps.meta.outputs.bake-file-labels }} + targets: image-schedule push: true - tags: | - ttionya/vaultwarden-backup:latest - ttionya/vaultwarden-backup:${{ env.TAG }} - ttionya/bitwardenrs-backup:latest - ttionya/bitwardenrs-backup:${{ env.TAG }} - ghcr.io/ttionya/vaultwarden-backup:latest - ghcr.io/ttionya/vaultwarden-backup:${{ env.TAG }} diff --git a/.github/workflows/docker-test.yml b/.github/workflows/docker-test.yml index ce8637e..5af6aa3 100644 --- a/.github/workflows/docker-test.yml +++ b/.github/workflows/docker-test.yml @@ -37,22 +37,18 @@ jobs: driver-opts: network=host - name: Build base image - uses: docker/build-push-action@v6 + uses: docker/bake-action@v5 with: - context: '.' - file: './Dockerfile' - platforms: 'linux/amd64,linux/arm64,linux/arm/v6,linux/arm/v7' + files: ./docker-bake.hcl + targets: image-test-base push: true - tags: localhost:5000/base:dev - name: Build test image - uses: docker/build-push-action@v6 + uses: docker/bake-action@v5 with: - context: '.' - file: './tests/Dockerfile' - build-contexts: base=docker-image://localhost:5000/base:dev + files: ./docker-bake.hcl + targets: image-test load: true - tags: ttionya/vaultwarden-backup:test - name: Test run: | diff --git a/Dockerfile b/Dockerfile index 09f6008..84ada54 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,6 @@ -FROM rclone/rclone:1.68.2 +# syntax=docker/dockerfile:1 -LABEL "repository"="https://github.com/ttionya/vaultwarden-backup" \ - "homepage"="https://github.com/ttionya/vaultwarden-backup" \ - "maintainer"="ttionya " +FROM rclone/rclone:1.68.2 ARG USER_NAME="backuptool" ARG USER_ID="1100" diff --git a/docker-bake.hcl b/docker-bake.hcl new file mode 100644 index 0000000..4f19b3b --- /dev/null +++ b/docker-bake.hcl @@ -0,0 +1,58 @@ +variable "VERSION" { + default = "latest" +} + +target "docker-metadata-action" {} + +target "_common" { + inherits = ["docker-metadata-action"] + context = "." + dockerfile = "Dockerfile" + platforms = [ + "linux/amd64", + "linux/arm64", + "linux/arm/v6", + "linux/arm/v7" + ] + tags = [ + "ttionya/vaultwarden-backup:latest", + "ttionya/vaultwarden-backup:${VERSION}", + "ttionya/bitwardenrs-backup:latest", + "ttionya/bitwardenrs-backup:${VERSION}", + "ghcr.io/ttionya/vaultwarden-backup:latest", + "ghcr.io/ttionya/vaultwarden-backup:${VERSION}" + ] +} + +target "image-stable" { + inherits = ["_common"] +} + +target "image-schedule" { + inherits = ["image-stable"] +} + +target "image-beta" { + inherits = ["_common"] + tags = [ + "ttionya/vaultwarden-backup:${VERSION}" + ] +} + +target "image-test-base" { + inherits = ["_common"] + tags = [ + "localhost:5000/base:dev" + ] +} + +target "image-test" { + inherits = ["_common"] + dockerfile = "./tests/Dockerfile" + contexts = { + base = "docker-image://localhost:5000/base:dev" + } + tags = [ + "ttionya/vaultwarden-backup:test" + ] +}