1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

"Accelerating Smart Product SDLC with AI Agent Workshop"をWindows+GitBucket環境向けにカスタマイズ

Posted at

re:Inventで存在を知り、それ以降夢中になっているワークショップがこちらです。社内向けにも実施し大盛況でした。

Accelerating Smart Product SDLC with AI Agent Workshop

re:Inventの速報は会社の技術ブログで投稿しております。こちらもぜひご覧ください!

社内ではGitBucketを使っているところがあるようで、そこの方々にも実施してもらいたくてカスタマイズしてみました。

半年くらい前にGitBucket MCPサーバーを作りました!こちらもよかったらどうぞ

https://github.com/moritalous/gitbucket-mcp

変更点

大きな変更点はこちらです。

  • GitLabをGitBucketに変更
  • Kiro CLIの代わりにKiro IDE(Windows版)で動作確認
  • steeringファイルをWindows向けにカスタマイズする方法を追加

とりあえずLab2は実施できました。Lab3はどうしてもLinux環境が必要でしたので、今回は対象外としました。

Lab3は組込開発をAWS上で行うためのアレコレが詰まっているので、これまたオススメです!

カスタマイズ版:開発環境の準備

事前準備のステップ4「ステップ 4: 開発環境の準備をする」の代わりに以下の手順を行います。

GitBucketを起動

  1. GitBucketの公式リポジトリリリースページから、最新の.warファイルを入手

  2. GitBucketを起動

    java.exe -jar gitbucket.war
    

    デフォルトではユーザーのホームパス(C:\Users*****)に.gitbucketフォルダーが作成され使用されます。場所を変えたい場合は、java.exe -jar gitbucket.war --gitbucket.home=.gitbucketのように指定が可能です。このコマンドの場合はコマンド実行フォルダーに.gitbucketフォルダーが作成されます。

  3. ブラウザでlocalhost:8080にアクセスします

    初期作成される管理はアカウントへは、ユーザー名「root」パスワード「root」でサインインできます

ユーザーを追加

  1. GitBucketにユーザーを追加します

    rootユーザーでサインインをした状態で、右上メニューを開き「System administration」を選択します

  2. 右上の「New user」ボタンをクリックし、ユーザーを追加します

  3. 自分自身とKiro-agentの2つのユーザーを追加します
    メールアドレスの入力は必須ですが、特にメールが送信されることはありませんし、ダミーのアドレスでもOKです

リポジトリを追加

  1. リポジトリを作成します

    画面右上のメニューから一度サインアウトし、先程作成した自分自身のユーザーでサインインします

    その上で右上の「+」ボタンから「New repository」を選択し、リポジトリを作成します

    Repository nameは「Workshop」とし、Privateとして作成します

  2. リポジトリのCollaboratorsとしてKiro-agentを追加

    左メニューにある「Settings」を選択します

  3. 「Collaborators」タブを選択しCollaboratorsとして「Kiro-agent」を追加します(入力したうえで「Add」ボタン)
    そして「Apply changes」をクリックします

アクセストークンを生成

  1. Kiro-agentがAPIでアクセスするのでトークンを生成します

    一度サインアウトし、Kiro-agentでサインインします

    右上のメニューにある「Account settings」を選択します

  2. 左メニューにある「Applications」を選択します

  3. 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モードを選択した状態でチャット欄に入力します。


必修科目ですので皆さん、よろしくどうぞ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?