Repository navigation
Fix HarmonyOS connection click validation #10
Workflow file for this run
This file contains hidden or 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: HarmonyOS Test | |
| on: | |
| push: | |
| branches: | |
| - harmonyos-adaptation | |
| workflow_dispatch: | |
| inputs: | |
| run_hap_build: | |
| description: "Run the Hvigor HAP build after validating the toolchain" | |
| type: boolean | |
| default: true | |
| ohos_sdk_version: | |
| description: "OpenHarmony SDK version downloaded from repo.huaweicloud.com" | |
| type: string | |
| default: "5.0.0" | |
| commandline_tools_version: | |
| description: "fcitx-contrib/ohpm-cli-tools release version" | |
| type: string | |
| default: "5.1.0.840" | |
| hvigor_version: | |
| description: "HarmonyOS Hvigor npm package version" | |
| type: string | |
| default: "6.26.1" | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| package: | |
| name: Runner HAP package test | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 180 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Show runner disk before setup | |
| run: | | |
| df -h | |
| - name: Setup Rust toolchain | |
| uses: actions-rust-lang/setup-rust-toolchain@v1 | |
| - name: Setup HarmonyOS runner toolchain | |
| env: | |
| OHOS_SDK_VERSION: ${{ inputs.ohos_sdk_version || '5.0.0' }} | |
| COMMANDLINE_TOOLS_VERSION: ${{ inputs.commandline_tools_version || '5.1.0.840' }} | |
| HVIGOR_VERSION: ${{ inputs.hvigor_version || '6.26.1' }} | |
| run: | | |
| script/setup-harmonyos-runner.sh | |
| - name: Cache HarmonyOS Cargo dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| ohos/native/target/ | |
| key: harmonyos-cargo-${{ runner.os }}-${{ inputs.ohos_sdk_version || '5.0.0' }}-${{ hashFiles('ohos/native/Cargo.lock', 'ohos/native/Cargo.toml') }}-${{ github.run_id }} | |
| restore-keys: | | |
| harmonyos-cargo-${{ runner.os }}-${{ inputs.ohos_sdk_version || '5.0.0' }}-${{ hashFiles('ohos/native/Cargo.lock', 'ohos/native/Cargo.toml') }}- | |
| harmonyos-cargo-${{ runner.os }}-${{ inputs.ohos_sdk_version || '5.0.0' }}- | |
| - name: Probe HarmonyOS local toolchain | |
| run: | | |
| rustc --version | |
| cargo --version | |
| node --version | |
| npm --version | |
| ohpm --version | |
| hvigor --version | |
| command -v ohpm | |
| command -v hvigor | |
| echo "OHOS_NDK_HOME=${OHOS_NDK_HOME}" | |
| echo "DEVECO_SDK_HOME=${DEVECO_SDK_HOME}" | |
| find "${OHOS_NDK_HOME}" -maxdepth 2 -type f \( -name oh-uni-package.json -o -name sdk-pkg.json \) | sort | |
| find "${DEVECO_COMMANDLINE_TOOLS_HOME}" -maxdepth 5 -type f \( -name ohpm -o -name hdc \) | sort | |
| - name: Prepare HarmonyOS signing files | |
| env: | |
| OHOS_SIGNING_STORE_FILE_BASE64: ${{ secrets.OHOS_SIGNING_STORE_FILE_BASE64 }} | |
| OHOS_SIGNING_CERT_BASE64: ${{ secrets.OHOS_SIGNING_CERT_BASE64 }} | |
| OHOS_SIGNING_PROFILE_BASE64: ${{ secrets.OHOS_SIGNING_PROFILE_BASE64 }} | |
| OHOS_SIGNING_STORE_PASSWORD: ${{ secrets.OHOS_SIGNING_STORE_PASSWORD }} | |
| OHOS_SIGNING_KEY_ALIAS: ${{ secrets.OHOS_SIGNING_KEY_ALIAS }} | |
| OHOS_SIGNING_KEY_PASSWORD: ${{ secrets.OHOS_SIGNING_KEY_PASSWORD }} | |
| OHOS_SIGNING_ALG: ${{ secrets.OHOS_SIGNING_ALG }} | |
| run: | | |
| set -euo pipefail | |
| if [ -z "${OHOS_SIGNING_STORE_FILE_BASE64}${OHOS_SIGNING_CERT_BASE64}${OHOS_SIGNING_PROFILE_BASE64}${OHOS_SIGNING_STORE_PASSWORD}${OHOS_SIGNING_KEY_ALIAS}${OHOS_SIGNING_KEY_PASSWORD}" ]; then | |
| echo "HarmonyOS signing secrets are not configured; building unsigned HAP." | |
| exit 0 | |
| fi | |
| missing=() | |
| [ -n "${OHOS_SIGNING_STORE_FILE_BASE64}" ] || missing+=("OHOS_SIGNING_STORE_FILE_BASE64") | |
| [ -n "${OHOS_SIGNING_CERT_BASE64}" ] || missing+=("OHOS_SIGNING_CERT_BASE64") | |
| [ -n "${OHOS_SIGNING_PROFILE_BASE64}" ] || missing+=("OHOS_SIGNING_PROFILE_BASE64") | |
| [ -n "${OHOS_SIGNING_STORE_PASSWORD}" ] || missing+=("OHOS_SIGNING_STORE_PASSWORD") | |
| [ -n "${OHOS_SIGNING_KEY_ALIAS}" ] || missing+=("OHOS_SIGNING_KEY_ALIAS") | |
| [ -n "${OHOS_SIGNING_KEY_PASSWORD}" ] || missing+=("OHOS_SIGNING_KEY_PASSWORD") | |
| if [ "${#missing[@]}" -gt 0 ]; then | |
| printf 'Incomplete HarmonyOS signing secrets: %s\n' "${missing[*]}" >&2 | |
| exit 2 | |
| fi | |
| mkdir -p "${RUNNER_TEMP}/harmonyos-signing" | |
| chmod 700 "${RUNNER_TEMP}/harmonyos-signing" | |
| printf '%s' "${OHOS_SIGNING_STORE_FILE_BASE64}" | base64 -d > "${RUNNER_TEMP}/harmonyos-signing/signing.p12" | |
| printf '%s' "${OHOS_SIGNING_CERT_BASE64}" | base64 -d > "${RUNNER_TEMP}/harmonyos-signing/signing.cer" | |
| printf '%s' "${OHOS_SIGNING_PROFILE_BASE64}" | base64 -d > "${RUNNER_TEMP}/harmonyos-signing/signing-profile.p7b" | |
| chmod 600 "${RUNNER_TEMP}/harmonyos-signing/"* | |
| { | |
| echo "OHOS_SIGNING_STORE_FILE=${RUNNER_TEMP}/harmonyos-signing/signing.p12" | |
| echo "OHOS_SIGNING_CERT_PATH=${RUNNER_TEMP}/harmonyos-signing/signing.cer" | |
| echo "OHOS_SIGNING_PROFILE=${RUNNER_TEMP}/harmonyos-signing/signing-profile.p7b" | |
| echo "OHOS_SIGNING_STORE_PASSWORD=${OHOS_SIGNING_STORE_PASSWORD}" | |
| echo "OHOS_SIGNING_KEY_ALIAS=${OHOS_SIGNING_KEY_ALIAS}" | |
| echo "OHOS_SIGNING_KEY_PASSWORD=${OHOS_SIGNING_KEY_PASSWORD}" | |
| if [ -n "${OHOS_SIGNING_ALG}" ]; then | |
| echo "OHOS_SIGNING_ALG=${OHOS_SIGNING_ALG}" | |
| fi | |
| } >> "${GITHUB_ENV}" | |
| - name: Build HarmonyOS HAP | |
| if: ${{ github.event_name != 'workflow_dispatch' || inputs.run_hap_build }} | |
| run: | | |
| script/build-harmonyos.sh --local | |
| - name: List HarmonyOS outputs | |
| if: always() | |
| run: | | |
| find dist -type f \( -name '*.hap' -o -name '*.har' -o -name '*.so' \) | sort || true | |
| find ohos -type f \( -name '*.hap' -o -name '*.har' -o -name '*.so' -o -name '*.json' -o -name '*.json5' \) | sort | |
| find ohos/.hvigor -maxdepth 4 -type f | sort || true | |
| df -h | |
| - name: Upload HarmonyOS diagnostics | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: harmonyos-diagnostics | |
| if-no-files-found: ignore | |
| path: | | |
| ohos/.hvigor/report/ | |
| ohos/.hvigor/cache/ | |
| ohos/.hvigor/outputs/ | |
| ohos/entry/build/ | |
| ohos/build/ | |
| ohos/entry/libs/arm64-v8a/libonetcli_harmony.so | |
| - name: Upload HAP package | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: harmonyos-hap | |
| if-no-files-found: ignore | |
| path: | | |
| dist/harmonyos/*.hap | |
| ohos/**/*.hap |