Skip to content

Create GitHub Release #161

Create GitHub Release

Create GitHub Release #161

name: Create GitHub Release
on:
workflow_run:
workflows:
- Create Tag and Publish Package
types:
- completed
permissions:
contents: write
jobs:
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-tags: true
- name: Get latest tag
id: latest_tag
run: echo "tag=$(git describe --tags --abbrev=0 ${{ github.ref }})" >> "$GITHUB_OUTPUT"
- name: Extract package name from tag
id: extract_package
# yamllint disable-line rule:line-length
run: echo "package=$(echo ${{ steps.latest_tag.outputs.tag }} | sed -E 's#([^/]+)-[0-9]+\.[0-9]+\.[0-9]+.*#\1#')" >> "$GITHUB_OUTPUT"
- name: Extract version from tag
id: extract_version
# yamllint disable-line rule:line-length
run: echo "version=$(echo ${{ steps.latest_tag.outputs.tag }} | sed -E 's#[^/]+-([0-9]+\.[0-9]+\.[0-9]+.*)#\1#')" >> "$GITHUB_OUTPUT"
- name: Extract Changelog
id: changelog
uses: yashanand1910/[email protected]
with:
changelog_path: nodes/${{ steps.extract_package.outputs.package }}/CHANGELOG.md
version: ${{ steps.extract_version.outputs.version }}
- name: Store release notes
id: store_release_notes
run: |
RELEASE_NOTES_FILE=release_notes.txt
echo -e "${{ steps.changelog.outputs.release_notes }}" > $RELEASE_NOTES_FILE
echo "release_notes_file=$RELEASE_NOTES_FILE" >> "$GITHUB_OUTPUT"
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: pnpm
node-version-file: package.json
- name: Install dependencies
run: pnpm install
- name: Build package
run: pnpm exec nx build --project ${{ steps.extract_package.outputs.package }}
- name: Zip package
run: zip -9 -r -q ${{ steps.extract_package.outputs.package }}-${{ steps.extract_version.outputs.version }}.zip dist/nodes/${{ steps.extract_package.outputs.package }}/
- name: Tar package
run: tar --create --file ${{ steps.extract_package.outputs.package }}-${{steps.extract_version.outputs.version }}.tar.gz --gzip dist/nodes/${{ steps.extract_package.outputs.package }}/
- name: Create GitHub release
run: |
gh release create \
${{ steps.extract_package.outputs.package }}-${{ steps.extract_version.outputs.version }} \
${{ steps.extract_package.outputs.package }}-${{ steps.extract_version.outputs.version }}.zip \
${{ steps.extract_package.outputs.package }}-${{ steps.extract_version.outputs.version }}.tar.gz \
--notes-file ${{ steps.store_release_notes.outputs.release_notes_file }} \
--title "${{ steps.extract_package.outputs.package }} ${{ steps.extract_version.outputs.version }}" \
--verify-tag
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}