mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-11-27 06:33:32 +03:00
247 lines
8.4 KiB
YAML
247 lines
8.4 KiB
YAML
name: Build Canary Desktop App on Staging Branch
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
channel_override:
|
|
description: 'channel type (canary, beta, or stable)'
|
|
type: choice
|
|
default: beta
|
|
options:
|
|
- canary
|
|
- beta
|
|
- stable
|
|
push:
|
|
branches:
|
|
# 0.6.x-staging
|
|
- v[0-9]+.[0-9]+.x-staging
|
|
# 0.6.1-staging
|
|
- v[0-9]+.[0-9]+.[0-9]+-staging
|
|
paths-ignore:
|
|
- README.md
|
|
- .github/**
|
|
- '!.github/workflows/nightly-build.yml'
|
|
- '!.github/actions/build-rust/action.yml'
|
|
- '!.github/actions/setup-node/action.yml'
|
|
|
|
permissions:
|
|
actions: write
|
|
contents: write
|
|
security-events: write
|
|
|
|
concurrency:
|
|
# The concurrency group contains the workflow name and the branch name for
|
|
# pull requests or the commit hash for any other events.
|
|
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
# BUILD_TYPE => app icon, app name, etc
|
|
BUILD_TYPE: internal
|
|
# BUILD_TYPE_OVERRIDE => channel type (canary, beta, or stable) - get the channel type (the api configs)
|
|
BUILD_TYPE_OVERRIDE: ${{ github.event.inputs.channel_override || 'beta' }}
|
|
|
|
jobs:
|
|
set-build-version:
|
|
runs-on: ubuntu-latest
|
|
environment: production
|
|
outputs:
|
|
version: 0.0.0-internal.${{ steps.version.outputs.version }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: toeverything/set-build-version@latest
|
|
- id: version
|
|
run: echo ::set-output name=version::${{ env.BUILD_VERSION }}
|
|
|
|
before-make:
|
|
runs-on: ubuntu-latest
|
|
environment: production
|
|
needs:
|
|
- set-build-version
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
uses: ./.github/actions/setup-node
|
|
- name: Setup @sentry/cli
|
|
uses: ./.github/actions/setup-sentry
|
|
- name: Replace Version
|
|
run: ./scripts/set-version.sh ${{ needs.set-build-version.outputs.version }}
|
|
- name: generate-assets
|
|
working-directory: packages/frontend/electron
|
|
run: yarn generate-assets
|
|
env:
|
|
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
|
|
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
|
|
NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.NEXT_PUBLIC_SENTRY_DSN }}
|
|
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
|
|
RELEASE_VERSION: ${{ needs.set-build-version.outputs.version }}
|
|
|
|
- name: Upload core artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: core
|
|
path: packages/frontend/electron/resources/web-static
|
|
|
|
make-distribution:
|
|
environment: production
|
|
strategy:
|
|
# all combinations: macos-latest x64, macos-latest arm64, ubuntu-latest x64
|
|
# For windows, we need a separate approach
|
|
matrix:
|
|
spec:
|
|
- runner: macos-latest
|
|
platform: darwin
|
|
arch: x64
|
|
target: x86_64-apple-darwin
|
|
- runner: macos-latest
|
|
platform: darwin
|
|
arch: arm64
|
|
target: aarch64-apple-darwin
|
|
- runner: ubuntu-latest
|
|
platform: linux
|
|
arch: x64
|
|
target: x86_64-unknown-linux-gnu
|
|
- runner: windows-latest
|
|
platform: win32
|
|
arch: x64
|
|
target: x86_64-pc-windows-msvc
|
|
runs-on: ${{ matrix.spec.runner }}
|
|
needs:
|
|
- before-make
|
|
- set-build-version
|
|
env:
|
|
APPLE_ID: ${{ secrets.APPLE_ID }}
|
|
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
|
|
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
|
SKIP_GENERATE_ASSETS: 1
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup Node.js
|
|
timeout-minutes: 10
|
|
uses: ./.github/actions/setup-node
|
|
with:
|
|
extra-flags: workspaces focus @affine/electron @affine/monorepo
|
|
hard-link-nm: false
|
|
build-plugins: false
|
|
nmHoistingLimits: workspaces
|
|
- name: Setup Maker
|
|
timeout-minutes: 10
|
|
uses: ./.github/actions/setup-maker
|
|
- name: Build AFFiNE native
|
|
uses: ./.github/actions/build-rust
|
|
with:
|
|
target: ${{ matrix.spec.target }}
|
|
package: '@affine/native'
|
|
nx_token: ${{ secrets.NX_CLOUD_ACCESS_TOKEN }}
|
|
- name: Replace Version
|
|
run: ./scripts/set-version.sh ${{ needs.set-build-version.outputs.version }}
|
|
- uses: actions/download-artifact@v3
|
|
with:
|
|
name: core
|
|
path: packages/frontend/electron/resources/web-static
|
|
|
|
- name: Build Plugins
|
|
run: yarn run build:plugins
|
|
|
|
- name: Build Desktop Layers
|
|
run: yarn workspace @affine/electron build
|
|
|
|
- name: Signing By Apple Developer ID
|
|
if: ${{ matrix.spec.platform == 'darwin' }}
|
|
uses: apple-actions/import-codesign-certs@v2
|
|
with:
|
|
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
|
|
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
|
|
|
|
- name: make
|
|
run: yarn workspace @affine/electron make --platform=${{ matrix.spec.platform }} --arch=${{ matrix.spec.arch }}
|
|
env:
|
|
SKIP_PLUGIN_BUILD: 1
|
|
SKIP_WEB_BUILD: 1
|
|
HOIST_NODE_MODULES: 1
|
|
|
|
- name: Save artifacts (mac)
|
|
if: ${{ matrix.spec.platform == 'darwin' }}
|
|
run: |
|
|
mkdir -p builds
|
|
mv packages/frontend/electron/out/*/make/*.dmg ./builds/affine-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.dmg
|
|
mv packages/frontend/electron/out/*/make/zip/darwin/${{ matrix.spec.arch }}/*.zip ./builds/affine-${{ env.BUILD_TYPE }}-macos-${{ matrix.spec.arch }}.zip
|
|
- name: Save artifacts (windows)
|
|
if: ${{ matrix.spec.platform == 'win32' }}
|
|
run: |
|
|
mkdir -p builds
|
|
mv packages/frontend/electron/out/*/make/zip/win32/x64/AFFiNE*-win32-x64-*.zip ./builds/affine-${{ env.BUILD_TYPE }}-windows-x64.zip
|
|
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.exe ./builds/affine-${{ env.BUILD_TYPE }}-windows-x64.exe
|
|
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.msi ./builds/affine-${{ env.BUILD_TYPE }}-windows-x64.msi
|
|
mv packages/frontend/electron/out/*/make/squirrel.windows/x64/*.nupkg ./builds/affine-${{ env.BUILD_TYPE }}-windows-x64.nupkg
|
|
|
|
- name: Save artifacts (linux)
|
|
if: ${{ matrix.spec.platform == 'linux' }}
|
|
run: |
|
|
mkdir -p builds
|
|
mv packages/frontend/electron/out/*/make/zip/linux/x64/*.zip ./builds/affine-${{ env.BUILD_TYPE }}-linux-x64.zip
|
|
mv packages/frontend/electron/out/*/make/AppImage/x64/*.AppImage ./builds/affine-${{ env.BUILD_TYPE }}-linux-x64.AppImage
|
|
|
|
- name: Upload Artifact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: affine-${{ matrix.spec.platform }}-${{ matrix.spec.arch }}-builds
|
|
path: builds
|
|
|
|
release:
|
|
needs:
|
|
- make-distribution
|
|
- set-build-version
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Download Artifacts (macos-x64)
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: affine-darwin-x64-builds
|
|
path: ./
|
|
- name: Download Artifacts (macos-arm64)
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: affine-darwin-arm64-builds
|
|
path: ./
|
|
- name: Download Artifacts (windows-x64)
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: affine-win32-x64-builds
|
|
path: ./
|
|
- name: Download Artifacts (linux-x64)
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: affine-linux-x64-builds
|
|
path: ./
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- name: Generate Release yml
|
|
run: |
|
|
node ./packages/frontend/electron/scripts/generate-yml.js
|
|
env:
|
|
RELEASE_VERSION: ${{ needs.set-build-version.outputs.version }}
|
|
- name: Create Release Draft
|
|
uses: softprops/action-gh-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
with:
|
|
repository: 'toeverything/AFFiNE-Releases'
|
|
name: ${{ needs.set-build-version.outputs.version }}
|
|
tag_name: ${{ needs.set-build-version.outputs.version }}
|
|
prerelease: true
|
|
files: |
|
|
./VERSION
|
|
./*.zip
|
|
./*.dmg
|
|
./*.exe
|
|
./*.nupkg
|
|
./RELEASES
|
|
./*.AppImage
|
|
./*.apk
|
|
./*.yml
|