Skip to content

publish-release

publish-release #80

name: publish-release
on:
workflow_dispatch:
inputs:
tag:
description: 'release tag'
required: false
type: string
commitId:
description: 'specific commit ID to build'
required: false
type: string
release:
types: [published]
jobs:
get-version:
runs-on: lynx-ubuntu-22.04-medium
timeout-minutes: 60
outputs:
version: ${{ steps.get_version.outputs.VERSION }}
steps:
- name: Get Version
id: get_version
run: |-
if [ ${{ github.event_name }} == 'workflow_dispatch' ]; then
version=${{ github.event.inputs.tag }}
else
version=$(echo ${{ github.ref }} | awk -F "/" '{print $3}')
fi
if [[ $version =~ ^[0-9]+\.[0-9]+\.[0-9]+$ || \
$version =~ ^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$ || \
$version =~ ^[0-9]+\.[0-9]+\.[0-9]+-alpha\.[0-9]+$ ]]; then
echo "Version is valid"
echo "VERSION=$version" >> $GITHUB_OUTPUT;
else
echo "Version is invalid"
exit 1
fi
android-explorer-build:
timeout-minutes: 60
runs-on: lynx-ubuntu-22.04-large
needs: get-version
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Build Explorer App
uses: ./lynx/.github/actions/android-explorer-build
with:
abi-list: armeabi-v7a,x86,x86_64,arm64-v8a
- name: push to release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.get-version.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: '${{ github.workspace }}/lynx/explorer/android/lynx_explorer/build/outputs/apk/noasan/release/LynxExplorer-noasan-release.apk'
allowUpdates: true
body: ''
ios-explorer-build:
timeout-minutes: 60
runs-on: lynx-darwin-14-medium
needs: get-version
strategy:
matrix:
arch: [arm64, x86_64]
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Build Explorer App
uses: ./lynx/.github/actions/ios-explorer-build
with:
build-arch: ${{ matrix.arch }}
- name: push explorer to release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.get-version.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: '${{ github.workspace }}/lynx/LynxExplorer-${{ matrix.arch }}.app.tar.gz'
allowUpdates: true
body: ''
harmony-explorer-build:
runs-on: lynx-custom-container
container:
image: ghcr.io/lynx-family/ubuntu24.04-harmony@sha256:bf493c3710de3c44bfa84caf402c0727b9310c42497f6e52580ad441ea640ef1
credentials:
username: lynx-family
password: ${{ secrets.GITHUB_TOKEN }}
needs: get-version
defaults:
run:
working-directory: ${{ github.workspace }}
shell: bash
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Build Explorer App
uses: ./lynx/.github/actions/harmony-explorer-build
- name: push explorer to release
uses: ncipollo/release-action@v1
with:
tag: ${{ needs.get-version.outputs.version }}
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: '${{ github.workspace }}/lynx/explorer/harmony/lynx_explorer/build/default/outputs/default/lynx_explorer-default-unsigned.hap'
allowUpdates: true
body: ''
android-sdk-release:
runs-on: ubuntu-22.04
needs: get-version
timeout-minutes: 240
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
- name: Free up disk space
uses: ./lynx/.github/actions/free-android-disk
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Setup Android environment
uses: ./lynx/.github/actions/setup-android-env
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: 'github'
- name: Android SDK Release
uses: ./lynx/.github/actions/android-sdk-release
with:
version: ${{ needs.get-version.outputs.version }}
signingKeyId: ${{ secrets.SIGNING_KEY_ID }}
signingPassword: ${{ secrets.SIGNING_PASSWORD }}
signingSecretKey: ${{ secrets.SIGNING_SECRET_KEY }}
abiList: 'armeabi-v7a,x86,x86_64,arm64-v8a'
- name: Package maven artifacts
run: |-
cd $GITHUB_WORKSPACE/lynx
pushd platform/android
./gradlew zipArtifacts -Pversion=${{ needs.get-version.outputs.version }} getArtifactList
popd
pushd platform/android/build
artifact_list=$(<artifact-list)
echo "::set-output name=artifact_list::$artifact_list"
popd
id: build_artifact
- name: Publish artifact to maven
uses: lynx-infra/maven-publish-action@53b4da2f23f9cfc4e905b135eda2724fcf5a0f0e
with:
portal_api_token: ${{ secrets.PORTAL_API_TOKEN }}
artifact_path_list: ${{ steps.build_artifact.outputs.artifact_list }}
ios-sdk-publish:
timeout-minutes: 60
runs-on: macos-14
needs: get-version
steps:
- name: Download Source
uses: actions/checkout@v4.2.2
with:
ref: ${{ github.event.inputs.commitId || github.ref }}
fetch-depth: 0
path: lynx
- name: Python Setup
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Set up Ruby + specify Bundler version
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.6.10'
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-backend: github
- name: Setup Ruby Cache
uses: ./lynx/.github/actions/ios-common-deps
with:
cache-backend: 'github'
- name: Publish iOS SDK
uses: ./lynx/.github/actions/ios-sdk-publish
with:
version: ${{ needs.get-version.outputs.version }}
tag: ${{ needs.get-version.outputs.version }}
cocoapods_trunk_token: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
component: all
- name: Publish iOS dev SDK
uses: ./lynx/.github/actions/ios-sdk-publish
env:
LYNX_ENABLE_RECORDER: 1
with:
version: ${{ needs.get-version.outputs.version }}-dev
tag: ${{ needs.get-version.outputs.version }}
cocoapods_trunk_token: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}
github_token: ${{ secrets.GITHUB_TOKEN }}
component: all
harmony-sdk-publish:
name: Publish Harmony SDK (${{ matrix.label }})
runs-on: lynx-custom-container
container:
image: ghcr.io/lynx-family/ubuntu24.04-harmony@sha256:25913874dad0557526b44f9c9ab30b9873080009db85bb569d718d2bb5f0e074
credentials:
username: lynx-family
password: ${{ secrets.GITHUB_TOKEN }}
defaults:
run:
shell: bash
needs: get-version
strategy:
matrix:
include:
- version_suffix: ''
modules: 'default'
build_param: ''
label: 'formal'
- version_suffix: '-dev'
modules: 'lynx lynx_devtool lynx_base'
build_param: '--dev'
label: 'dev'
steps:
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
profile: minimal
override: true
- name: Install git-cliff
run: |
cargo install git-cliff --locked
git-cliff --version
- name: Download Source
uses: actions/checkout@v4.2.2
with:
path: lynx
fetch-depth: 0
fetch-tags: true
ref: ${{ github.event.inputs.commitId || github.ref }}
- name: Get latest tag
id: get-latest-tag
uses: ./lynx/.github/actions/get-latest-tag
with:
current-tag: ${{ needs.get-version.outputs.version }}
- name: Install Common Dependencies
uses: ./lynx/.github/actions/common-deps
with:
cache-key-prefix: '-container'
- name: Generate Change Log
run: |
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
COMMIT_ID=$(git rev-list -n 1 ${{ steps.get-latest-tag.outputs.latest-tag }})
python3 explorer/harmony/script/generate_changelog.py --version ${{ needs.get-version.outputs.version }}${{ matrix.version_suffix }} --modules ${{ matrix.modules }} --base_commit $COMMIT_ID
- name: Build Harmony SDK
run: |
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
pushd platform/harmony && ohpm install && popd
pushd explorer/harmony && ohpm install && popd
python3 explorer/harmony/script/build.py ${{ matrix.build_param }} --build_lynx_core --build_har --modules ${{ matrix.modules }} --override_version ${{ needs.get-version.outputs.version }}${{ matrix.version_suffix }}
- name: Publish Harmony SDK
run: |
cd $GITHUB_WORKSPACE/lynx
source tools/envsetup.sh
export PUBLISH_KEY_PASSPHRASE=${{ secrets.HARMONY_PUBLISH_KEY_PASSPHRASE }}
cat << EOF > publish_key
${{ secrets.HARMONY_PUBLISH_KEY }}
EOF
ohpm config set publish_registry https://ohpm.openharmony.cn/ohpm
export PUBLISH_ID=${{ secrets.HARMONY_PUBLISH_ID }}
export KEY_PATH=$GITHUB_WORKSPACE/lynx/publish_key
python3 explorer/harmony/script/publish.py --modules ${{ matrix.modules }} --version ${{ needs.get-version.outputs.version }}${{ matrix.version_suffix }}