107 lines
3.5 KiB
YAML
107 lines
3.5 KiB
YAML
name: HarmonyOS CI/CD Pipeline
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- master
|
||
- main
|
||
- feature/*
|
||
- release/*
|
||
tags:
|
||
- '*'
|
||
pull_request:
|
||
branches:
|
||
- master
|
||
- main
|
||
- feature/*
|
||
- release/*
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
container: ghcr.io/sanchuanhehe/harmony-next-pipeline-docker/harmonyos-ci-image:v5.0.4
|
||
|
||
steps:
|
||
# 1. 拉取代码
|
||
- name: Checkout code
|
||
uses: actions/checkout@v3
|
||
|
||
# 2. 安装项目依赖
|
||
- name: Install dependencies
|
||
run: |
|
||
cd $GITHUB_WORKSPACE
|
||
ohpm install --all
|
||
|
||
# 3. 构建 HAP 文件
|
||
- name: Build HAP
|
||
run: |
|
||
cd $GITHUB_WORKSPACE
|
||
hvigorw clean --no-daemon
|
||
hvigorw assembleHap --mode module -p product=default -p buildMode=debug --no-daemon
|
||
|
||
# 4. 获取构建输出路径
|
||
- name: Get build output path
|
||
id: get_build_output_path
|
||
run: |
|
||
cd $GITHUB_WORKSPACE
|
||
echo "output_path=$(ls -d $PWD/electron/build/default/outputs/default)" >> $GITHUB_OUTPUT
|
||
|
||
# 5. 上传构建输出作为 artifact
|
||
- name: Upload Build Output
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: build-output
|
||
path: ${{ steps.get_build_output_path.outputs.output_path }}
|
||
|
||
publish:
|
||
needs: build
|
||
runs-on: ubuntu-latest
|
||
permissions:
|
||
contents: write
|
||
container: ghcr.io/sanchuanhehe/harmony-next-pipeline-docker/harmonyos-ci-image:latest
|
||
if: startsWith(github.ref, 'refs/tags/v')
|
||
steps:
|
||
# 1. 拉取代码
|
||
- name: Checkout code
|
||
uses: actions/checkout@v3
|
||
|
||
# 2. 下载构建输出 artifact
|
||
- name: Download Build Output
|
||
uses: actions/download-artifact@v4
|
||
with:
|
||
name: build-output
|
||
path: $GITHUB_WORKSPACE/electron/build/default/outputs/default
|
||
|
||
# 3. 签名 HAP 文件,如果存在签名文件和证书文件还有密钥文件和KEY_PASSWORD和KEYSTORE_PASSWORD
|
||
- name: Sign HAP
|
||
id: sign_hap
|
||
if: env.SIGNING_CERT && env.SIGNING_PROFILE && env.SIGNING_KEY
|
||
run: |
|
||
cd $GITHUB_WORKSPACE
|
||
java -jar /harmonyos-tools/command-line-tools/sdk/default/openharmony/toolchains/lib/hap-sign-tool.jar \
|
||
sign-app \
|
||
-keyAlias "ide_demo_app" \
|
||
-signAlg "SHA256withECDSA" \
|
||
-mode "localSign" \
|
||
-appCertFile "${{ env.SIGNING_CERT }}" \
|
||
-profileFile "${{ env.SIGNING_PROFILE }}" \
|
||
-inFile "./electron/build/default/outputs/default/electron-default.hap" \
|
||
-keystoreFile "${{ env.SIGNING_KEY }}" \
|
||
-outFile "./electron/build/default/outputs/default/electron-default-signed.hap" \
|
||
-keyPwd "${{ secrets.KEY_PASSWORD }}" \
|
||
-keystorePwd "${{ secrets.KEYSTORE_PASSWORD }}" \
|
||
-signCode "1"
|
||
|
||
# 4. 创建 GitHub Release 并上传资产
|
||
- name: Create Release and Upload Assets
|
||
uses: softprops/action-gh-release@v1
|
||
if: startsWith(github.ref, 'refs/tags/v')
|
||
with:
|
||
name: ${{ github.ref_name }}
|
||
files: |
|
||
${{ steps.sign_hap.outcome == 'success' && '$GITHUB_WORKSPACE/electron/build/default/outputs/default/electron-default-signed.hap' || '$GITHUB_WORKSPACE/electron/build/default/outputs/default/electron-default-unsigned.hap' }}
|
||
draft: false
|
||
prerelease: false
|
||
env:
|
||
GITHUB_TOKEN: ${{ github.token }}
|