Skip to content

Update harmonyos-ci.yml #8

Update harmonyos-ci.yml

Update harmonyos-ci.yml #8

Workflow file for this run

name: HarmonyOS CI/CD Pipeline
on:
push:
branches:
- main
- test-ci
tags:
- '*'
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
container: ghcr.io/sanchuanhehe/harmony-next-pipeline-docker/harmonyos-ci-image:v5.0.4
steps:
# 拉取代码
- name: Checkout code
uses: actions/checkout@v3
# 安装项目依赖
- name: Install dependencies
run: |
cd $GITHUB_WORKSPACE
ohpm install --all
# 构建har
- name: Build HAR
run: |
cd $GITHUB_WORKSPACE
hvigorw clean --no-daemon
hvigorw assembleHar --mode module -p module=Markdown@default -p product=default --no-daemon
# 4. 定义动态命名变量(区分 Tag/分支、Commit 哈希、构建日期)
- name: Define dynamic naming variables
id: naming_vars
run: |
cd $GITHUB_WORKSPACE
# 区分是 Tag 触发还是分支触发(优先用 Tag 名)
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref_type }}" == "tag" ]]; then
echo "version=${{ github.ref_name }}" >> $GITHUB_OUTPUT
else
echo "version=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi
# 构建日期(年月日,格式:20251121)
echo "build_date=$(date +%Y%m%d)" >> $GITHUB_OUTPUT
# 原始 HAR 文件名(HarmonyOS 构建默认命名:模块名.har,)
echo "original_har_name=Markdown.har" >> $GITHUB_OUTPUT
# 5. 重命名 HAR 文件(核心步骤)
- name: Rename HAR artifact
id: rename_har
run: |
cd $GITHUB_WORKSPACE
# 获取上一步定义的变量
VERSION=${{ steps.naming_vars.outputs.version }}
BUILD_DATE=${{ steps.naming_vars.outputs.build_date }}
ORIGINAL_HAR_NAME=${{ steps.naming_vars.outputs.original_har_name }}
# 输出路径(和你原有步骤一致)
OUTPUT_DIR=$PWD/Markdown/build/default/outputs/default
# 新文件名格式:模块名-版本/分支-Commit哈希-构建日期.har
NEW_HAR_NAME="Markdown-${VERSION}-${BUILD_DATE}.har"
# 原始文件完整路径
ORIGINAL_HAR_PATH="${OUTPUT_DIR}/${ORIGINAL_HAR_NAME}"
# 新文件完整路径
NEW_HAR_PATH="${OUTPUT_DIR}/${NEW_HAR_NAME}"
# 检查原始文件是否存在,避免构建失败导致的报错
if [ -f "${ORIGINAL_HAR_PATH}" ]; then
# 执行重命名
mv "${ORIGINAL_HAR_PATH}" "${NEW_HAR_PATH}"
echo "✅ HAR 文件重命名成功:"
echo "原始:${ORIGINAL_HAR_PATH}"
echo "新名:${NEW_HAR_PATH}"
# 输出新路径和新文件名,供后续上传步骤使用
echo "new_har_path=${NEW_HAR_PATH}" >> $GITHUB_OUTPUT
echo "new_har_name=${NEW_HAR_NAME}" >> $GITHUB_OUTPUT
else
echo "❌ 错误:原始 HAR 文件不存在!"
echo "查找路径:${ORIGINAL_HAR_PATH}"
exit 1
fi
# 上传构建输出作为 artifact
- name: Upload Build Output
uses: actions/upload-artifact@v4
with:
name: ${{ steps.rename_har.outputs.new_har_name }}
path: ${{ steps.rename_har.outputs.new_har_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:
# 拉取代码
- name: Checkout code
uses: actions/checkout@v3
# 下载构建输出 artifact
- name: Download Build Output
uses: actions/download-artifact@v4
with:
name: ${{ needs.build.outputs.artifact_name }} # 与 build 任务上传的 Artifact 名称一致
path: $GITHUB_WORKSPACE/Markdown/build/default/outputs/default # 下载到和 build 任务相同的路径
# name: build-output
# path: $GITHUB_WORKSPACE/Markdown/build/default/outputs/default
# 创建 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: |
$GITHUB_WORKSPACE/Markdown/build/default/outputs/default/${{ needs.build.outputs.new_har_name }}
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ github.token }}