From 4502713e21a4d9ec0d15b0781c6ef96d1eb9e569 Mon Sep 17 00:00:00 2001 From: tcely Date: Sat, 28 Mar 2026 18:50:24 -0400 Subject: [PATCH] fix: switch to the `docker/github-builder` reusable action --- .github/workflows/release.yaml | 98 +++++++++++++--------------------- 1 file changed, 38 insertions(+), 60 deletions(-) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 561d9433..0ca9141d 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -2,6 +2,7 @@ name: Release TubeSync env: IMAGE_NAME: tubesync + REGISTRY: ghcr.io on: release: @@ -11,14 +12,16 @@ jobs: info: runs-on: ubuntu-latest outputs: - ffmpeg-date: ${{ steps.jq.outputs.FFMPEG_DATE }} - ffmpeg-releases: ${{ steps.ffmpeg.outputs.releases }} - ffmpeg-version: ${{ steps.jq.outputs.FFMPEG_VERSION }} + IMAGE_NAME: ${{ env.IMAGE_NAME }} + REGISTRY: ${{ env.REGISTRY }} + ffmpeg-date: ${{ steps.ffmpeg.outputs.date }} + # ffmpeg-releases: ${{ steps.ffmpeg.outputs.releases }} + ffmpeg-version: ${{ steps.ffmpeg.outputs.version }} lowercase-github-actor: ${{ steps.github-actor.outputs.lowercase }} lowercase-github-repository_owner: ${{ steps.github-repository_owner.outputs.lowercase }} tag: ${{ steps.tag.outputs.tag }} ytdlp-latest-release: ${{ steps.yt-dlp.outputs.latest-release }} - ytdlp-releases: ${{ steps.yt-dlp.outputs.releases }} + # ytdlp-releases: ${{ steps.yt-dlp.outputs.releases }} steps: - uses: actions/checkout@v6 - name: Get tag @@ -40,61 +43,36 @@ jobs: - name: Retrieve yt-dlp/yt-dlp releases with GitHub CLI id: yt-dlp uses: ./.github/actions/yt-dlp - - name: Set outputs with jq - id: jq - run: | - cat >| .ffmpeg.releases.json <<'EOF' - ${{ steps.ffmpeg.outputs.releases }} - EOF - mk_delim() { local f='%s_EOF_%d_' ; printf -- "${f}" "$1" "${RANDOM}" ; } ; - open_ml_var() { local f=''\%'s<<'\%'s\n' ; printf -- "${f}" "$2" "$1" ; } ; - close_ml_var() { local f='%s\n' ; printf -- "${f}" "$1" ; } ; - { - var='FFMPEG_DATE' ; - delim="$(mk_delim "${var}")" ; - open_ml_var "${delim}" "${var}" ; - jq_arg='[foreach .[] as $release ([{}, []]; [ .[0] + {($release.commit): ([ $release.date ] + (.[0][($release.commit)] // []) ) }, [ .[1][0] // $release.commit ] ] ; .[0][(.[1][0])] ) ][-1][0]' ; - jq -r "${jq_arg}" -- .ffmpeg.releases.json ; - close_ml_var "${delim}" "${var}" ; - ffmpeg_date="$( jq -r "${jq_arg}" -- .ffmpeg.releases.json )" - - var='FFMPEG_VERSION' ; - delim="$(mk_delim "${var}")" ; - open_ml_var "${delim}" "${var}" ; - jq_arg='.[]|select(.date == $date)|.versions[]|select(startswith("N-"))' ; - jq -r --arg date "${ffmpeg_date}" "${jq_arg}" -- .ffmpeg.releases.json ; - close_ml_var "${delim}" "${var}" ; - unset -v delim jq_arg var ; - } >> "${GITHUB_OUTPUT}" - cat -v "${GITHUB_OUTPUT}" - rm -v -f .ffmpeg.releases.json - - containerise: + docker-image: + concurrency: + group: ${{ github.repository }}-${{ github.workflow }} + cancel-in-progress: false needs: ['info'] - runs-on: ubuntu-latest - steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Log into GitHub Container Registry - env: - DOCKER_REGISTRY: https://ghcr.io - DOCKER_USERNAME: ${{ github.repository_owner }} - DOCKER_TOKEN: ${{ 'meeb' == github.repository_owner && secrets.REGISTRY_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} - run: echo "${DOCKER_TOKEN}" | docker login --password-stdin --username "${DOCKER_USERNAME}" "${DOCKER_REGISTRY}" - - name: Build and push - uses: docker/build-push-action@v6 - with: - platforms: linux/amd64,linux/arm64 - push: true - tags: ghcr.io/${{ needs.info.outputs.lowercase-github-repository_owner }}/${{ env.IMAGE_NAME }}:${{ needs.info.outputs.tag }} - cache-from: | - type=registry,ref=ghcr.io/${{ needs.info.outputs.lowercase-github-repository_owner }}/${{ env.IMAGE_NAME }}:latest - type=gha - build-args: | - IMAGE_NAME=${{ env.IMAGE_NAME }} - FFMPEG_DATE=${{ needs.info.outputs.ffmpeg-date }} - FFMPEG_VERSION=${{ needs.info.outputs.ffmpeg-version }} - YTDLP_DATE=${{ fromJSON(needs.info.outputs.ytdlp-latest-release).tag.name }} + uses: docker/github-builder/.github/workflows/build.yml@v1 + permissions: + contents: read # to fetch the repository content + id-token: write # for signing attestation(s) with GitHub OIDC Token + secrets: + registry-auths: | + - registry: ${{ needs.info.outputs.REGISTRY }} + username: ${{ github.repository_owner }} + password: ${{ 'meeb' == github.repository_owner && secrets.REGISTRY_ACCESS_TOKEN || secrets.GITHUB_TOKEN }} + with: + cache: false + # cache-mode: max + meta-images: ${{ needs.info.outputs.REGISTRY }}/${{ needs.info.outputs.lowercase-github-repository_owner }}/${{ needs.info.outputs.IMAGE_NAME }} + output: image + platforms: linux/amd64,linux/arm64 + push: true + setup-qemu: false + meta-flavor: | + latest=false + meta-tags: | + type=raw,value=${{ needs.info.outputs.tag }} + type=ref,enable=false,event=tag + build-args: | + IMAGE_NAME=${{ needs.info.outputs.IMAGE_NAME }} + FFMPEG_DATE=${{ needs.info.outputs.ffmpeg-date }} + FFMPEG_VERSION=${{ needs.info.outputs.ffmpeg-version }} + YTDLP_DATE=${{ fromJSON(needs.info.outputs.ytdlp-latest-release).tag.name }}