Skip to content

Commit df29500

Browse files
authored
Merge pull request #16 from classmethod/feat-ci
feat: GitHub Actions CI/CDワークフローの追加
2 parents 14f27bb + e1bb31e commit df29500

File tree

4 files changed

+117
-1
lines changed

4 files changed

+117
-1
lines changed

.claude/commands/release.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
new_version = get_version_without_v_prefix($ARGUMENTS) # 例: 1.0.0
2+
new_version_with_v_prefix = get_version_with_v_prefix($ARGUMENTS) # 例: v1.0.0
3+
4+
new_versionの指定がない場合、patchバージョンを現在のバージョンから+1した値をnew_version,new_version_with_v_prefixに設定します。
5+
6+
1. 現在 main ブランチにいることを確認します。main ブランチでない場合は、この操作を中止します。
7+
2. `git pull` を実行します。
8+
3. `git checkout -b release/{new_version_with_v_prefix}` を実行します。
9+
4. `src/cli/index.ts` 内のバージョンを更新します。その後、`git add` と `git commit` を実行します。
10+
5. `pnpm version {new_version} --no-git-tag-version` でバージョンを更新します。
11+
6. `package.json` が変更されるため、`git commit` と `git push` を実行します。
12+
7. `gh pr create` と `gh pr merge` を実行して、リリースブランチを main ブランチにマージします。
13+
8. 前のバージョンタグと現在のコミット間のコード変更を比較して、リリース説明を準備します。
14+
- 英語で記述します。
15+
- 機密情報は含めません。
16+
- `What's Changed`、`Contributors`、`Full Changelog` のセクションが必要です。
17+
- `./tmp/release-notes.md` をリリースノートとして使用します。
18+
9. 予防措置として、リリース内容に非公開にすべき情報が含まれていないことを確認します。
19+
10. `gh release create {new_version_with_v_prefix} --title {new_version_with_v_prefix} --notes-file ./tmp/release-notes.md ...` コマンドを使用して、`github.com/classmethod/tsumiki` リポジトリでタイトルとタグの両方を new_version_with_v_prefix に設定し、ステップ4の内容を説明として使用してリリースを作成します。
20+
11. main ブランチに戻ります。

.github/workflows/ci.yml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
quality:
11+
name: Code Quality & Tests
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v4
17+
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v4
20+
with:
21+
node-version: '24'
22+
23+
- name: Install pnpm
24+
uses: pnpm/action-setup@v2
25+
with:
26+
version: 10.13.1
27+
28+
- name: Install dependencies
29+
run: pnpm install --ignore-scripts
30+
31+
- name: Check no files generated after install
32+
run: |
33+
if [ -n "$(git status --porcelain)" ]; then
34+
echo "Error: Files were generated or modified after pnpm install"
35+
git status --porcelain
36+
exit 1
37+
fi
38+
39+
- name: Run check
40+
run: pnpm check
41+
42+
- name: Run secretlint
43+
run: pnpm secretlint
44+
45+
- name: Run typecheck
46+
run: pnpm typecheck
47+
48+
- name: Build project
49+
run: pnpm build

.github/workflows/release.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Release
2+
3+
on:
4+
release:
5+
types: [created]
6+
7+
jobs:
8+
publish:
9+
name: Publish to NPM
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
with:
16+
ref: main
17+
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v4
20+
with:
21+
node-version: '24'
22+
registry-url: 'https://registry.npmjs.org'
23+
24+
- name: Install pnpm
25+
uses: pnpm/action-setup@v2
26+
with:
27+
version: 10.13.1
28+
29+
- name: Install dependencies
30+
run: pnpm install
31+
32+
- name: Run quality checks
33+
run: |
34+
pnpm check
35+
pnpm secretlint
36+
pnpm typecheck
37+
38+
- name: Publish to npm
39+
run: pnpm publish
40+
env:
41+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,17 @@ Thumbs.db
1717

1818
# Dependencies
1919
node_modules/
20+
.pnpm-store/
2021
package-lock.json
2122
yarn.lock
2223
pnpm-lock.yaml
2324

2425
# Build output
2526
dist/
2627
*.tsbuildinfo
27-
assets/
28+
29+
# Claude Code
30+
.claude/settings.local.json
31+
32+
# Others
33+
tmp/

0 commit comments

Comments
 (0)