From 483aff4822db1b82d4548d864eac66e5e4dfe2cd Mon Sep 17 00:00:00 2001 From: engigu Date: Fri, 12 Sep 2025 19:38:38 +0800 Subject: [PATCH] feat: add docker image push to ghcr --- .github/workflows/release.yml | 28 ++++++++++++++++++++++++---- .goreleaser.yaml | 16 ++++++++++++++-- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f604c98..0b4aa05 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,11 +5,18 @@ on: # run only against tags tags: - '*' -# workflow_dispatch: # + workflow_dispatch: + inputs: + version: + description: 'Release version tag (e.g., v1.2.3).' + required: true + type: string + # release: + # types: [published] permissions: contents: write - # packages: write + packages: write # issues: write jobs: @@ -31,13 +38,20 @@ jobs: - name: Set up QEMU uses: docker/setup-qemu-action@v3 - - name: Docker Login + - name: Docker Login to Docker Hub uses: docker/login-action@v3 with: registry: docker.io username: ${{ secrets.DOCKER_USER }} password: ${{ secrets.DOCKER_PASSWD }} + - name: Docker Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.REPO_GITHUB_TOKEN }} + - uses: actions/setup-go@main with: go-version: '>=1.20.2' @@ -61,7 +75,12 @@ jobs: - name: Get Release version id: get_version - run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then + echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT + else + echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT + fi - name: Update Local Version File run: echo ${{ steps.get_version.outputs.VERSION }} > .release_version @@ -76,6 +95,7 @@ jobs: args: release --clean env: GITHUB_TOKEN: ${{ secrets.REPO_GITHUB_TOKEN }} + GORELEASER_CURRENT_TAG: ${{ steps.get_version.outputs.VERSION }} # Your GoReleaser Pro key, if you are using the 'goreleaser-pro' # distribution: # GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml index d7134f3..e38c5e7 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -22,7 +22,9 @@ builds: binary: "{{ .Env.CUSTOM_PROJ_NAME }}" dockers: - - image_templates: [ "docker.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-amd64" ] + - image_templates: + - "docker.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-amd64" + - "ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-amd64" dockerfile: Dockerfile extra_files: - LICENSE @@ -38,7 +40,9 @@ dockers: - --label=org.opencontainers.image.created={{ time "2006-01-02T15:04:05Z07:00" }} - --label=org.opencontainers.image.revision={{ .FullCommit }} - --label=org.opencontainers.image.licenses=MIT - - image_templates: [ "docker.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-arm64v8" ] + - image_templates: + - "docker.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-arm64v8" + - "ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-arm64v8" goarch: arm64 dockerfile: Dockerfile extra_files: @@ -64,6 +68,14 @@ docker_manifests: image_templates: - docker.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-amd64 - docker.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-arm64v8 + - name_template: ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }} + image_templates: + - ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-amd64 + - ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-arm64v8 + - name_template: ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:latest + image_templates: + - ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-amd64 + - ghcr.io/engigu/{{ .Env.DOCKER_IMAGE_NAME }}:{{ .Version }}-arm64v8 archives: - format: tar.gz