Skip to content

Multi-Platform Build Develop #33

Multi-Platform Build Develop

Multi-Platform Build Develop #33

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