Skip to content

Beta Release

Beta Release #37

Workflow file for this run

name: Beta Release
on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to use'
required: true
default: 'develop'
nodeVersion:
description: 'Node version'
required: true
default: '22.11.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 }}