Multi-Platform Build Develop #33
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: Multi-Platform Build Develop | |
on: | |
workflow_dispatch: | |
inputs: | |
platform: | |
description: "Choose a platform" | |
required: true | |
type: choice | |
options: | |
- windows | |
- darwin | |
- linux | |
- mwl | |
legacy: | |
description: "Legacy system version" | |
required: false | |
type: boolean | |
default: false | |
version: | |
description: "Select version type" | |
required: true | |
type: choice | |
default: ce | |
options: | |
- ce | |
- ee | |
- se | |
engine: | |
description: "Is there a built-in engine" | |
required: false | |
type: boolean | |
default: false | |
engineVersion: | |
description: "Specify engine version(need check built-in engine" | |
required: false | |
type: string | |
noBuiltInYakVersion: | |
description: "No built-in yak version number" | |
required: false | |
type: boolean | |
default: false | |
devTool: | |
description: "Display developer tools" | |
required: false | |
type: boolean | |
default: false | |
jobs: | |
build_yakit: | |
runs-on: macos-13 | |
env: | |
CI: "" | |
NODE_OPTIONS: --max_old_space_size=4096 | |
steps: | |
- name: Display incoming configuration parameters | |
run: echo ${{ inputs.platform }} ${{ inputs.legacy }} ${{ inputs.version }} ${{ inputs.engine }} ${{ inputs.engineVersion }} ${{ inputs.devTool }} | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18.18.2 | |
# 缓存 yarn 依赖包 ↓↓↓ | |
cache: "yarn" | |
cache-dependency-path: | | |
yarn.lock | |
app/renderer/src/main/yarn.lock | |
- run: echo ${{ github.ref_name }} | |
- run: cp buildutil/zip /usr/local/bin/zip | |
- run: chmod +x /usr/local/bin/zip | |
- run: zip -h | |
- name: "Fetch Latest EngineVersion" | |
if: ${{ inputs.engine && !inputs.engineVersion }} | |
run: wget -O bins/engine-version.txt https://oss-qn.yaklang.com/yak/latest/version.txt | |
- name: "Fetch Specify EngineVersion" | |
if: ${{ inputs.engine && inputs.engineVersion }} | |
run: | | |
mkdir -p bins | |
echo "${{ inputs.engineVersion }}" > bins/engine-version.txt | |
- if: ${{ inputs.engine }} | |
run: | | |
cat bins/engine-version.txt | |
YAK_VERSION=$(cat bins/engine-version.txt | tr -d '\n') | |
echo "ENGINE_VERSION=$YAK_VERSION" >> $GITHUB_ENV | |
- if: ${{ inputs.engine && inputs.noBuiltInYakVersion }} | |
run: rm ./bins/engine-version.txt | |
- name: "Download Yak Engine via wget(MacOS)" | |
if: ${{ inputs.engine && contains(fromJSON('["darwin","mwl"]'), inputs.platform) }} | |
id: download-darwin-engine | |
run: wget -O bins/yak_darwin_amd64 https://oss-qn.yaklang.com/yak/${{ inputs.engineVersion || env.ENGINE_VERSION }}/yak_darwin_amd64 && zip ./bins/yak_darwin_amd64.zip ./bins/yak_darwin_amd64 && rm ./bins/yak_darwin_amd64 | |
- name: "Download Yak Engine via wget(MacOS-arm64)" | |
if: ${{ inputs.engine && contains(fromJSON('["darwin","mwl"]'), inputs.platform) }} | |
id: download-darwin-engine-arm64 | |
run: wget -O bins/yak_darwin_arm64 https://oss-qn.yaklang.com/yak/${{ inputs.engineVersion || env.ENGINE_VERSION }}/yak_darwin_arm64 && zip ./bins/yak_darwin_arm64.zip ./bins/yak_darwin_arm64 && rm ./bins/yak_darwin_arm64 | |
- name: "Download Yak Engine via wget(Linux)" | |
if: ${{ inputs.engine && contains(fromJSON('["linux","mwl"]'), inputs.platform) }} | |
id: download-linux-engine | |
run: wget -O bins/yak_linux_amd64 https://oss-qn.yaklang.com/yak/${{ inputs.engineVersion || env.ENGINE_VERSION }}/yak_linux_amd64 && zip ./bins/yak_linux_amd64.zip ./bins/yak_linux_amd64 && rm ./bins/yak_linux_amd64 | |
- name: "Download Yak Engine via wget(Linux-arm64)" | |
if: ${{ inputs.engine && contains(fromJSON('["linux","mwl"]'), inputs.platform) }} | |
id: download-linux-engine-arm64 | |
run: wget -O bins/yak_linux_arm64 https://oss-qn.yaklang.com/yak/${{ inputs.engineVersion || env.ENGINE_VERSION }}/yak_linux_arm64 && zip ./bins/yak_linux_arm64.zip ./bins/yak_linux_arm64 && rm ./bins/yak_linux_arm64 | |
- name: "Download Yak Engine via wget(Windows)" | |
if: ${{ inputs.engine && !inputs.legacy && contains(fromJSON('["windows","mwl"]'), inputs.platform) }} | |
id: download-windows-engine | |
run: wget -O bins/yak_windows_amd64.exe https://oss-qn.yaklang.com/yak/${{ inputs.engineVersion || env.ENGINE_VERSION }}/yak_windows_amd64.exe && zip ./bins/yak_windows_amd64.zip ./bins/yak_windows_amd64.exe && rm ./bins/yak_windows_amd64.exe | |
- name: "Download Yak Legacy Engine via wget(Windows)" | |
if: ${{ inputs.engine && inputs.legacy && contains(fromJSON('["windows","mwl"]'), inputs.platform) }} | |
id: download-windows-leagacy-engine | |
run: wget -O bins/yak_windows_amd64.exe https://oss-qn.yaklang.com/yak/${{ inputs.engineVersion || env.ENGINE_VERSION }}/yak_windows_legacy_amd64.exe && zip ./bins/yak_windows_amd64.zip ./bins/yak_windows_amd64.exe && rm ./bins/yak_windows_amd64.exe | |
- name: Extract Package.json Version | |
id: extract_version | |
uses: Saionaro/extract-package-version@v1.1.1 | |
- name: Crop Yakit-CE Package.json Version | |
uses: mad9000/actions-find-and-replace-string@5 | |
id: package_ce_version | |
with: | |
source: ${{ steps.extract_version.outputs.version }} | |
find: "-ce" | |
replace: "" | |
- name: Crop Yakit-EE Package.json Version | |
uses: mad9000/actions-find-and-replace-string@5 | |
id: package_version | |
with: | |
source: ${{ steps.package_ce_version.outputs.value }} | |
find: "-ee" | |
replace: "" | |
- name: Echo Yakit Package Version | |
run: echo "SOFTWARE_VERSION=${{ steps.package_version.outputs.value }}" >> $GITHUB_ENV | |
- name: "Install Dependencies" | |
run: yarn install && yarn install-render | |
working-directory: ./ | |
- name: "Install Legacy Electron" | |
run: yarn remove electron && yarn add electron@22.3.27 --dev | |
if: ${{ inputs.legacy }} | |
working-directory: ./ | |
- name: "Build CE Render" | |
if: ${{ inputs.version == 'ce' }} | |
working-directory: ./ | |
run: yarn build${{ inputs.devTool && '-test' || '' }}-render | |
- name: "Build EE Render" | |
if: ${{ inputs.version == 'ee' }} | |
working-directory: ./ | |
run: yarn build-render${{ inputs.devTool && '-test' || '' }}-enterprise | |
- name: "Build SE Render" | |
if: ${{ inputs.version == 'se' }} | |
working-directory: ./ | |
run: yarn build-render${{ inputs.devTool && '-test' || '' }}-simple-enterprise | |
- name: Build Yakit (MultiPlatform) | |
if: ${{ inputs.platform == 'mwl' }} | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
working-directory: ./ | |
run: | | |
yarn add -D dmg-license | |
if [ "${{ inputs.version }}" = "ce" ]; then | |
yarn electron-publish${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "ee" ]; then | |
yarn electron-publish-ee${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "se" ]; then | |
yarn electron-publish-se${{ inputs.legacy && '-legacy' || '' }} | |
else | |
echo "未知的输入值: ${{ inputs.version }}" >&2 | |
exit 1 | |
fi | |
- name: Build Yakit (MAC) | |
if: ${{ inputs.platform == 'darwin' }} | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
working-directory: ./ | |
run: | | |
if [ "${{ inputs.version }}" = "ce" ]; then | |
yarn pack-mac${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "ee" ]; then | |
yarn pack-mac-ee${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "se" ]; then | |
yarn pack-mac-se${{ inputs.legacy && '-legacy' || '' }} | |
else | |
echo "未知的输入值: ${{ inputs.version }}" >&2 | |
exit 1 | |
fi | |
- name: Build Yakit (LINUX) | |
if: ${{ inputs.platform == 'linux' }} | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
working-directory: ./ | |
run: | | |
if [ "${{ inputs.version }}" = "ce" ]; then | |
yarn pack-linux${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "ee" ]; then | |
yarn pack-linux-ee${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "se" ]; then | |
yarn pack-linux-se${{ inputs.legacy && '-legacy' || '' }} | |
else | |
echo "未知的输入值: ${{ inputs.version }}" >&2 | |
exit 1 | |
fi | |
- name: Build Yakit (WIN) | |
if: ${{ inputs.platform == 'windows' }} | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
working-directory: ./ | |
run: | | |
if [ "${{ inputs.version }}" = "ce" ]; then | |
yarn pack-win${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "ee" ]; then | |
yarn pack-win-ee${{ inputs.legacy && '-legacy' || '' }} | |
elif [ "${{ inputs.version }}" = "se" ]; then | |
yarn pack-win-se${{ inputs.legacy && '-legacy' || '' }} | |
else | |
echo "未知的输入值: ${{ inputs.version }}" >&2 | |
exit 1 | |
fi | |
- name: View Published Content | |
run: | |
ls ./release | |
# EnpriTraceAgent -1.3.4-sp6-darwin-arm64(.dmg|.exe|.AppImage) | |
# CSG -1.3.4-sp6-darwin-arm64(.dmg|.exe|.AppImage) | |
# Yakit -1.3.4-sp6-darwin-arm64(.dmg|.exe|.AppImage) | |
- name: Generate software prefix name | |
run: | | |
if [ "${{ inputs.version }}" = "ce" ]; then | |
echo "ENV_Software_Name=Yakit" >> $GITHUB_ENV | |
elif [ "${{ inputs.version }}" = "ee" ]; then | |
echo "ENV_Software_Name=CSG" >> $GITHUB_ENV | |
elif [ "${{ inputs.version }}" = "se" ]; then | |
echo "ENV_Software_Name=EnpriTraceAgent" >> $GITHUB_ENV | |
else | |
echo "No software version obtained" >&2 | |
exit 1 | |
fi | |
- name: Show ENV_Software_Name | |
run: echo "ENV_Software_Name: $ENV_Software_Name" | |
- name: Upload Yakit(CE) Artifacts Windows | |
if: ${{ contains(fromJSON('["windows","mwl"]'), inputs.platform) }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.ENV_Software_Name }}-${{ env.SOFTWARE_VERSION }}-windows${{ inputs.legacy && '-legacy' || '' }}-amd64.exe | |
path: ./release/${{env.ENV_Software_Name}}-${{env.SOFTWARE_VERSION}}-windows${{ inputs.legacy && '-legacy' || '' }}-amd64.exe | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Upload Yakit(CE) Artifacts Mac Amd | |
if: ${{ contains(fromJSON('["darwin","mwl"]'), inputs.platform) }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.ENV_Software_Name }}-${{ env.SOFTWARE_VERSION }}-darwin${{ inputs.legacy && '-legacy' || '' }}-x64.dmg | |
path: ./release/${{env.ENV_Software_Name}}-${{env.SOFTWARE_VERSION}}-darwin${{ inputs.legacy && '-legacy' || '' }}-x64.dmg | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Upload Yakit(CE) Artifacts Mac Arm | |
if: ${{ contains(fromJSON('["darwin","mwl"]'), inputs.platform) }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.ENV_Software_Name }}-${{ env.SOFTWARE_VERSION }}-darwin${{ inputs.legacy && '-legacy' || '' }}-arm64.dmg | |
path: ./release/${{env.ENV_Software_Name}}-${{env.SOFTWARE_VERSION}}-darwin${{ inputs.legacy && '-legacy' || '' }}-arm64.dmg | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Upload Yakit(CE) Artifacts Linux Amd | |
if: ${{ contains(fromJSON('["linux","mwl"]'), inputs.platform) }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.ENV_Software_Name }}-${{ env.SOFTWARE_VERSION }}-linux${{ inputs.legacy && '-legacy' || '' }}-amd64.AppImage | |
path: ./release/${{env.ENV_Software_Name}}-${{env.SOFTWARE_VERSION}}-linux${{ inputs.legacy && '-legacy' || '' }}-amd64.AppImage | |
if-no-files-found: error | |
retention-days: 7 | |
- name: Upload Yakit(CE) Artifacts Linux Arm | |
if: ${{ contains(fromJSON('["linux","mwl"]'), inputs.platform) }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.ENV_Software_Name }}-${{ env.SOFTWARE_VERSION }}-linux${{ inputs.legacy && '-legacy' || '' }}-arm64.AppImage | |
path: ./release/${{env.ENV_Software_Name}}-${{env.SOFTWARE_VERSION}}-linux${{ inputs.legacy && '-legacy' || '' }}-arm64.AppImage | |
if-no-files-found: error | |
retention-days: 7 |