66 lines
2.6 KiB
YAML
66 lines
2.6 KiB
YAML
name: 检查版本
|
|
|
|
on:
|
|
workflow_call:
|
|
outputs:
|
|
should_release:
|
|
description: "是否需要发布新版本"
|
|
value: ${{ jobs.check.outputs.should_release }}
|
|
package_version:
|
|
description: "package.json 的版本"
|
|
value: ${{ jobs.check.outputs.package_version }}
|
|
|
|
jobs:
|
|
check:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
should_release: ${{ steps.compare-versions.outputs.should_release }}
|
|
package_version: ${{ steps.package-version.outputs.package_version }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
|
|
- name: 获取package.json版本
|
|
id: package-version
|
|
run: |
|
|
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
|
echo "package_version=$PACKAGE_VERSION" >> $GITHUB_OUTPUT
|
|
|
|
- name: 获取最新release版本
|
|
id: latest-release
|
|
run: |
|
|
LATEST_RELEASE=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r '.tag_name' | sed 's/^v//')
|
|
echo "latest_release=${LATEST_RELEASE:-''}" >> $GITHUB_OUTPUT
|
|
continue-on-error: true
|
|
|
|
- name: 获取npm上的最新版本
|
|
id: npm-version
|
|
run: |
|
|
PACKAGE_NAME=$(node -p "require('./package.json').name")
|
|
NPM_VERSION=$(npm view $PACKAGE_NAME version 2>/dev/null || echo "")
|
|
echo "npm_version=${NPM_VERSION:-''}" >> $GITHUB_OUTPUT
|
|
continue-on-error: true
|
|
|
|
- name: 比较版本
|
|
id: compare-versions
|
|
run: |
|
|
PACKAGE_VERSION="${{ steps.package-version.outputs.package_version }}"
|
|
LATEST_RELEASE="${{ steps.latest-release.outputs.latest_release }}"
|
|
NPM_VERSION="${{ steps.npm-version.outputs.npm_version }}"
|
|
|
|
echo "Package version from package.json: $PACKAGE_VERSION"
|
|
echo "Latest GitHub release version: $LATEST_RELEASE"
|
|
echo "Latest NPM registry version: $NPM_VERSION"
|
|
|
|
# Check if we need to release based on version comparisons
|
|
if [ -z "$LATEST_RELEASE" ] || [ "$LATEST_RELEASE" = "null" ] || [ "$PACKAGE_VERSION" != "$LATEST_RELEASE" ]; then
|
|
if [ -z "$NPM_VERSION" ] || [ "$NPM_VERSION" = "null" ] || [ "$PACKAGE_VERSION" != "$NPM_VERSION" ]; then
|
|
echo "New version detected, should release"
|
|
echo "should_release=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "Package version already on NPM, skipping release"
|
|
echo "should_release=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
else
|
|
echo "Package version matches an existing release, skipping"
|
|
echo "should_release=false" >> $GITHUB_OUTPUT
|
|
fi |