mirror of https://github.com/acid-info/lsd.git
84 lines
2.7 KiB
YAML
84 lines
2.7 KiB
YAML
|
name: Publish
|
||
|
on:
|
||
|
pull_request:
|
||
|
branches:
|
||
|
- 'main'
|
||
|
types:
|
||
|
- closed
|
||
|
|
||
|
concurrency:
|
||
|
group: ${{ github.workflow }}
|
||
|
cancel-in-progress: false
|
||
|
|
||
|
jobs:
|
||
|
publish:
|
||
|
if: ${{ (github.head_ref == 'release-stable' || github.head_ref == 'release-beta') && github.event.pull_request.merged == true }}
|
||
|
runs-on: ubuntu-latest
|
||
|
steps:
|
||
|
- uses: actions/checkout@v4
|
||
|
with:
|
||
|
fetch-depth: 0
|
||
|
fetch-tags: 1
|
||
|
|
||
|
- name: Extract version from lerna.json
|
||
|
run: echo "value=$(jq .version lerna.json -r)" >> $GITHUB_OUTPUT
|
||
|
id: current_version
|
||
|
|
||
|
- name: Determine Release type
|
||
|
shell: bash
|
||
|
run: echo "value=$([[ ${{ steps.current_version.outputs.value }} =~ beta ]] && echo "beta" || echo "stable")" >> $GITHUB_OUTPUT
|
||
|
id: release_type
|
||
|
|
||
|
- uses: actions/setup-node@v3
|
||
|
with:
|
||
|
node-version: '18'
|
||
|
cache: 'yarn'
|
||
|
|
||
|
- name: Install dependencies
|
||
|
run: |
|
||
|
yarn install --frozen-lockfile
|
||
|
yarn lerna link
|
||
|
|
||
|
- name: Bump versions
|
||
|
id: bump
|
||
|
run: |
|
||
|
git config --global user.name 'github-actions';
|
||
|
git config --global user.email 'github-actions@users.noreply.github.com';
|
||
|
echo ".npmrc" >> .git/info/exclude
|
||
|
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > .npmrc;
|
||
|
yarn lerna publish from-package --summary-file=${{ runner.temp }}/ --yes
|
||
|
env:
|
||
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||
|
|
||
|
- name: Get release commit
|
||
|
shell: bash
|
||
|
run: |
|
||
|
COMMIT_HASH=$(git rev-parse --verify HEAD);
|
||
|
echo "sha=$COMMIT_HASH" >> $GITHUB_OUTPUT
|
||
|
id: release_commit
|
||
|
|
||
|
- uses: actions/github-script@v6
|
||
|
with:
|
||
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||
|
script: |
|
||
|
const fs = require('fs');
|
||
|
const releaseType = "${{ steps.release_type.outputs.value }}";
|
||
|
const summary = JSON.parse(fs.readFileSync('${{ runner.temp }}/lerna-publish-summary.json', 'utf8'));
|
||
|
const packages = summary.map(pkg => `**${pkg.packageName}@${pkg.version}**\n\`\`\`bash\nyarn add ${pkg.packageName}@${{ steps.branch_name.outputs.name }}\n\`\`\``).join('\n');
|
||
|
|
||
|
const body = `🎉 ${releaseType === 'stable' ? "Stable" : "Beta"} Release!\n\n${packages}`
|
||
|
|
||
|
github.rest.issues.createComment({
|
||
|
issue_number: context.issue.number,
|
||
|
owner: context.repo.owner,
|
||
|
repo: context.repo.repo,
|
||
|
body: body
|
||
|
});
|
||
|
|
||
|
github.rest.repos.createCommitComment({
|
||
|
commit_sha: "${{ steps.release_commit.outputs.sha }}",
|
||
|
owner: context.repo.owner,
|
||
|
repo: context.repo.repo,
|
||
|
body,
|
||
|
});
|