mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-13 10:15:21 +00:00
ci: publish Docker images and the PyPI package from the release workflow
backend-release creates the GitHub release with GITHUB_TOKEN, and GitHub never starts workflows from events that token produces, so the `release: published` triggers on the Docker and PyPI publish workflows only fired for releases made by hand. 0.18.0 got no Docker images for that reason, and 0.19.0 reached PyPI by a manual run. backend-release now calls both publish workflows after creating the release, passing the version it tagged. Both workflows gain a `workflow_call` trigger with a `version` input and read the tag from it or from the release event, so a release created by hand still publishes through the release trigger. The Docker Hub credentials are passed by name; the PyPI job authenticates through trusted publishing, which matches the called workflow's filename and environment, so the publisher configuration is unchanged. Permissions in backend-release move from the workflow to the jobs: the release job writes contents; the Docker call writes contents (the compose file attached to the release) and packages; the PyPI call gets an OIDC token.
This commit is contained in:
1 parent
55239fc345
commit
d983febe43
3 files changed
+84
-15
No files matched your search
@@ -1,8 +1,31 @@
|
||||
name: Build and push DocsGPT Docker image
|
||||
|
||||
# Runs for a release created by hand (the release event), or called by the
|
||||
# backend-release workflow with the version it just tagged: GitHub never starts
|
||||
# workflows from events GITHUB_TOKEN produces, so a bot-created release does not
|
||||
# fire the release trigger on its own.
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
workflow_call:
|
||||
inputs:
|
||||
version:
|
||||
description: Release tag to build and push (the images are tagged with it)
|
||||
type: string
|
||||
required: true
|
||||
secrets:
|
||||
DOCKER_USERNAME:
|
||||
required: true
|
||||
DOCKER_PASSWORD:
|
||||
required: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
# The tag being published: passed in by the caller, or the release's own.
|
||||
RELEASE_TAG: ${{ inputs.version || github.event.release.tag_name }}
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -58,7 +81,7 @@ jobs:
|
||||
ghcr.io/${{ github.repository_owner }}/docsgpt
|
||||
labels: |
|
||||
org.opencontainers.image.title=DocsGPT${{ matrix.variant }}
|
||||
org.opencontainers.image.version=${{ github.event.release.tag_name }}
|
||||
org.opencontainers.image.version=${{ env.RELEASE_TAG }}
|
||||
|
||||
- name: Build and push platform-specific images
|
||||
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
||||
@@ -71,8 +94,8 @@ jobs:
|
||||
EXTRAS=${{ matrix.variant == '-docling' && 'docling' || '' }}
|
||||
INSTALL_TESSERACT=${{ matrix.variant == '-docling' && 'true' || 'false' }}
|
||||
tags: |
|
||||
${{ env.DOCKERHUB_NAMESPACE }}/docsgpt:${{ github.event.release.tag_name }}${{ matrix.variant }}-${{ matrix.platform == 'linux/arm64' && 'arm64' || 'amd64' }}
|
||||
ghcr.io/${{ github.repository_owner }}/docsgpt:${{ github.event.release.tag_name }}${{ matrix.variant }}-${{ matrix.platform == 'linux/arm64' && 'arm64' || 'amd64' }}
|
||||
${{ env.DOCKERHUB_NAMESPACE }}/docsgpt:${{ env.RELEASE_TAG }}${{ matrix.variant }}-${{ matrix.platform == 'linux/arm64' && 'arm64' || 'amd64' }}
|
||||
ghcr.io/${{ github.repository_owner }}/docsgpt:${{ env.RELEASE_TAG }}${{ matrix.variant }}-${{ matrix.platform == 'linux/arm64' && 'arm64' || 'amd64' }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
provenance: false
|
||||
sbom: false
|
||||
@@ -118,7 +141,7 @@ jobs:
|
||||
|
||||
- name: Create and push multi-arch manifests
|
||||
env:
|
||||
TAG: ${{ github.event.release.tag_name }}${{ matrix.variant }}
|
||||
TAG: ${{ env.RELEASE_TAG }}${{ matrix.variant }}
|
||||
LATEST: latest${{ matrix.variant }}
|
||||
run: |
|
||||
set -e
|
||||
@@ -145,6 +168,6 @@ jobs:
|
||||
- name: Attach the standalone compose file to the release
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
TAG: ${{ github.event.release.tag_name }}
|
||||
TAG: ${{ env.RELEASE_TAG }}
|
||||
run: |
|
||||
gh release upload "$TAG" deployment/docker-compose-standalone.yaml --clobber
|
||||
Reference in new issue
Block a user