Workflow file for this run
This file contains 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: Sillot CI/CD | |
# https://github.com/actions/runner-images/blob/main/images/ | |
on: | |
push: | |
tags: | |
- "v*" | |
jobs: | |
create_release: | |
name: Create Release | |
runs-on: ubuntu-latest | |
outputs: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
release_version: ${{ steps.release_info.outputs.release_version }} | |
version: ${{ steps.version.outputs.value }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
- run: pip install PyGithub | |
- name: Extract Sillot version from package.json | |
uses: sergeysova/jq-action@v2 | |
id: version | |
with: | |
cmd: "jq .version app/package.json -r" | |
- name: Extract SiYuan version from package.json | |
uses: sergeysova/jq-action@v2 | |
id: syv | |
with: | |
cmd: "jq .syv app/package.json -r" | |
- id: thislatestR | |
uses: pozetroninc/github-action-get-latest-release@master | |
with: | |
# owner: Hi-Windom | |
# repo: Sillot | |
repository: ${{ github.repository }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
excludes: prerelease, draft | |
- name: Gather Sillot Release Information | |
id: release_info | |
# https://github.com/Hi-Windom/Sillot/issues/373 | |
# 注意:创建或更新环境变量的步骤无权访问新值;$GITHUB_OUTPUT 需要定义步骤 id 才能稍后检索输出值,$GITHUB_ENV 则不需要 | |
# 以下转换不再需要: | |
# changelog="${changelog//'%'/'%25'}" | |
# changelog="${changelog//$'\n'/'%0A'}" | |
# changelog="${changelog//$'\r'/'%0D'}" | |
run: | | |
echo "release_title=$(git show --format=%s --no-patch | head -1)" >> $GITHUB_OUTPUT | |
echo "release_version=v${{ steps.version.outputs.value }}_$(TZ=Asia/Shanghai date +'%Y%m%d')_syv${{ steps.syv.outputs.value }}" >> $GITHUB_OUTPUT | |
changelog=$(python scripts/parse-changelog-sillot.py -t ${{ github.ref }} -b ${{ steps.thislatestR.outputs.release }} Hi-Windom/Sillot) | |
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) | |
echo "release_body_sillot<<$EOF" >> $GITHUB_ENV | |
echo "$changelog" >> $GITHUB_ENV | |
echo "$EOF" >> $GITHUB_ENV | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Gather SiYuan Release Information | |
id: release_info_siyuan | |
run: | | |
changelog=$(python scripts/parse-changelog.py -t v${{ steps.syv.outputs.value }} siyuan-note/siyuan) | |
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) | |
echo "release_body_siyuan<<$EOF" >> $GITHUB_ENV | |
echo "$changelog" >> $GITHUB_ENV | |
echo "$EOF" >> $GITHUB_ENV | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create Release | |
id: create_release | |
uses: ncipollo/release-action@v1 | |
with: | |
release_name: ${{ steps.release_info.outputs.release_version }} | |
tag_name: ${{ github.ref }} | |
body: "${{ env.release_body_sillot }}\n---\n${{ env.release_body_siyuan }}" | |
draft: false | |
prerelease: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
build: | |
runs-on: ${{ matrix.config.os }} | |
needs: create_release | |
strategy: | |
matrix: | |
config: | |
- os: ubuntu-20.04 | |
kernel_path: "../app/kernel-linux/SiYuan-Sillot-Kernel" | |
build_args: "-s -w -X github.com/Hi-Windom/Sillot/kernel/util.Mode=prod" | |
electron_args: "dist-linux" | |
goos: "linux" | |
goarch: "amd64" | |
suffix: "linux.AppImage" | |
- os: ubuntu-20.04 | |
kernel_path: "../app/kernel-linux/SiYuan-Sillot-Kernel" | |
build_args: "-s -w -X github.com/Hi-Windom/Sillot/kernel/util.Mode=prod" | |
electron_args: "dist-linux" | |
goos: "linux" | |
goarch: "amd64" | |
suffix: "linux.tar.gz" | |
# - os: macos-latest | |
# kernel_path: "../app/kernel-darwin/SiYuan-Sillot-Kernel" | |
# build_args: "-s -w -X github.com/Hi-Windom/Sillot/kernel/util.Mode=prod" | |
# electron_args: "dist-darwin" | |
# goos: "darwin" | |
# goarch: "amd64" | |
# suffix: "mac.dmg" | |
# - os: macos-latest | |
# kernel_path: "../app/kernel-darwin-arm64/SiYuan-Sillot-Kernel" | |
# build_args: "-s -w -X github.com/Hi-Windom/Sillot/kernel/util.Mode=prod" | |
# electron_args: "dist-darwin-arm64" | |
# goos: "darwin" | |
# goarch: "arm64" | |
# suffix: "mac-arm64.dmg" | |
- os: windows-latest | |
kernel_path: "../app/kernel/SiYuan-Sillot-Kernel.exe" | |
build_args: "-s -w -H=windowsgui -X github.com/Hi-Windom/Sillot/kernel/util.Mode=prod" | |
electron_args: "dist" | |
goos: "windows" | |
gobin: "bin" | |
mingwsys: "MINGW64" | |
goarch: "amd64" | |
suffix: "win.exe" | |
steps: | |
- name: Checkout repository and submodules | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot | |
- name: Checkout subtree PSP | |
uses: actions/checkout@v4 | |
with: | |
repository: K-Sillot/sillot-plugin-system | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/PSP | |
- name: Set up MingGW | |
uses: msys2/setup-msys2@v2 | |
if: contains( matrix.config.goos, 'windows') | |
with: | |
install: p7zip mingw-w64-x86_64-lua | |
- name: Set up TDM-GCC | |
run: msys2 -c "bash go/src/github.com/Hi-Windom/Sillot/scripts/get-tdm-gcc.sh tdm https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm-1/tdm-gcc-10.3.0.exe" && echo "CC=${{ github.workspace }}/tdm/bin/gcc.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append | |
if: contains( matrix.config.goarch, '386') | |
working-directory: ${{ github.workspace }} | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: "1.21" | |
- name: Set up goversioninfo | |
run: go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo && go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo | |
if: contains( matrix.config.goos, 'windows') | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/kernel | |
env: | |
GO111MODULE: on | |
CGO_ENABLED: 1 | |
GOOS: ${{ matrix.config.goos }} | |
GOPATH: ${{ github.workspace }}/go | |
GOARCH: ${{ matrix.config.goarch }} | |
- name: Set up Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
- name: Install Node pnpm | |
run: npm install -g pnpm | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app | |
- name: Change NPMRC File | |
run: pnpm config set registry https://registry.npmjs.org/ --location project | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app | |
- name: Install Node Dependencies | |
run: pnpm install --no-frozen-lockfile | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app | |
- name: Building UI | |
run: pnpm run build | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app | |
- name: Remove Build Directory | |
uses: JesseTG/rm@v1.0.2 | |
with: | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/build | |
- name: Remove Kernel Directory for Linux | |
uses: JesseTG/rm@v1.0.2 | |
with: | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/kernel-linux | |
- name: Remove Kernel Directory for Windows | |
uses: JesseTG/rm@v1.0.2 | |
with: | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/kernel | |
# - name: Remove Kernel Directory for macOS | |
# uses: JesseTG/rm@v1.0.2 | |
# with: | |
# path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/kernel-darwin | |
# - name: Remove Kernel Directory for macOS ARM64 | |
# uses: JesseTG/rm@v1.0.2 | |
# with: | |
# path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/kernel-darwin-arm64 | |
- name: Generate Icon Resource and Properties/Version Info For Windows | |
run: ${{ github.workspace }}\go\${{ matrix.config.gobin }}\goversioninfo -platform-specific=true -icon="resource\icon.ico" -manifest="resource\goversioninfo.exe.manifest" | |
if: contains( matrix.config.goos, 'windows') | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/kernel | |
- name: Building Kernel | |
run: go build --tags fts5 -o "${{ matrix.config.kernel_path }}" -v -ldflags "${{ matrix.config.build_args }}" | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/kernel | |
env: | |
GO111MODULE: on | |
CGO_ENABLED: 1 | |
GOOS: ${{ matrix.config.goos }} | |
GOPATH: ${{ github.workspace }}/go | |
GOARCH: ${{ matrix.config.goarch }} | |
- name: Building Electron | |
run: pnpm run ${{ matrix.config.electron_args }} | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app | |
- name: Upload Release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# 这里使用 bot | |
with: | |
upload_url: ${{ needs.create_release.outputs.upload_url }} | |
asset_name: Sillot-${{ needs.create_release.outputs.release_version }}-${{ matrix.config.suffix }} | |
asset_path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/build/Sillot-${{ needs.create_release.outputs.version }}-${{ matrix.config.suffix }} | |
asset_content_type: application/octet-stream | |
- name: zip WinPortable | |
uses: thedoctor0/zip-release@0.7.1 | |
if: contains( matrix.config.goos, 'windows') | |
with: | |
type: 'zip' | |
filename: Sillot-${{ needs.create_release.outputs.release_version }}-win_Portable_.zip | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot/app/build/win-unpacked/ | |
exclusions: '*.git*' | |
recursive_exclusions: 'LICENSES.chromium.html' | |
- name: Upload WinPortable to release | |
uses: actions/upload-release-asset@v1 | |
if: contains( matrix.config.goos, 'windows') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# 这里使用 bot | |
with: | |
upload_url: ${{ needs.create_release.outputs.upload_url }} | |
asset_name: Sillot-${{ needs.create_release.outputs.release_version }}-win_Portable_.zip | |
asset_path: Sillot-${{ needs.create_release.outputs.release_version }}-win_Portable_.zip | |
asset_content_type: application/octet-stream | |
# Manual setup is required when the built-in version does not work correctly in windows2022 | |
- name: Setup JDK 11 | |
uses: actions/setup-java@v3 | |
if: contains( matrix.config.goos, 'windows') | |
continue-on-error: true | |
with: | |
java-version: '17' | |
distribution: 'zulu' | |
overwrite-settings: true | |
- name: Setup Android SDK | |
uses: android-actions/setup-android@v2 | |
- name: Install Android NDK | |
uses: nttld/setup-ndk@v1 | |
with: | |
ndk-version: r25b | |
add-to-path: true | |
- name: Remove android Directory | |
uses: JesseTG/rm@v1.0.2 | |
if: contains( matrix.config.goos, 'windows') | |
with: | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/SillotAndroid | |
- name: Checkout android repo | |
uses: actions/checkout@v4 | |
if: contains( matrix.config.goos, 'windows') | |
with: | |
repository: Hi-Windom/Sillot-android | |
path: ${{ github.workspace }}/go/src/github.com/Hi-Windom/SillotAndroid | |
- name: Before android build | |
if: contains( matrix.config.goos, 'windows') | |
run: | | |
cd ${{ github.workspace }}/go/src/github.com/Hi-Windom/Sillot | |
.\scripts\sillot-android-build-action.bat | |
continue-on-error: false | |
- name: Build with Gradle | |
if: contains( matrix.config.goos, 'windows') | |
working-directory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/SillotAndroid | |
run: ./gradlew assembleAction --quiet --stacktrace | |
continue-on-error: false | |
- uses: r0adkll/sign-android-release@v1 | |
if: contains( matrix.config.goos, 'windows') | |
name: Sign APK | |
id: sign_app | |
with: | |
releaseDirectory: ${{ github.workspace }}/go/src/github.com/Hi-Windom/SillotAndroid/app/build/outputs/apk/action | |
signingKeyBase64: ${{ secrets.APK_SIGN_KEY_JKS_BASE64 }} | |
alias: ${{ secrets.APK_SIGN_KEY_ALIAS }} | |
keyStorePassword: ${{ secrets.APK_SIGN_KEY_JKS_PW }} | |
keyPassword: ${{ secrets.APK_SIGN_KEY_PW }} | |
env: | |
# override default build-tools version -- optional | |
BUILD_TOOLS_VERSION: "30.0.3" | |
- name: Upload APK to release | |
uses: actions/upload-release-asset@v1 | |
if: contains( matrix.config.goos, 'windows') | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create_release.outputs.upload_url }} | |
asset_name: Sillot-${{ needs.create_release.outputs.release_version }}-debug.apk | |
asset_path: ${{steps.sign_app.outputs.signedReleaseFile}} | |
asset_content_type: application/octet-stream |