AFFiNE/.github/workflows/nightly-build.yml

241 lines
8.2 KiB
YAML
Raw Normal View History

2023-05-10 07:03:22 +03:00
name: Build Canary Desktop App on Staging Branch
on:
2023-09-08 02:51:20 +03:00
workflow_dispatch:
inputs:
channel_override:
description: 'channel type (canary, beta, or stable)'
type: choice
default: beta
options:
- canary
- beta
- stable
2023-05-10 07:03:22 +03:00
push:
branches:
2023-06-14 19:43:28 +03:00
# 0.6.x-staging
2023-05-10 07:03:22 +03:00
- v[0-9]+.[0-9]+.x-staging
2023-06-14 19:43:28 +03:00
# 0.6.1-staging
- v[0-9]+.[0-9]+.[0-9]+-staging
2023-05-10 07:03:22 +03:00
paths-ignore:
- README.md
- .github/**
- '!.github/workflows/nightly-build.yml'
2023-06-30 11:47:07 +03:00
- '!.github/actions/build-rust/action.yml'
2023-06-17 12:49:07 +03:00
- '!.github/actions/setup-node/action.yml'
2023-05-10 07:03:22 +03:00
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' }}
2023-05-10 07:03:22 +03:00
jobs:
2023-05-15 19:07:51 +03:00
set-build-version:
runs-on: ubuntu-latest
outputs:
2023-07-14 08:21:43 +03:00
version: 0.0.0-internal.${{ steps.version.outputs.version }}
2023-05-15 19:07:51 +03:00
steps:
- uses: actions/checkout@v4
2023-05-15 19:07:51 +03:00
- uses: toeverything/set-build-version@latest
- id: version
run: echo ::set-output name=version::${{ env.BUILD_VERSION }}
2023-05-10 07:03:22 +03:00
before-make:
runs-on: ubuntu-latest
2023-05-15 19:07:51 +03:00
needs:
- set-build-version
2023-05-10 07:03:22 +03:00
steps:
- uses: actions/checkout@v4
2023-05-10 07:03:22 +03:00
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Setup @sentry/cli
uses: ./.github/actions/setup-sentry
2023-05-11 06:23:29 +03:00
- name: Replace Version
2023-05-15 19:07:51 +03:00
run: ./scripts/set-version.sh ${{ needs.set-build-version.outputs.version }}
2023-05-10 07:03:22 +03:00
- name: generate-assets
working-directory: packages/frontend/electron
2023-05-10 07:03:22 +03:00
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 }}
2023-05-10 07:03:22 +03:00
2023-07-18 19:53:10 +03:00
- name: Upload core artifact
2023-05-10 07:03:22 +03:00
uses: actions/upload-artifact@v3
with:
2023-07-18 19:53:10 +03:00
name: core
path: packages/frontend/electron/resources/web-static
2023-05-10 07:03:22 +03:00
make-distribution:
strategy:
2023-08-24 07:34:36 +03:00
# all combinations: macos-latest x64, macos-latest arm64, ubuntu-latest x64
# For windows, we need a separate approach
2023-05-10 07:03:22 +03:00
matrix:
spec:
- runner: macos-latest-xlarge
2023-08-24 07:34:36 +03:00
platform: darwin
arch: x64
target: x86_64-apple-darwin
- runner: macos-latest-xlarge
2023-08-24 07:34:36 +03:00
platform: darwin
arch: arm64
target: aarch64-apple-darwin
- runner: ubuntu-latest
platform: linux
arch: x64
target: x86_64-unknown-linux-gnu
2023-08-24 10:26:49 +03:00
- runner: windows-latest
platform: win32
arch: x64
target: x86_64-pc-windows-msvc
2023-08-24 09:52:13 +03:00
runs-on: ${{ matrix.spec.runner }}
needs:
- before-make
- set-build-version
2023-05-10 07:03:22 +03:00
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
2023-05-10 07:03:22 +03:00
- name: Setup Node.js
timeout-minutes: 10
2023-05-10 07:03:22 +03:00
uses: ./.github/actions/setup-node
with:
extra-flags: workspaces focus @affine/electron @affine/monorepo
hard-link-nm: false
build-plugins: false
nmHoistingLimits: workspaces
- 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 }}
2023-05-10 07:03:22 +03:00
- uses: actions/download-artifact@v3
with:
2023-07-25 21:41:32 +03:00
name: core
path: packages/frontend/electron/resources/web-static
2023-06-30 12:06:44 +03:00
- name: Build Plugins
run: yarn run build:plugins
- name: Build Desktop Layers
2023-07-01 11:34:30 +03:00
run: yarn workspace @affine/electron build
2023-05-10 07:03:22 +03:00
- name: Signing By Apple Developer ID
if: ${{ matrix.spec.platform == 'darwin' }}
2023-05-10 07:03:22 +03:00
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
2023-05-10 07:03:22 +03:00
- name: Save artifacts (mac)
if: ${{ matrix.spec.platform == 'darwin' }}
2023-05-10 07:03:22 +03:00
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
2023-05-10 07:03:22 +03:00
- 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
2023-05-10 07:03:22 +03:00
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: affine-${{ matrix.spec.platform }}-${{ matrix.spec.arch }}-builds
path: builds
release:
2023-05-15 19:07:51 +03:00
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@v4
with:
node-version: 18
- name: Generate Release yml
run: |
node ./packages/frontend/electron/scripts/generate-yml.js
env:
2023-05-15 19:07:51 +03:00
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'
2023-05-15 19:07:51 +03:00
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