mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-05-04 21:55:25 +00:00
44c8f24c62
Bumps the actions group with 17 updates: | Package | From | To | | --- | --- | --- | | [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) | `8.0.0` | `8.1.0` | | [actions/cache](https://github.com/actions/cache) | `5.0.4` | `5.0.5` | | [docker/login-action](https://github.com/docker/login-action) | `4.0.0` | `4.1.0` | | [docker/build-push-action](https://github.com/docker/build-push-action) | `7.0.0` | `7.1.0` | | [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.0` | `7.0.1` | | [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) | `4.0.0` | `5.0.0` | | [pnpm/action-setup](https://github.com/pnpm/action-setup) | `5.0.0` | `6.0.3` | | [actions/setup-node](https://github.com/actions/setup-node) | `6.3.0` | `6.4.0` | | [j178/prek-action](https://github.com/j178/prek-action) | `2.0.1` | `2.0.2` | | [lewagon/wait-on-check-action](https://github.com/lewagon/wait-on-check-action) | `1.5.0` | `1.7.0` | | [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) | `7.1.1` | `7.2.0` | | [shogo82148/actions-upload-release-asset](https://github.com/shogo82148/actions-upload-release-asset) | `1.10.0` | `1.10.1` | | [actions/github-script](https://github.com/actions/github-script) | `8.0.0` | `9.0.0` | | [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) | `0.5.2` | `0.5.3` | | [github/codeql-action](https://github.com/github/codeql-action) | `4.35.1` | `4.35.2` | | [crowdin/github-action](https://github.com/crowdin/github-action) | `2.16.0` | `2.16.2` | | [peakoss/anti-slop](https://github.com/peakoss/anti-slop) | `0.2.1` | `0.3.0` | Updates `astral-sh/setup-uv` from 8.0.0 to 8.1.0 - [Release notes](https://github.com/astral-sh/setup-uv/releases) - [Commits](https://github.com/astral-sh/setup-uv/compare/cec208311dfd045dd5311c1add060b2062131d57...08807647e7069bb48b6ef5acd8ec9567f424441b) Updates `actions/cache` from 5.0.4 to 5.0.5 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/668228422ae6a00e4ad889ee87cd7109ec5666a7...27d5ce7f107fe9357f9df03efb73ab90386fccae) Updates `docker/login-action` from 4.0.0 to 4.1.0 - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/b45d80f862d83dbcd57f89517bcf500b2ab88fb2...4907a6ddec9925e35a0a9e82d7399ccc52663121) Updates `docker/build-push-action` from 7.0.0 to 7.1.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/d08e5c354a6adb9ed34480a06d141179aa583294...bcafcacb16a39f128d818304e6c9c0c18556b85f) Updates `actions/upload-artifact` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a) Updates `actions/upload-pages-artifact` from 4.0.0 to 5.0.0 - [Release notes](https://github.com/actions/upload-pages-artifact/releases) - [Commits](https://github.com/actions/upload-pages-artifact/compare/7b1f4a764d45c48632c6b24a0339c27f5614fb0b...fc324d3547104276b827a68afc52ff2a11cc49c9) Updates `pnpm/action-setup` from 5.0.0 to 6.0.3 - [Release notes](https://github.com/pnpm/action-setup/releases) - [Commits](https://github.com/pnpm/action-setup/compare/fc06bc1257f339d1d5d8b3a19a8cae5388b55320...903f9c1a6ebcba6cf41d87230be49611ac97822e) Updates `actions/setup-node` from 6.3.0 to 6.4.0 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/53b83947a5a98c8d113130e565377fae1a50d02f...48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e) Updates `j178/prek-action` from 2.0.1 to 2.0.2 - [Release notes](https://github.com/j178/prek-action/releases) - [Commits](https://github.com/j178/prek-action/compare/53276d8b0d10f8b6672aa85b4588c6921d0370cc...cbc2f23eb5539cf20d82d1aabd0d0ecbcc56f4e3) Updates `lewagon/wait-on-check-action` from 1.5.0 to 1.7.0 - [Release notes](https://github.com/lewagon/wait-on-check-action/releases) - [Changelog](https://github.com/lewagon/wait-on-check-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/lewagon/wait-on-check-action/compare/74049309dfeff245fe8009a0137eacf28136cb3c...9312864dfbc9fd208e9c0417843430751c042800) Updates `release-drafter/release-drafter` from 7.1.1 to 7.2.0 - [Release notes](https://github.com/release-drafter/release-drafter/releases) - [Commits](https://github.com/release-drafter/release-drafter/compare/139054aeaa9adc52ab36ddf67437541f039b88e2...5de93583980a40bd78603b6dfdcda5b4df377b32) Updates `shogo82148/actions-upload-release-asset` from 1.10.0 to 1.10.1 - [Release notes](https://github.com/shogo82148/actions-upload-release-asset/releases) - [Commits](https://github.com/shogo82148/actions-upload-release-asset/compare/96bc1f0cb850b65efd58a6b5eaa0a69f88d38077...ee2ae851dc5d938b90075b3ef12c540abfd1ee72) Updates `actions/github-script` from 8.0.0 to 9.0.0 - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/ed597411d8f924073f98dfc5c65a23a2325f34cd...3a2844b7e9c422d3c10d287c895573f7108da1b3) Updates `zizmorcore/zizmor-action` from 0.5.2 to 0.5.3 - [Release notes](https://github.com/zizmorcore/zizmor-action/releases) - [Commits](https://github.com/zizmorcore/zizmor-action/compare/71321a20a9ded102f6e9ce5718a2fcec2c4f70d8...b1d7e1fb5de872772f31590499237e7cce841e8e) Updates `github/codeql-action` from 4.35.1 to 4.35.2 - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/c10b8064de6f491fea524254123dbe5e09572f13...95e58e9a2cdfd71adc6e0353d5c52f41a045d225) Updates `crowdin/github-action` from 2.16.0 to 2.16.2 - [Release notes](https://github.com/crowdin/github-action/releases) - [Commits](https://github.com/crowdin/github-action/compare/7ca9c452bfe9197d3bb7fa83a4d7e2b0c9ae835d...8868a33591d21088edfc398968173a3b98d51706) Updates `peakoss/anti-slop` from 0.2.1 to 0.3.0 - [Release notes](https://github.com/peakoss/anti-slop/releases) - [Changelog](https://github.com/peakoss/anti-slop/blob/main/CHANGELOG.md) - [Commits](https://github.com/peakoss/anti-slop/compare/85daca1880e9e1af197fc06ea03349daf08f4202...57858eead489d08b255fab2af45a506c2ca6eab2) --- updated-dependencies: - dependency-name: astral-sh/setup-uv dependency-version: 8.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: actions/cache dependency-version: 5.0.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: docker/login-action dependency-version: 4.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: docker/build-push-action dependency-version: 7.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: actions/upload-artifact dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: actions/upload-pages-artifact dependency-version: 5.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: pnpm/action-setup dependency-version: 6.0.3 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/setup-node dependency-version: 6.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: j178/prek-action dependency-version: 2.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: lewagon/wait-on-check-action dependency-version: 1.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: release-drafter/release-drafter dependency-version: 7.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: shogo82148/actions-upload-release-asset dependency-version: 1.10.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: actions/github-script dependency-version: 9.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: zizmorcore/zizmor-action dependency-version: 0.5.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: github/codeql-action dependency-version: 4.35.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: crowdin/github-action dependency-version: 2.16.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: peakoss/anti-slop dependency-version: 0.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
260 lines
10 KiB
YAML
260 lines
10 KiB
YAML
name: Docker Build
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
|
- 'v[0-9]+.[0-9]+.[0-9]+-beta.rc[0-9]+'
|
|
branches:
|
|
- dev
|
|
- beta
|
|
pull_request:
|
|
branches:
|
|
- dev
|
|
- main
|
|
workflow_dispatch:
|
|
concurrency:
|
|
group: docker-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
env:
|
|
REGISTRY: ghcr.io
|
|
jobs:
|
|
build-arch:
|
|
name: Build ${{ matrix.arch }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- runner: ubuntu-24.04
|
|
arch: amd64
|
|
platform: linux/amd64
|
|
- runner: ubuntu-24.04-arm
|
|
arch: arm64
|
|
platform: linux/arm64
|
|
runs-on: ${{ matrix.runner }}
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
outputs:
|
|
should-push: ${{ steps.check-push.outputs.should-push }}
|
|
push-external: ${{ steps.check-push.outputs.push-external }}
|
|
repository: ${{ steps.repo.outputs.name }}
|
|
ref-name: ${{ steps.ref.outputs.name }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
- name: Determine ref name
|
|
id: ref
|
|
run: |
|
|
ref_name="${GITHUB_HEAD_REF:-$GITHUB_REF_NAME}"
|
|
# Sanitize by replacing / with - for use in tags and cache keys
|
|
sanitized_ref="${ref_name//\//-}"
|
|
|
|
echo "ref_name=${ref_name}"
|
|
echo "sanitized_ref=${sanitized_ref}"
|
|
|
|
echo "name=${sanitized_ref}" >> $GITHUB_OUTPUT
|
|
- name: Check push permissions
|
|
id: check-push
|
|
env:
|
|
REF_NAME: ${{ steps.ref.outputs.name }}
|
|
run: |
|
|
# should-push: Should we push to GHCR?
|
|
# True for:
|
|
# 1. Pushes (tags/dev/beta) - filtered via the workflow triggers
|
|
# 2. Manual dispatch - always push to GHCR
|
|
# 3. Internal PRs where the branch name starts with 'feature-' or 'fix-'
|
|
|
|
should_push="false"
|
|
if [[ "${{ github.event_name }}" == "push" ]]; then
|
|
should_push="true"
|
|
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
should_push="true"
|
|
elif [[ "${{ github.event_name }}" == "pull_request" && "${{ github.event.pull_request.head.repo.full_name }}" == "${{ github.repository }}" ]]; then
|
|
if [[ "${REF_NAME}" == feature-* || "${REF_NAME}" == fix-* ]]; then
|
|
should_push="true"
|
|
fi
|
|
fi
|
|
|
|
echo "should-push=${should_push}"
|
|
echo "should-push=${should_push}" >> $GITHUB_OUTPUT
|
|
|
|
# push-external: Should we also push to Docker Hub and Quay.io?
|
|
# Only for main repo on dev/beta branches or version tags
|
|
push_external="false"
|
|
if [[ "${should_push}" == "true" && "${{ github.repository_owner }}" == "paperless-ngx" ]]; then
|
|
case "${REF_NAME}" in
|
|
dev|beta)
|
|
push_external="true"
|
|
;;
|
|
esac
|
|
case "${GITHUB_REF}" in
|
|
refs/tags/v*|*beta.rc*)
|
|
push_external="true"
|
|
;;
|
|
esac
|
|
fi
|
|
echo "push-external=${push_external}"
|
|
echo "push-external=${push_external}" >> $GITHUB_OUTPUT
|
|
- name: Set repository name
|
|
id: repo
|
|
run: |
|
|
repo_name="${{ github.repository }}"
|
|
repo_name="${repo_name,,}"
|
|
|
|
echo "repository=${repo_name}"
|
|
echo "name=${repo_name}" >> $GITHUB_OUTPUT
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Maximize space
|
|
run: |
|
|
sudo rm -rf /usr/share/dotnet
|
|
sudo rm -rf /opt/ghc
|
|
sudo rm -rf /usr/local/share/boost
|
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
- name: Docker metadata
|
|
id: docker-meta
|
|
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
|
|
with:
|
|
images: |
|
|
${{ env.REGISTRY }}/${{ steps.repo.outputs.name }}
|
|
tags: |
|
|
type=ref,event=branch
|
|
type=raw,value=${{ steps.ref.outputs.name }},enable=${{ github.event_name == 'pull_request' }}
|
|
type=semver,pattern={{version}}
|
|
type=semver,pattern={{major}}.{{minor}}
|
|
- name: Build and push by digest
|
|
id: build
|
|
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
|
|
with:
|
|
context: .
|
|
file: ./Dockerfile
|
|
platforms: ${{ matrix.platform }}
|
|
labels: ${{ steps.docker-meta.outputs.labels }}
|
|
build-args: |
|
|
PNGX_TAG_VERSION=${{ steps.docker-meta.outputs.version }}
|
|
outputs: type=image,name=${{ env.REGISTRY }}/${{ steps.repo.outputs.name }},push-by-digest=true,name-canonical=true,push=${{ steps.check-push.outputs.should-push }}
|
|
cache-from: |
|
|
type=registry,ref=${{ env.REGISTRY }}/${{ steps.repo.outputs.name }}/cache/app:${{ steps.ref.outputs.name }}-${{ matrix.arch }}
|
|
type=registry,ref=${{ env.REGISTRY }}/${{ steps.repo.outputs.name }}/cache/app:dev-${{ matrix.arch }}
|
|
cache-to: ${{ steps.check-push.outputs.should-push == 'true' && format('type=registry,mode=max,ref={0}/{1}/cache/app:{2}-{3}', env.REGISTRY, steps.repo.outputs.name, steps.ref.outputs.name, matrix.arch) || '' }}
|
|
- name: Export digest
|
|
if: steps.check-push.outputs.should-push == 'true'
|
|
run: |
|
|
mkdir -p /tmp/digests
|
|
digest="${{ steps.build.outputs.digest }}"
|
|
echo "digest=${digest}"
|
|
echo "${digest}" > "/tmp/digests/digest-${{ matrix.arch }}.txt"
|
|
- name: Upload digest
|
|
if: steps.check-push.outputs.should-push == 'true'
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: digests-${{ matrix.arch }}
|
|
path: /tmp/digests/digest-${{ matrix.arch }}.txt
|
|
if-no-files-found: error
|
|
retention-days: 1
|
|
archive: false
|
|
merge-and-push:
|
|
name: Merge and Push Manifest
|
|
runs-on: ubuntu-24.04
|
|
needs: build-arch
|
|
if: needs.build-arch.outputs.should-push == 'true'
|
|
environment: image-publishing
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
steps:
|
|
- name: Download digests
|
|
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
|
|
with:
|
|
path: /tmp/digests
|
|
pattern: digest-*.txt
|
|
merge-multiple: true
|
|
- name: List digests
|
|
run: |
|
|
echo "Downloaded digests:"
|
|
ls -la /tmp/digests/
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
|
with:
|
|
registry: ${{ env.REGISTRY }}
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Login to Docker Hub
|
|
if: needs.build-arch.outputs.push-external == 'true'
|
|
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Login to Quay.io
|
|
if: needs.build-arch.outputs.push-external == 'true'
|
|
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
|
|
with:
|
|
registry: quay.io
|
|
username: ${{ secrets.QUAY_USERNAME }}
|
|
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
|
- name: Docker metadata
|
|
id: docker-meta
|
|
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
|
|
with:
|
|
images: |
|
|
${{ env.REGISTRY }}/${{ needs.build-arch.outputs.repository }}
|
|
tags: |
|
|
type=ref,event=branch
|
|
type=raw,value=${{ needs.build-arch.outputs.ref-name }},enable=${{ github.event_name == 'pull_request' }}
|
|
type=semver,pattern={{version}}
|
|
type=semver,pattern={{major}}.{{minor}}
|
|
- name: Create manifest list and push
|
|
working-directory: /tmp/digests
|
|
env:
|
|
REPOSITORY: ${{ needs.build-arch.outputs.repository }}
|
|
run: |
|
|
tags=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "${DOCKER_METADATA_OUTPUT_JSON}")
|
|
|
|
digests=""
|
|
for digest_file in digest-*.txt; do
|
|
digest=$(cat "${digest_file}")
|
|
digests+="${{ env.REGISTRY }}/${REPOSITORY}@${digest} "
|
|
done
|
|
|
|
echo "Creating manifest with tags: ${tags}"
|
|
echo "From digests: ${digests}"
|
|
|
|
docker buildx imagetools create ${tags} ${digests}
|
|
- name: Inspect image
|
|
env:
|
|
FIRST_TAG: ${{ fromJSON(steps.docker-meta.outputs.json).tags[0] }}
|
|
run: |
|
|
docker buildx imagetools inspect "${FIRST_TAG}"
|
|
- name: Copy to Docker Hub
|
|
if: needs.build-arch.outputs.push-external == 'true'
|
|
env:
|
|
TAGS: ${{ steps.docker-meta.outputs.tags }}
|
|
GHCR_REPO: ${{ env.REGISTRY }}/${{ needs.build-arch.outputs.repository }}
|
|
run: |
|
|
for tag in ${TAGS}; do
|
|
dockerhub_tag="${tag/${GHCR_REPO}/docker.io/paperlessngx/paperless-ngx}"
|
|
echo "Copying ${tag} to ${dockerhub_tag}"
|
|
skopeo copy --all "docker://${tag}" "docker://${dockerhub_tag}"
|
|
done
|
|
- name: Copy to Quay.io
|
|
if: needs.build-arch.outputs.push-external == 'true'
|
|
env:
|
|
TAGS: ${{ steps.docker-meta.outputs.tags }}
|
|
GHCR_REPO: ${{ env.REGISTRY }}/${{ needs.build-arch.outputs.repository }}
|
|
run: |
|
|
for tag in ${TAGS}; do
|
|
quay_tag="${tag/${GHCR_REPO}/quay.io/paperlessngx/paperless-ngx}"
|
|
echo "Copying ${tag} to ${quay_tag}"
|
|
skopeo copy --all "docker://${tag}" "docker://${quay_tag}"
|
|
done
|