Release #1870
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
on: | |
schedule: | |
- cron: '0 9 * * *' | |
workflow_dispatch: | |
inputs: | |
web: | |
description: 'Release Web?' | |
required: true | |
type: boolean | |
default: false | |
desktop: | |
description: 'Release Desktop?' | |
required: true | |
type: boolean | |
default: false | |
mobile: | |
description: 'Release Mobile?' | |
required: true | |
type: boolean | |
default: false | |
permissions: | |
contents: write | |
pull-requests: write | |
actions: write | |
id-token: write | |
packages: write | |
security-events: write | |
attestations: write | |
jobs: | |
prepare: | |
name: Prepare | |
runs-on: ubuntu-latest | |
outputs: | |
APP_VERSION: ${{ steps.prepare.outputs.APP_VERSION }} | |
GIT_SHORT_HASH: ${{ steps.prepare.outputs.GIT_SHORT_HASH }} | |
BUILD_TYPE: ${{ steps.prepare.outputs.BUILD_TYPE }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Prepare Release | |
id: prepare | |
uses: ./.github/actions/prepare-release | |
cloud: | |
name: Release Cloud | |
if: ${{ inputs.web || github.event_name != 'workflow_dispatch' }} | |
needs: | |
- prepare | |
uses: ./.github/workflows/release-cloud.yml | |
secrets: inherit | |
with: | |
build-type: ${{ needs.prepare.outputs.BUILD_TYPE }} | |
app-version: ${{ needs.prepare.outputs.APP_VERSION }} | |
git-short-hash: ${{ needs.prepare.outputs.GIT_SHORT_HASH }} | |
image: | |
name: Release Docker Image | |
runs-on: ubuntu-latest | |
needs: | |
- prepare | |
- cloud | |
steps: | |
- uses: trstringer/manual-approval@v1 | |
if: ${{ needs.prepare.outputs.BUILD_TYPE == 'stable' }} | |
name: Wait for approval | |
with: | |
secret: ${{ secrets.GITHUB_TOKEN }} | |
approvers: forehalo,fengmk2 | |
fail-on-denial: true | |
issue-title: Please confirm to release docker image | |
issue-body: | | |
Env: ${{ needs.prepare.outputs.BUILD_TYPE }} | |
Candidate: ghcr.io/toeverything/affine:${{ needs.prepare.outputs.BUILD_TYPE }}-${{ needs.prepare.outputs.GIT_SHORT_HASH }} | |
Tag: ghcr.io/toeverything/affine:${{ needs.prepare.outputs.BUILD_TYPE }} | |
> comment with "approve", "approved", "lgtm", "yes" to approve | |
> comment with "deny", "deny", "no" to deny | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
logout: false | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Tag Image | |
run: | | |
docker buildx imagetools create --tag ghcr.io/toeverything/affine:${{needs.prepare.outputs.BUILD_TYPE}} ghcr.io/toeverything/affine:${{needs.prepare.outputs.BUILD_TYPE}}-${{needs.prepare.outputs.GIT_SHORT_HASH}} | |
docker buildx imagetools create --tag ghcr.io/toeverything/affine:${{needs.prepare.outputs.APP_VERSION}} ghcr.io/toeverything/affine:${{needs.prepare.outputs.BUILD_TYPE}}-${{needs.prepare.outputs.GIT_SHORT_HASH}} | |
desktop: | |
name: Release Desktop | |
if: ${{ inputs.desktop || github.event_name != 'workflow_dispatch' }} | |
needs: | |
- prepare | |
uses: ./.github/workflows/release-desktop.yml | |
secrets: inherit | |
with: | |
build-type: ${{ needs.prepare.outputs.BUILD_TYPE }} | |
app-version: ${{ needs.prepare.outputs.APP_VERSION }} | |
git-short-hash: ${{ needs.prepare.outputs.GIT_SHORT_HASH }} | |
mobile: | |
name: Release Mobile | |
if: ${{ inputs.mobile }} | |
needs: | |
- prepare | |
uses: ./.github/workflows/release-mobile.yml | |
secrets: inherit | |
with: | |
build-type: ${{ needs.prepare.outputs.BUILD_TYPE }} | |
app-version: ${{ needs.prepare.outputs.APP_VERSION }} | |
git-short-hash: ${{ needs.prepare.outputs.GIT_SHORT_HASH }} |