Beta Release #29
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: Beta Release | |
on: | |
workflow_dispatch: | |
inputs: | |
branch: | |
description: 'Branch to use' | |
required: true | |
default: 'develop' | |
nodeVersion: | |
description: 'Node version' | |
required: true | |
default: '20.9.0' | |
type: string | |
betaVersionSuffix: | |
description: 'Beta version suffix (e.g., beta.0, beta.1)' | |
required: true | |
default: 'beta.0' | |
type: string | |
includeAngular17: | |
description: 'Include Angular 17 package?' | |
required: false | |
default: 'false' | |
type: choice | |
options: | |
- 'true' | |
- 'false' | |
includeAngular: | |
description: 'Include Angular package?' | |
required: false | |
default: 'false' | |
type: choice | |
options: | |
- 'true' | |
- 'false' | |
includeReact: | |
description: 'Include React package?' | |
required: false | |
default: 'false' | |
type: choice | |
options: | |
- 'true' | |
- 'false' | |
jobs: | |
beta-release-core: | |
runs-on: ubuntu-latest | |
env: | |
WORKING_DIRECTORY: packages/core | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.branch }} | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ inputs.nodeVersion }} | |
registry-url: 'https://registry.npmjs.org/' | |
- name: Set Tegel user | |
run: | | |
git config --global user.name "Tegel - Scania" | |
git config --global user.email "[email protected]" | |
- name: Core - Update version with beta name | |
working-directory: ${{ env.WORKING_DIRECTORY }} | |
run: | | |
current_version=$(jq -r '.version' package.json | sed 's/-[a-zA-Z0-9.\-]*$//') | |
beta_version_suffix="${{ inputs.betaVersionSuffix }}" | |
new_version="${current_version}-${beta_version_suffix}" | |
echo "Updating package.json version to $new_version" | |
jq ".version = \"$new_version\"" package.json > package.tmp.json | |
mv package.tmp.json package.json | |
- name: Install dependencies in root | |
run: npm install | |
- name: Core - Install | |
working-directory: ${{ env.WORKING_DIRECTORY }} | |
run: npm install | |
- name: Core - Run build | |
working-directory: ${{ env.WORKING_DIRECTORY }} | |
run: npm run build | |
- name: Check if version already exists | |
id: check-version | |
working-directory: ${{ env.WORKING_DIRECTORY }} | |
run: | | |
PACKAGE_NAME=$(jq -r '.name' package.json) | |
PACKAGE_VERSION=$(jq -r '.version' package.json) | |
if npm view "$PACKAGE_NAME@$PACKAGE_VERSION" version > /dev/null 2>&1; then | |
echo "Version $PACKAGE_VERSION already exists. Skipping publish." | |
echo "VERSION_EXISTS=true" >> $GITHUB_ENV | |
else | |
echo "VERSION_EXISTS=false" >> $GITHUB_ENV | |
fi | |
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_OUTPUT | |
- name: Core - Publish | |
if: env.VERSION_EXISTS != 'true' | |
working-directory: ${{ env.WORKING_DIRECTORY }} | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: npm publish --access public --tag beta | |
outputs: | |
version: ${{ steps.check-version.outputs.PACKAGE_VERSION }} | |
version_exists: ${{ env.VERSION_EXISTS }} | |
beta-release-angular-17: | |
if: ${{ github.event.inputs.includeAngular17 == 'true' }} | |
needs: beta-release-core | |
runs-on: ubuntu-latest | |
env: | |
WORKING_DIRECTORY: packages/angular-17 | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.branch }} | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ inputs.nodeVersion }} | |
registry-url: 'https://registry.npmjs.org' | |
- name: Set Tegel user | |
run: | | |
git config --global user.name "Tegel - Scania" | |
git config --global user.email "[email protected]" | |
- name: Install dependencies in root | |
run: npm install | |
- name: Core - Install | |
working-directory: packages/core | |
run: npm install | |
- name: Angular-17 workspace - Install | |
working-directory: packages/angular-17 | |
run: npm install | |
- name: Update @scania/tegel peerDependency in Angular-17 workspace | |
working-directory: packages/angular-17 | |
run: | | |
echo "Updating @scania/tegel to version ${{ needs.beta-release-core.outputs.version }} in package.json" | |
jq ".peerDependencies[\"@scania/tegel\"] = \"${{ needs.beta-release-core.outputs.version }}\"" package.json > package.tmp.json | |
mv package.tmp.json package.json | |
- name: Angular-17 wrapper - Install | |
working-directory: packages/angular-17/projects/components | |
run: npm install | |
- name: Update @scania/tegel peerDependency and version in Angular-17 wrapper | |
id: set-version | |
working-directory: packages/angular-17/projects/components | |
run: | | |
echo "Updating @scania/tegel to version ${{ needs.beta-release-core.outputs.version }} and setting package version" | |
current_version=$(jq -r '.version' package.json | sed 's/-[a-zA-Z0-9.\-]*$//') | |
beta_version_suffix="${{ inputs.betaVersionSuffix }}" | |
NEW_VERSION="${current_version}-${beta_version_suffix}" | |
echo "Setting new version: $NEW_VERSION" | |
jq ".peerDependencies[\"@scania/tegel\"] = \"${{ needs.beta-release-core.outputs.version }}\" | .version = \"$NEW_VERSION\"" package.json > package.tmp.json | |
mv package.tmp.json package.json | |
echo "PACKAGE_VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT | |
- name: Install @scania/tegel as dev dependency for build | |
working-directory: packages/angular-17/projects/components | |
run: npm install @scania/tegel@${{ needs.beta-release-core.outputs.version }} --save-dev | |
- name: Angular-17 - Run build | |
run: npm run build:angular-17 | |
- name: Check if Angular-17 version already exists | |
id: check-version | |
working-directory: packages/angular-17/dist/components | |
run: | | |
PACKAGE_NAME=$(jq -r '.name' package.json) | |
PACKAGE_VERSION=${{ steps.set-version.outputs.PACKAGE_VERSION }} | |
if npm view "$PACKAGE_NAME@$PACKAGE_VERSION" version > /dev/null 2>&1; then | |
echo "Version $PACKAGE_VERSION already exists. Skipping publish." | |
echo "VERSION_EXISTS=true" >> $GITHUB_ENV | |
else | |
echo "VERSION_EXISTS=false" >> $GITHUB_ENV | |
fi | |
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_OUTPUT | |
- name: Angular-17 - Publish | |
if: env.VERSION_EXISTS != 'true' | |
working-directory: packages/angular-17/dist/components | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: npm publish --access public --tag beta | |
outputs: | |
version: ${{ steps.set-version.outputs.PACKAGE_VERSION }} | |
version_exists: ${{ env.VERSION_EXISTS }} | |
beta-release-angular: | |
if: ${{ github.event.inputs.includeAngular == 'true' }} | |
needs: beta-release-core | |
runs-on: ubuntu-latest | |
env: | |
WORKING_DIRECTORY: packages/angular | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.inputs.branch }} | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ inputs.nodeVersion }} | |
registry-url: 'https://registry.npmjs.org' | |
- name: Configure Git user | |
run: | | |
git config --global user.name "Tegel - Scania" | |
git config --global user.email "[email protected]" | |
- name: Install root dependencies | |
run: npm install | |
- name: Install Core dependencies | |
working-directory: packages/core | |
run: npm install | |
- name: Update Angular package version and dependency | |
id: set-version | |
working-directory: packages/angular | |
run: | | |
echo "Updating Angular package version and dependency" | |
current_version=$(jq -r '.version' package.json | sed 's/-[a-zA-Z0-9.\-]*$//') | |
beta_version_suffix="${{ inputs.betaVersionSuffix }}" | |
new_version="${current_version}-${beta_version_suffix}" | |
echo "Setting new version: $new_version" | |
jq ".version = \"$new_version\" | .dependencies[\"@scania/tegel\"] = \"${{ needs.beta-release-core.outputs.version }}\"" package.json > package.tmp.json | |
mv package.tmp.json package.json | |
echo "PACKAGE_VERSION=$new_version" >> $GITHUB_OUTPUT | |
- name: Install Angular dependencies | |
working-directory: packages/angular | |
run: npm install | |
- name: Build Angular package | |
run: npm run build:angular | |
- name: Check if Angular version already exists | |
id: check-version | |
working-directory: packages/angular | |
run: | | |
PACKAGE_NAME=$(jq -r '.name' package.json) | |
PACKAGE_VERSION=${{ steps.set-version.outputs.PACKAGE_VERSION }} | |
if npm view "$PACKAGE_NAME@$PACKAGE_VERSION" version > /dev/null 2>&1; then | |
echo "Version $PACKAGE_VERSION already exists. Skipping publish." | |
echo "VERSION_EXISTS=true" >> $GITHUB_ENV | |
else | |
echo "VERSION_EXISTS=false" >> $GITHUB_ENV | |
fi | |
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_OUTPUT | |
- name: Publish Angular package to NPM | |
if: env.VERSION_EXISTS != 'true' | |
working-directory: packages/angular | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: npm publish --tag beta | |
outputs: | |
version: ${{ steps.set-version.outputs.PACKAGE_VERSION }} | |
version_exists: ${{ env.VERSION_EXISTS }} | |
beta-release-react: | |
if: ${{ github.event.inputs.includeReact == 'true' }} | |
needs: beta-release-core | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.inputs.branch }} | |
fetch-depth: 0 | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ inputs.nodeVersion }} | |
registry-url: 'https://registry.npmjs.org' | |
- name: Configure Git user | |
run: | | |
git config --global user.name "Tegel - Scania" | |
git config --global user.email "[email protected]" | |
- name: Install root dependencies | |
run: npm install | |
- name: Install Core dependencies | |
working-directory: packages/core | |
run: npm install | |
- name: Update React package version and dependency | |
id: set-version | |
working-directory: packages/react | |
run: | | |
echo "Updating React package version and dependency" | |
current_version=$(jq -r '.version' package.json | sed 's/-[a-zA-Z0-9.\-]*$//') | |
beta_version_suffix="${{ inputs.betaVersionSuffix }}" | |
new_version="${current_version}-${beta_version_suffix}" | |
echo "Setting new version: $new_version" | |
jq ".version = \"$new_version\" | .dependencies[\"@scania/tegel\"] = \"${{ needs.beta-release-core.outputs.version }}\"" package.json > package.tmp.json | |
mv package.tmp.json package.json | |
echo "PACKAGE_VERSION=$new_version" >> $GITHUB_OUTPUT | |
- name: Install React dependencies | |
working-directory: packages/react | |
run: npm install | |
- name: Build React package | |
run: npm run build:react | |
- name: Check if React version already exists | |
id: check-version | |
working-directory: packages/react | |
run: | | |
PACKAGE_NAME=$(jq -r '.name' package.json) | |
PACKAGE_VERSION=${{ steps.set-version.outputs.PACKAGE_VERSION }} | |
if npm view "$PACKAGE_NAME@$PACKAGE_VERSION" version > /dev/null 2>&1; then | |
echo "Version $PACKAGE_VERSION already exists. Skipping publish." | |
echo "VERSION_EXISTS=true" >> $GITHUB_ENV | |
else | |
echo "VERSION_EXISTS=false" >> $GITHUB_ENV | |
fi | |
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_OUTPUT | |
- name: Publish React package to NPM | |
if: env.VERSION_EXISTS != 'true' | |
working-directory: packages/react | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: npm publish --tag beta | |
outputs: | |
version: ${{ steps.set-version.outputs.PACKAGE_VERSION }} | |
version_exists: ${{ env.VERSION_EXISTS }} |