Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 64 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,55 @@ jobs:
semver_string: ${{ github.ref_name }}
semver_pattern: '^release/(.*)$'

- name: update nextBump (release)
- name: Check version-policy version (release)
if: startsWith(github.ref_name, 'release/')
id: release_version_policy
env:
RELEASE_VERSION: ${{ steps.semver_release.outputs.full }}
run: |
node <<'NODE'
const fs = require('fs');
const policies = JSON.parse(fs.readFileSync('common/config/rush/version-policies.json', 'utf8'));
const policyVersion = policies[0] && policies[0].version;
const releaseVersion = process.env.RELEASE_VERSION;

const parseVersion = version => String(version).split('-')[0].split('.').map(Number);
const compareVersion = (a, b) => {
const av = parseVersion(a);
const bv = parseVersion(b);
for (let i = 0; i < Math.max(av.length, bv.length); i++) {
const diff = (av[i] || 0) - (bv[i] || 0);
if (diff !== 0) {
return diff;
}
}
return 0;
};

if (!releaseVersion || !policyVersion) {
console.error('Missing release version or version-policy version.', { releaseVersion, policyVersion });
process.exit(1);
}

const result = compareVersion(releaseVersion, policyVersion);
if (result < 0) {
console.error(
`Release version ${releaseVersion} is lower than version-policy version ${policyVersion}.`
);
process.exit(1);
}

const shouldSkip = result === 0 ? 'true' : 'false';
fs.appendFileSync(process.env.GITHUB_OUTPUT, `skip_next_bump=${shouldSkip}\n`);
console.log(
result === 0
? `Release version ${releaseVersion} equals version-policy version ${policyVersion}, skip nextBump update.`
: `Release version ${releaseVersion} is greater than version-policy version ${policyVersion}, update nextBump.`
);
NODE

- name: update nextBump (release)
if: startsWith(github.ref_name, 'release/') && steps.release_version_policy.outputs.skip_next_bump != 'true'
uses: xile611/set-next-bump-of-rush@main
with:
release_version: ${{ steps.semver_release.outputs.full }}
Expand Down Expand Up @@ -309,8 +356,23 @@ jobs:
echo "Build packages: ${package_names[*]}"
node common/scripts/install-run-rush.js build "${build_args[@]}"

- name: Publish to npm (release)
- name: Check npm version (release)
if: startsWith(github.ref_name, 'release/')
id: npm_version_release
env:
PACKAGE_VERSION: ${{ steps.semver_release.outputs.main }}
run: |
set -euo pipefail
if npm view "@visactor/vtable@$PACKAGE_VERSION" version --registry=https://registry.npmjs.org >/dev/null 2>&1; then
echo "Version $PACKAGE_VERSION already exists on npm, skip publish."
echo "skip_publish=true" >> "$GITHUB_OUTPUT"
else
echo "Version $PACKAGE_VERSION does not exist on npm, continue publish."
echo "skip_publish=false" >> "$GITHUB_OUTPUT"
fi

- name: Publish to npm (release)
if: startsWith(github.ref_name, 'release/') && steps.npm_version_release.outputs.skip_publish != 'true'
run: node common/scripts/install-run-rush.js publish --publish --include-all --tag latest

- name: Update shrinkwrap
Expand Down
Loading