Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: add updated release process for ITS #286

Merged
merged 6 commits into from
Oct 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
11 changes: 11 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@3.0.3/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "restricted",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
24 changes: 24 additions & 0 deletions .github/actions/nodejs-ci/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Install node.js dependencues
description: 'Setup node.js and install dependencies'

inputs:
node-version:
description: 'The version of node.js CLI to install'
required: true
default: '18'

runs:
using: 'composite'

steps:
- name: Setup Node
# TODO: consider while migrating the `setup-node` action later the usage of `blacksmith` actions
uses: useblacksmith/setup-node@v5
with:
node-version: '${{ inputs.node-version }}'
cache: 'npm'
registry-url: 'https://registry.npmjs.org'

- name: Install dependencies
shell: bash
run: npm ci
20 changes: 20 additions & 0 deletions .github/actions/setup-tools/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Setup tools
description: 'Setup tools for repo workflows'

inputs:
install-nodejs:
description: "Install nodejs and setup repo's npm package"
required: false
default: 'false'

runs:
using: 'composite'
steps:
# This Action bundles other reusable actions in case needed.

# Install Node.js and its dependencies
- name: Setup node.js and install dependencies
if: inputs.install-nodejs == 'true'
uses: ./.github/actions/nodejs-ci
with:
node-version: '18' # Version is hardcoded across all other steps to ensure stability of the code, although the `package.json` has `>=18` engine version
20 changes: 7 additions & 13 deletions .github/workflows/codecov.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
name: Coverage
name: Code Coverage

on:
pull_request:
push:
branches:
- main
- releases/**

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -16,17 +12,15 @@ jobs:
runs-on: blacksmith-2vcpu-ubuntu-2204

steps:
- uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4

- name: Install Node.js
uses: useblacksmith/setup-node@v5
- name: Setup tools
uses: ./.github/actions/setup-tools
with:
node-version: 18.x
cache: 'npm'

- name: Install Dependencies
run: npm ci
install-nodejs: 'true'

# Step to do builds and check for warnings
- name: Build
run: npm run build > build.log 2>&1

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/conventional-commits.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ concurrency:

jobs:
ensure-CC:
runs-on: ubuntu-latest
runs-on: blacksmith-2vcpu-ubuntu-2204

steps:
- name: semantic-pull-request
uses: amannn/action-semantic-pull-request@v3.2.6
uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/create-release-pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# This workflow concerns the preparation of the `changeset` PR and keeping it updated by tracking the changes on `main` branch.
name: Create Release PR

on:
workflow_dispatch:

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs:
create-release-pr:
name: Create Release PR
runs-on: blacksmith-2vcpu-ubuntu-2204
steps:
- name: Check if a branch is whitelisted and maintained
id: branch-check
run: |
BRANCH_NAME="${GITHUB_REF#refs/heads/}"
WHITELISTED_BRANCHES=("main" "releases/*")

IS_WHITELISTED=false
# Check the branch against the whitelist using wildcard matching
for BRANCH in "${WHITELISTED_BRANCHES[@]}"; do
if [[ "$BRANCH_NAME" == $BRANCH ]]; then
IS_WHITELISTED=true;
break;
fi
done

if [ "$IS_WHITELISTED" == true ]; then
echo "Branch is whitelisted: $BRANCH_NAME"
else
echo "Branch $BRANCH_NAME is not whitelisted."
exit 1
fi

echo "branch_name=${BRANCH_NAME}" >> "$GITHUB_OUTPUT"

- name: Checkout Repo
uses: actions/checkout@v4
with:
persist-credentials: false
ref: ${{ steps.branch-check.outputs.branch_name }}

- name: Check for changeset files
run: |
if ! ls .changeset/*.md | grep -q '\.changeset\/[a-z-]\+\.md$'; then
echo "No changeset files found. Exiting workflow."
exit 1
fi

echo "Changeset files found. Continuing with the workflow."

- name: Setup tools
uses: ./.github/actions/setup-tools
with:
install-nodejs: 'true'

# Keep the version of the PRs up-to-date
- name: Create Release Pull Request
id: release-pr
uses: changesets/action@aba318e9165b45b7948c60273e0b72fce0a64eb9 # v1.4.7
with:
# This branch context is ignored in this step: https://github.com/changesets/action/blob/50750fa876cc1e54c7cb972db5e2f7271fc53d99/src/run.ts#L328, therefore the usage of `branch`
branch: ${{ steps.branch-check.outputs.branch_name }}
title: 'chore(release): bump version and update changelog'
commit: 'chore(release): bump version and update changelog'
env:
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
15 changes: 6 additions & 9 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Linting

on:
- pull_request
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
Expand All @@ -12,16 +12,13 @@ jobs:
runs-on: blacksmith-2vcpu-ubuntu-2204

steps:
- uses: actions/checkout@v4
- name: Checkout code
uses: actions/checkout@v4

- name: Install Node.js
uses: useblacksmith/setup-node@v5
- name: Setup tools
uses: ./.github/actions/setup-tools
with:
node-version: 18.x
cache: 'npm'

- name: Install Dependencies
run: npm ci
install-nodejs: 'true'

- name: Lint
run: npm run lint
Expand Down
61 changes: 0 additions & 61 deletions .github/workflows/publish-bytecode.yaml

This file was deleted.

43 changes: 0 additions & 43 deletions .github/workflows/publish-to-npm.yaml

This file was deleted.

34 changes: 0 additions & 34 deletions .github/workflows/release-dry-run.yaml

This file was deleted.

27 changes: 27 additions & 0 deletions .github/workflows/release-snapshot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# This workflow publishes snapshot releases as an npm package. These releases aren't supposed to be reusable in `production` environments.
# It's triggered manually in case a snapshot release would be needed for testing purposes.
name: Release Snapshot

on:
workflow_dispatch:

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs:
release-snapshot:
name: Release Snapshot
runs-on: blacksmith-2vcpu-ubuntu-2204
steps:
- name: Checkout Repo
uses: actions/checkout@v4

- name: Setup tools
uses: ./.github/actions/setup-tools
with:
install-nodejs: 'true'

- name: Build and Publish a Snapshot to NPM
run: |
npm run release-snapshot
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
Loading
Loading