Release package #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release package | |
on: | |
workflow_dispatch: | |
inputs: | |
release-type: | |
description: 'Release type (one of): patch, minor, major, prepatch, preminor, premajor, prerelease' | |
required: true | |
type: choice | |
options: | |
- patch | |
- minor | |
- major | |
## Pre-releases not currently supported | |
# - prepatch | |
# - preminor | |
# - premajor | |
# - prerelease | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout project repository | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# Setup Node.js environment | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
with: | |
registry-url: https://registry.npmjs.org/ | |
node-version: 20 | |
# Install package dependencies | |
- name: Install IKONO package dependencies | |
run: npm ci | |
# Configure Git | |
- name: Git configuration | |
run: | | |
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
git config --global user.name "GitHub Actions" | |
# Bump package version | |
# Use tag latest | |
- name: Bump release version | |
if: startsWith(github.event.inputs.release-type, 'pre') != true | |
run: | | |
echo "NEW_VERSION=$(npm --no-git-tag-version version $RELEASE_TYPE)" >> $GITHUB_ENV | |
echo "RELEASE_TAG=latest" >> $GITHUB_ENV | |
env: | |
RELEASE_TYPE: ${{ github.event.inputs.release-type }} | |
# Bump package pre-release version | |
# Use tag beta for pre-release versions | |
- name: Bump pre-release version | |
if: startsWith(github.event.inputs.release-type, 'pre') | |
run: | | |
echo "NEW_VERSION=$(npm --no-git-tag-version --preid=beta version $RELEASE_TYPE | |
echo "RELEASE_TAG=beta" >> $GITHUB_ENV | |
env: | |
RELEASE_TYPE: ${{ github.event.inputs.release-type }} | |
- name: Bump all sub-packages to new version and update meta.json/CHANGELOG | |
run: | | |
npm run bump:version | |
# Update changelog unreleased section with new version | |
- name: Update changelog | |
uses: superfaceai/release-changelog-action@v1 | |
with: | |
path-to-changelog: CHANGELOG.md | |
version: ${{ env.NEW_VERSION }} | |
operation: release | |
# Commit changes | |
- name: Commit CHANGELOG.md and package.json changes and create tag | |
run: | | |
git add "package.json" | |
git add "react/package.json" | |
git add "CHANGELOG.md" | |
git commit -m "release ${{ env.NEW_VERSION }}" | |
git tag ${{ env.NEW_VERSION }} | |
# Read version changelog | |
- id: get-changelog | |
name: Get version changelog | |
uses: superfaceai/release-changelog-action@v1 | |
with: | |
path-to-changelog: CHANGELOG.md | |
version: ${{ env.NEW_VERSION }} | |
operation: read | |
- name: Create Pull Request with new version | |
uses: peter-evans/create-pull-request@v5 | |
with: | |
token: ${{ secrets.IKONO_TOKEN }} # Use default GITHUB_TOKEN | |
commit-message: 'Release IKONO ${{ env.NEW_VERSION }}' | |
title: 'Release IKONO ${{ env.NEW_VERSION }}' | |
body: | | |
This is an automatically generated MR to release IKONO ${{ env.NEW_VERSION }}. | |
Changelog: | |
${{ steps.get-changelog.outputs.changelog }} | |
base: main # The branch to merge into | |
branch: release-${{ env.NEW_VERSION}} # The branch where the commit is made | |
labels: automated-pr |