GitLab Duo の原則 - ハンズオンラボ: GitLab Duo を使って新しいコードを書く
完了までの推定時間: 25 分
目標
このラボでは、GitLab Duo がプロジェクト内でどのようにコードの作成とテストを支援するかを確認します。
タスク A. コードサジェストを使って新しい関数を書く
Duo Demo プロジェクトのルートに移動します。
main.goファイルを選択します。Edit > Open in Web IDE を選択します。
importブロックとmain関数の間に、次のコメントを入力します:// write a function called print_phrase that contains a list of string values. It takes in an index of the list and returns the value at the provided index from a list as a stringEnter キーを押すと、コードの余白に小さな Tanuki アイコンが表示されます。コードが表示されるまで待ちます。コードが表示されたら Tab キーを押します。
新しい
myFigureオブジェクトの一部としてmain()関数内で新しい関数を呼び出します。引数としてインデックスを必ず指定してください。サンプルコードでは、インデックスとして 0 が指定されています。この操作を行うと、コードは次のようになります:
package main import ( "github.com/common-nighthawk/go-figure" ) // write a function called print_phrase that contains a list of string values. It takes in an index of the list and returns the value at the provided index from a list as a string func print_phrase(index int) string { phrases := []string{ "Hello, world!", "Go is awesome", "Programming is fun", "Keep coding", "Practice makes perfect", } if index < 0 || index >= len(phrases) { return "Invalid index" } return phrases[index] } func main() { myFigure := figure.NewFigure(print_phrase(0), "", true) myFigure.Print() }入力したプロンプトの性質上、リストからランダムな単語を求めているため、ほとんどのユーザーで異なるコードが生成されます。
phrases :=の定義で異なる単語が表示されても問題ありません。
タスク B. コードテストを生成する
GitLab Duo が生成するコードは概して正しいですが、本番環境で使用する前にコードのエラーをテストするのがベストプラクティスです。幸いなことに、GitLab Duo はテスト生成プロセスも支援してくれます!
func print_phrase() string関数内のコードをすべて選択します。左サイドバーの GitLab Duo Chat アイコンを選択します。
プロンプト
/testsを入力します。次のようなテストが返ってきます:package main import ( "testing" ) func TestPrintPhrase(t *testing.T) { tests := []struct { name string index int expected string }{ {"Valid index 0", 0, "Hello, world!"}, {"Valid index 2", 2, "Programming is fun"}, {"Valid index 4", 4, "Practice makes perfect"}, {"Negative index", -1, "Invalid index"}, {"Index out of range", 5, "Invalid index"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { result := print_phrase(tt.index) if result != tt.expected { t.Errorf("print_phrase(%d) = %s; want %s", tt.index, result, tt.expected) } }) } }いつでも
/explainを使ってこのコードが何をしているかを確認できます。テストをプロジェクトに追加するには、まず GitLab Duo が生成したコードをコピーします。
左サイドバーから Explorer アイコンを選択します。
テストをプロジェクトに追加するために、
print_phrases.test.goという名前の新しいファイルを作成します。Duo がパッケージとテストのインポートをまだ追加していない場合は、ファイルの先頭に次のコードを追加します:
package main import "testing"テストのインポートの下に、GitLab Duo が生成したテストを新しい行に貼り付けます。
左サイドバーから Source Control を選択し、任意のコミットメッセージを入力して Commit and push to main を選択します。
Go to Project を選択してプロジェクトに戻ります。
タスク C. CI/CD パイプラインでテストを実行する
Build > Pipeline editor に移動します。
stagesセクションにtestという新しいステージを追加します。build appジョブの下にtestという新しいジョブを作成します。テストを実行するために
go testコマンドを追加します。.gitlab-ci.ymlファイルは次のようになります:stages: - build - test default: image: golang:latest build app: stage: build script: - go get github.com/common-nighthawk/go-figure - go run main.go test: stage: test script: - go get github.com/common-nighthawk/go-figure - go test ./...Commit changes を選択します。
パイプラインが完了するまで待ち、結果を確認します。
テストに合格したパイプラインが確認できるはずです。ジョブが失敗した場合は、Troubleshoot を使ってエラーをトラブルシューティングしてください。
ラボガイド完了
このラボ演習が完了しました。このコースの他のラボガイドを参照できます。
ご提案について
ラボに変更を加えたい場合は、マージリクエスト経由で変更を送信してください。
