Skip to content

Commit 0b65abc

Browse files
authored
feat(ci): Changesets (#398)
* feat(ci): Changesets * lockfile * fmt * config file * fmt * :godmode: * changeset * remove release.yaml * remove unnecessary changeset config * oops, wrong deps * clean up changeset and reset sdk version to 0.0.0
1 parent 65ab8cc commit 0b65abc

File tree

11 files changed

+221
-87
lines changed

11 files changed

+221
-87
lines changed

.changeset/config.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"$schema": "https://unpkg.com/@changesets/config@2.2.0/schema.json",
3+
"changelog": "@changesets/cli/changelog",
4+
"commit": false,
5+
"fixed": [],
6+
"linked": [],
7+
"access": "public",
8+
"baseBranch": "develop",
9+
"updateInternalDependencies": "minor",
10+
"privatePackages": false,
11+
"ignore": ["dapp", "scripts"]
12+
}

.changeset/gold-knives-warn.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@iota/iota-names-sdk': minor
3+
---
4+
5+
First release of @iota/iota-names-sdk
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: Changesets Snapshot Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
tag:
7+
description: "Snapshot tag (e.g., experimental, beta, alpha)"
8+
required: false
9+
default: "experimental"
10+
type: string
11+
12+
concurrency: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.inputs.tag }}
13+
14+
jobs:
15+
snapshot:
16+
runs-on: self-hosted-x64
17+
steps:
18+
- name: checkout code repository
19+
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
20+
with:
21+
fetch-depth: 0
22+
23+
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
24+
- name: Install Nodejs
25+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
26+
with:
27+
node-version: "20"
28+
cache: "pnpm"
29+
30+
- name: Install dependencies
31+
run: pnpm install --frozen-lockfile
32+
33+
- name: Check for pending changesets
34+
id: check-changes
35+
run: |
36+
if [ -n "$(ls -A .changeset/*.md 2>/dev/null | grep -v README.md)" ]; then
37+
echo "has-changes=true" >> $GITHUB_OUTPUT
38+
echo "Found pending changesets:"
39+
ls -1 .changeset/*.md 2>/dev/null | grep -v README.md | head -5
40+
else
41+
echo "has-changes=false" >> $GITHUB_OUTPUT
42+
echo "No pending changesets found"
43+
fi
44+
45+
- name: Build packages
46+
if: steps.check-changes.outputs.has-changes == 'true'
47+
run: pnpm turbo run build --filter=./sdk
48+
49+
- name: NPM login
50+
if: steps.check-changes.outputs.has-changes == 'true'
51+
run: npm set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}"
52+
53+
- name: Create snapshot versions
54+
if: steps.check-changes.outputs.has-changes == 'true'
55+
run: |
56+
pnpm changeset version --snapshot ${{ github.event.inputs.tag }}
57+
58+
- name: Publish snapshot packages
59+
if: steps.check-changes.outputs.has-changes == 'true'
60+
run: |
61+
pnpm changeset publish --snapshot --tag ${{ github.event.inputs.tag }}
62+
63+
- name: Create summary
64+
if: steps.check-changes.outputs.has-changes == 'true'
65+
run: |
66+
echo "## Snapshot Release Summary" >> $GITHUB_STEP_SUMMARY
67+
echo "**Tag:** \`${{ github.event.inputs.tag }}\`" >> $GITHUB_STEP_SUMMARY
68+
echo "**Branch:** \`${{ github.ref_name }}\`" >> $GITHUB_STEP_SUMMARY
69+
echo "**Commit:** \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
70+
echo "" >> $GITHUB_STEP_SUMMARY
71+
echo "### Published Packages" >> $GITHUB_STEP_SUMMARY
72+
echo "Check the workflow logs for detailed package versions." >> $GITHUB_STEP_SUMMARY
73+
echo "" >> $GITHUB_STEP_SUMMARY
74+
echo "### Installation" >> $GITHUB_STEP_SUMMARY
75+
echo "Install snapshot packages using:" >> $GITHUB_STEP_SUMMARY
76+
echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
77+
echo "npm install @iota/iota-names-sdk@${{ github.event.inputs.tag }}" >> $GITHUB_STEP_SUMMARY
78+
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
79+
80+
- name: No changes detected
81+
if: steps.check-changes.outputs.has-changes == 'false'
82+
run: |
83+
echo "## No Pending Changesets" >> $GITHUB_STEP_SUMMARY
84+
echo "No pending changesets found. Snapshot release skipped." >> $GITHUB_STEP_SUMMARY
85+
echo "" >> $GITHUB_STEP_SUMMARY
86+
echo "To create a changeset, run \`pnpm changeset\` and select the packages you want to release." >> $GITHUB_STEP_SUMMARY

.github/workflows/changesets.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Changesets
2+
3+
on:
4+
## Allow triggering this workflow manually via GitHub CLI/web
5+
workflow_dispatch:
6+
push:
7+
branches:
8+
- develop
9+
10+
concurrency: ${{ github.workflow }}-${{ github.ref }}
11+
12+
jobs:
13+
version:
14+
runs-on: self-hosted-x64
15+
steps:
16+
- name: checkout code repository
17+
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
18+
with:
19+
fetch-depth: 0
20+
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
21+
- name: Install Nodejs
22+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
23+
with:
24+
node-version: "20"
25+
cache: "pnpm"
26+
- name: Install dependencies
27+
run: pnpm install --frozen-lockfile
28+
- name: Create Release Pull Request
29+
uses: changesets/action@f13b1baaa620fde937751f5d2c3572b9da32af23 # v1.4.5
30+
with:
31+
# Generates src/version.ts file using genVersion
32+
# https://github.com/changesets/action#with-version-script
33+
version: pnpm changeset-version
34+
env:
35+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Changesets CI
2+
3+
on:
4+
pull_request:
5+
types: [opened, reopened, synchronize, ready_for_review]
6+
7+
jobs:
8+
validate:
9+
if: (github.event.pull_request.draft == false || contains(github.event.pull_request.body, '[run-ci]'))
10+
runs-on: self-hosted-x64
11+
steps:
12+
- name: checkout code repository
13+
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
14+
with:
15+
fetch-depth: 0
16+
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
17+
- name: Install Nodejs
18+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
19+
with:
20+
node-version: "20"
21+
cache: "pnpm"
22+
- name: Install dependencies
23+
run: pnpm install --frozen-lockfile
24+
- id: diff
25+
name: Determine changed public packages from previous commit
26+
run: echo "hasChanges=$(pnpm list --filter "...[$(git rev-parse HEAD^1)]" --depth -1 --json | jq "any(.[] | select(.private != true) ; length > 0)")" >> $GITHUB_OUTPUT
27+
- name: Get changed files in the changesets folder
28+
id: has-changesets
29+
uses: tj-actions/changed-files@c3a1bb2c992d77180ae65be6ae6c166cf40f857c # v45.0.3
30+
with:
31+
files: |
32+
.changeset/**
33+
- name: Create missing changeset note if there are missing changesets
34+
if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true'
35+
run: |
36+
echo "true" > missing-changeset.txt
37+
- name: Upload missing changeset artifact
38+
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
39+
if: steps.has-changesets.outputs.any_changed != 'true' && steps.diff.outputs.hasChanges == 'true'
40+
with:
41+
name: missing-changeset
42+
path: missing-changeset.txt
43+
if-no-files-found: error
44+
retention-days: 1
45+
- name: Attempt to create snapshots.
46+
run: pnpm changeset version --snapshot test-do-not-publish
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Changesets Publish
2+
3+
on:
4+
workflow_dispatch:
5+
6+
concurrency: ${{ github.workflow }}-${{ github.ref }}
7+
8+
jobs:
9+
publish:
10+
runs-on: self-hosted-x64
11+
steps:
12+
- name: checkout code repository
13+
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
14+
with:
15+
fetch-depth: 0
16+
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
17+
- name: Install Nodejs
18+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
19+
with:
20+
node-version: "20"
21+
cache: "pnpm"
22+
- name: Install dependencies
23+
run: pnpm install --frozen-lockfile
24+
- name: NPM login
25+
run: npm set "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}"
26+
- name: Build packages
27+
run: pnpm turbo run build --filter=./sdk
28+
- name: Publish packages
29+
run: pnpm changeset-publish --no-git-tag

.github/workflows/release.yaml

Lines changed: 0 additions & 38 deletions
This file was deleted.

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@
3939
"lint:fix": "pnpm run eslint:fix && pnpm run prettier:fix",
4040
"sdk": "turbo --filter ./sdk",
4141
"dapp": "turbo --filter ./dapp",
42-
"prepare": "husky"
42+
"prepare": "husky",
43+
"changeset-publish": "pnpm changeset publish",
44+
"changeset-version": "pnpm changeset version"
4345
},
4446
"author": "",
4547
"license": "Apache-2.0",

pnpm-lock.yaml

Lines changed: 0 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
packages:
22
- "sdk"
33
- "build-scripts"
4-
- "scripts/**"
4+
- "scripts"
55
- "documentation/**"
6-
- "dapp/**"
6+
- "dapp"

0 commit comments

Comments
 (0)