Skip to content

Publish

Publish #7

Workflow file for this run

# .github/workflows/publish.yml
name: Publish
on:
release:
types: [released, prereleased]
workflow_dispatch:
# 手动触发工作流
inputs:
skip_readme_update:
description: '跳过 README 更新'
required: false
type: boolean
default: false
jobs:
publish:
name: Release build and publish
environment: Product
runs-on: macOS-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
# 使用 PAT 或默认 token 来确保可以推送更改
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Set up Yarn
run: |
echo "📦 安装 Yarn..."
npm install -g yarn
yarn --version
- name: Set version variables
id: version
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
# 手动触发时,从 gradle/libs.versions.toml 读取版本号
VERSION=$(python scripts/read_version.py)
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "🔧 手动运行,从配置文件读取版本: $VERSION"
else
echo "version=${{ github.event.release.tag_name }}" >> $GITHUB_OUTPUT
echo "🚀 Release 触发,使用版本: ${{ github.event.release.tag_name }}"
fi
- name: Update README versions
if: github.event.inputs.skip_readme_update != 'true'
run: |
echo "🚀 开始更新 README 版本号..."
python scripts/update_readme_version.py
- name: Check for README changes
if: github.event.inputs.skip_readme_update != 'true'
id: check_changes
run: |
echo "🔍 检查 README 文件是否有变化..."
if git diff --quiet HEAD -- README.md README_en.md; then
echo "changed=false" >> $GITHUB_OUTPUT
echo "ℹ️ README 文件无变化"
else
echo "changed=true" >> $GITHUB_OUTPUT
echo "✅ README 文件已更新"
echo "变更内容:"
git diff HEAD -- README.md README_en.md
fi
- name: Commit and push README changes
if: steps.check_changes.outputs.changed == 'true' && github.event.inputs.skip_readme_update != 'true'
run: |
echo "📝 提交 README 更改..."
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add README.md README_en.md
git commit -m "chore: update README versions for release ${{ steps.version.outputs.version }}"
git push origin HEAD:${{ github.event.repository.default_branch }}
echo "✅ README 更改已推送"
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1
- name: Install WASM dependencies
run: |
echo "📦 安装 WASM 构建依赖..."
if [ -f "kotlin-js-store/wasm/yarn.lock" ]; then
cd kotlin-js-store/wasm
yarn install --frozen-lockfile
cd ../..
echo "✅ WASM 依赖安装完成"
else
echo "ℹ️ 未找到 WASM 依赖文件,跳过安装"
fi
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true
- name: Publish to MavenCentral
run: |
echo "🚀 开始发布到 Maven Central..."
echo "📦 发布版本: ${{ steps.version.outputs.version }}"
chmod +x ./gradlew && ./gradlew publishAndReleaseToMavenCentral --no-configuration-cache --stacktrace
echo "✅ 发布完成"
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_KEY_CONTENTS }}
- name: Summary
run: |
echo "🎉 发布流程完成!"
echo "📦 版本: ${{ steps.version.outputs.version }}"
if [ "${{ github.event_name }}" = "release" ]; then
echo "🔗 Release: ${{ github.event.release.html_url }}"
else
echo "🔧 手动运行完成"
fi