re:Inventで存在を知り、それ以降夢中になっているワークショップがこちらです。社内向けにも実施し大盛況でした。
Accelerating Smart Product SDLC with AI Agent Workshop
re:Inventの速報は会社の技術ブログで投稿しております。こちらもぜひご覧ください!
社内ではGitBucketを使っているところがあるようで、そこの方々にも実施してもらいたくてカスタマイズしてみました。
半年くらい前にGitBucket MCPサーバーを作りました!こちらもよかったらどうぞ
変更点
大きな変更点はこちらです。
- GitLabをGitBucketに変更
- Kiro CLIの代わりにKiro IDE(Windows版)で動作確認
- steeringファイルをWindows向けにカスタマイズする方法を追加
とりあえずLab2は実施できました。Lab3はどうしてもLinux環境が必要でしたので、今回は対象外としました。
Lab3は組込開発をAWS上で行うためのアレコレが詰まっているので、これまたオススメです!
カスタマイズ版:開発環境の準備
事前準備のステップ4「ステップ 4: 開発環境の準備をする」の代わりに以下の手順を行います。
GitBucketを起動
-
GitBucketの公式リポジトリのリリースページから、最新の.warファイルを入手
-
GitBucketを起動
java.exe -jar gitbucket.warデフォルトではユーザーのホームパス(C:\Users*****)に
.gitbucketフォルダーが作成され使用されます。場所を変えたい場合は、java.exe -jar gitbucket.war --gitbucket.home=.gitbucketのように指定が可能です。このコマンドの場合はコマンド実行フォルダーに.gitbucketフォルダーが作成されます。 -
ブラウザで
localhost:8080にアクセスします初期作成される管理はアカウントへは、ユーザー名「root」パスワード「root」でサインインできます
ユーザーを追加
-
GitBucketにユーザーを追加します
rootユーザーでサインインをした状態で、右上メニューを開き「System administration」を選択します
-
右上の「New user」ボタンをクリックし、ユーザーを追加します
-
自分自身とKiro-agentの2つのユーザーを追加します
メールアドレスの入力は必須ですが、特にメールが送信されることはありませんし、ダミーのアドレスでもOKです
リポジトリを追加
-
リポジトリを作成します
画面右上のメニューから一度サインアウトし、先程作成した自分自身のユーザーでサインインします
その上で右上の「+」ボタンから「New repository」を選択し、リポジトリを作成します
Repository nameは「Workshop」とし、Privateとして作成します
-
リポジトリのCollaboratorsとしてKiro-agentを追加
左メニューにある「Settings」を選択します
-
「Collaborators」タブを選択しCollaboratorsとして「Kiro-agent」を追加します(入力したうえで「Add」ボタン)
そして「Apply changes」をクリックします
アクセストークンを生成
-
Kiro-agentがAPIでアクセスするのでトークンを生成します
一度サインアウトし、Kiro-agentでサインインします
右上のメニューにある「Account settings」を選択します
-
左メニューにある「Applications」を選択します
-
Token descriptionになにか入力し、「Generate token」をクリックします
画面にトークンが表示されるのでメモします。この画面を閉じると再表示はできないのでご注意ください
環境変数をセット
以下の3つを環境変数にセットします。
- GITBUCKET_DOMAIN:
localhost:8080 - GITBUCKET_REPOSITORY:
ユーザー名/Workshop - GITBUCKET_TOKEN: 生成したアクセストークン
環境変数をセットしたあとは、Kiroを再起動しましょう。
Steeringファイルの内容をWindows+GitBucket環境向けに変更
主な変更点は以下の2つです。特に2つ目の方は、コマンドやオプション違い、文字化け対策をしておく必要があります。
- GitLabの代わりにGitBucketを使用する
- チケット操作の方法をWindowsのcurl.exeを使用するように調整
解凍したzipファイルのルートフォルダーをKiroで開きます(次のキャプチャの状態)
右側のチャット欄でVibeモードを選択した状態で、次のプロンプトを送信します。
GitLabの記述をGitBucketの変更するプロンプト
GitLabを使用するワークショップをGitBucketを使用するワークショップに変更します。
カレントフォルダー配下にあるMarkdownファイルに対して、GitLabに関する記述をすべてGitBucketに置き換えてください。
- GitBucketの使用方法については以下を参照してください。
- 以下に使用方法の記載がないAPIがあれば推測で書き換えず、ユーザーに判断を仰いでください。
## GitBucket (ITS: Issue Tracking System) Project Information
Use environment variables for GitBucket project information
- GitBucket domain (FQDN): $GITBUCKET_DOMAIN
- GitBucket repository (owner/repo): $GITBUCKET_REPOSITORY
- GitBucket Access Token: $GITBUCKET_TOKEN
## GitBucket Operations (Specify ITS API to use)
- API URL: http://${GITBUCKET_DOMAIN}/api/v3/
- Required parameters: `-H "Authorization: Bearer ${GITBUCKET_TOKEN}" -H "Content-Type: application/json"`
### Operation Examples
```powershell
# List repositories
curl.exe "http://${env:GITBUCKET_DOMAIN}/api/v3/repositories" `
-H "Authorization: Bearer ${env:GITBUCKET_TOKEN}"
# List issues for a repository
curl.exe "http://${env:GITBUCKET_DOMAIN}/api/v3/repos/${env:GITBUCKET_REPOSITORY}/issues" `
-H "Authorization: Bearer ${env:GITBUCKET_TOKEN}" | jq -r '.[]| {number, title, body}'
```
### GitBucket Issue Operation JSON Format Examples
#### Create Issue
```powershell
curl.exe -X POST "http://${env:GITBUCKET_DOMAIN}/api/v3/repos/${env:GITBUCKET_REPOSITORY}/issues" `
-H "Authorization: Bearer ${env:GITBUCKET_TOKEN}" `
-H "Content-Type: application/json" `
--data '{
"title": "Fix API endpoint bug",
"body": "## Problem\n- Endpoint `/api/fleet/status` returns 500 error\n\n## Reproduction Steps\n1. Start server\n2. Access endpoint\n\n## Expected Behavior\n- Return valid JSON response",
"labels": ["bug", "backend"],
"assignees": ["username"]
}'
```
#### Add Issue Comment
```powershell
curl.exe -X POST "http://${env:GITBUCKET_DOMAIN}/api/v3/repos/${env:GITBUCKET_REPOSITORY}/issues/{issue_number}/comments" `
-H "Authorization: Bearer ${env:GITBUCKET_TOKEN}" `
-H "Content-Type: application/json" `
--data '{
"body": "## Problem Resolved\n\n### Root Cause\nDatabase query JOIN condition was incorrect.\n\n### Implemented Fix\n1. Fixed JOIN condition\n2. Added error handling\n\n### Result\nResponse now returns successfully."
}'
```
#### Get Issue Details
```powershell
curl.exe "http://${env:GITBUCKET_DOMAIN}/api/v3/repos/${env:GITBUCKET_REPOSITORY}/issues/{issue_number}" `
-H "Authorization: Bearer ${env:GITBUCKET_TOKEN}"
```
#### Get Issue Comments
```powershell
curl.exe "http://${env:GITBUCKET_DOMAIN}/api/v3/repos/${env:GITBUCKET_REPOSITORY}/issues/{issue_number}/comments" `
-H "Authorization: Bearer ${env:GITBUCKET_TOKEN}"
```
[Important] When posting GitBucket issue comments via API, use `-H "Content-Type: application/json"` and `--data` parameters.
### PowerShell Environment with Non-ASCII Characters (Japanese, etc.)
When posting JSON containing non-ASCII characters (e.g., Japanese) using curl.exe in PowerShell, follow these steps to prevent character encoding issues.
#### Problem
PowerShell's default `$OutputEncoding` is not UTF-8, causing character corruption for non-ASCII text.
#### Solution
```powershell
# 1. Set OutputEncoding to UTF-8
$OutputEncoding = [System.Text.Encoding]::UTF8
# 2. Create JSON file (save as UTF-8)
# Example: comment.json
# {"body": "Comment with Japanese characters"}
# 3. Post directly from file (use --data '@filename' format)
curl.exe -X POST "http://${env:GITBUCKET_DOMAIN}/api/v3/repos/${env:GITBUCKET_REPOSITORY}/issues/1/comments" `
-H "Authorization: Bearer ${env:GITBUCKET_TOKEN}" `
-H "Content-Type: application/json; charset=utf-8" `
--data '@comment.json'
```
#### Key Points
- Always set `$OutputEncoding = [System.Text.Encoding]::UTF8` first
- Use `--data '@filename'` format (single quotes around filename with `@` prefix)
- Save JSON file with UTF-8 encoding
- Specify `Content-Type: application/json; charset=utf-8`
#### Methods That Don't Work
```powershell
# ❌ Piping causes character corruption
Get-Content file.json -Raw | curl.exe --data-binary "@-" ...
# ❌ Direct string specification fails due to PowerShell escaping
curl.exe -d "{\"body\":\"Japanese text\"}" ...
```
steeringファイルの更新前に質問をされるかもしれませんが、とりあえず「その内容で更新してください」で言っちゃいましょう。
私が試した際は、以下のような質問が来ました。
内容を確認しました。GitLabからGitBucketへの置き換えを行います。提供された情報に基づいて、以下の点を確認させてください:
Issue詳細取得とコメント取得のAPI: 提供された情報には含まれていませんが、GitLabの以下の操作に対応するGitBucketのAPIを使用してよろしいでしょうか?
Issue詳細取得: GET /api/v3/repos/${GITBUCKET_REPOSITORY}/issues/{issue_number}
Issueコメント取得: GET /api/v3/repos/${GITBUCKET_REPOSITORY}/issues/{issue_number}/comments
assignee_id: GitLabでは assignee_id を使用していますが、GitBucketでは assignees 配列を使用するようです。これは提供された例に基づいて置き換えてよろしいでしょうか?
labels: GitLabでは文字列 "bug,backend" ですが、GitBucketでは配列 ["bug", "backend"] を使用するようです。これも提供された例に基づいて置き換えてよろしいでしょうか?
これらの点について確認をお願いします。
Lab2の実施について
Lab2をKiro IDEで実施するには、プロジェクトのルートとしてLab2を開いている状態にする必要があります。(下のキャプチャを参照)これは、.kiroフォルダーがルートに存在する必要があるためです。
ハンズオンで指示のあるプロンプトは、Vibeモードを選択した状態でチャット欄に入力します。
必修科目ですので皆さん、よろしくどうぞ。














