GLab CLI その1 - ターミナルから GitLab を操る喜び - GLab CLI で開発体験が変わる
GLab CLI 実践チュートリアル集
チュートリアル 1: 初心者向け - インストールから最初の認証まで
このチュートリアルでは、GLab をインストールして、GitLab インスタンスに認証するまでの手順を説明します。
1.1 Homebrew でのインストール
macOS、Linux、Windows (WSL) を使用している場合は、Homebrew でインストールするのが最も簡単です。
brew install glab
インストール後、バージョンを確認して、正常にインストールされたことを確認します。
glab version
1.2 GitLab.com への認証
GitLab.com を使用している場合は、以下のコマンドで認証を開始します。
glab auth login
対話的なプロンプトが表示されます。以下の手順に従います。
- GitLab インスタンスとして GitLab.com を選択します。
- ログイン方法として Web を選択します。
- Web ブラウザが自動的に開き、GitLab.com の認可画面が表示されます。
- Authorize ボタンをクリックします。
- ターミナルに戻り、プロンプトに従って設定を完了します。
認証が完了すると、認証情報は ~/.config/glab-cli/config.yml に保存されます。
1.3 認証の確認
認証が正常に完了したかどうかを確認するには、以下のコマンドを実行します。
glab auth status
認証済みのホストと、現在のユーザー情報が表示されます。
1.4 最初のコマンド実行
認証が完了したら、簡単なコマンドを実行してみましょう。自分に割り当てられた Merge Request をリスト表示します。
glab mr list --assignee=@me
自分に割り当てられた MR がリスト表示されれば、GLab は正常に動作しています。
以下、適当にGitLab.com(またはSelf-HostedのGitLab)から、プロジェクトをGitCloneし、そのディレクトリ直下で以下のようにglabコマンドを打ち込んでみてください。超快適です。
チュートリアル 2: Merge Request 管理 - 作成から承認まで
このチュートリアルでは、GLab を使用して Merge Request を作成、確認、承認するワークフローを説明します。
2.1 新しいブランチの作成と変更
まず、新しいブランチを作成して、いくつかの変更を加えます。
git checkout -b feature/add-new-feature
echo "New feature content" > new_feature.txt
git add new_feature.txt
git commit -m "Add new feature"
git push -u origin feature/add-new-feature
2.2 Merge Request の作成
GLab を使用して Merge Request を作成します。
glab mr create --title "Add new feature" --description "This MR adds a new feature" --target-branch main
コマンドが成功すると、作成された MR の URL が表示されます。
2.3 Merge Request の詳細確認
作成した MR の詳細を確認します。MR 番号は前のコマンドの出力から取得できます。
glab mr view <mr-number>
MR のタイトル、説明、ステータス、レビュアーなどの情報が表示されます。
2.4 Merge Request のリスト表示
自分に割り当てられた MR をリスト表示します。
glab mr list --assignee=@me
レビューをリクエストされた MR を表示します。
glab mr list --reviewer=@me
2.5 Merge Request の承認
MR を承認します。
glab mr approve <mr-number>
2.6 Merge Request のマージ
MR をマージします。
glab mr merge <mr-number>
マージ後、ローカルブランチを削除します。
git checkout main
git pull origin main
git branch -d feature/add-new-feature
チュートリアル 3: Issue 管理 - 作成から解決まで
このチュートリアルでは、GLab を使用して Issue を作成、割り当て、ラベル付けするワークフローを説明します。
3.1 Issue の作成
新しい Issue を作成します。
glab issue create --title "Fix bug in login page" --description "Users are unable to log in with special characters in their password"
Issue が作成されると、Issue 番号が表示されます。
3.2 Issue の詳細確認
作成した Issue の詳細を確認します。
glab issue view <issue-number>
Issue のタイトル、説明、ステータス、割り当て先などの情報が表示されます。
3.3 Issue への割り当てとラベル付け
Issue を自分に割り当てます。
glab issue update <issue-number> --assignee @me
Issue にラベルを追加します。
glab issue update <issue-number> --label bug,urgent
3.4 Issue のリスト表示
自分に割り当てられた Issue をリスト表示します。
glab issue list --assignee=@me
特定のラベルを持つ Issue をリスト表示します。
glab issue list --label bug
3.5 Issue の解決
Issue に関連する修正を行い、Merge Request を作成します。
git checkout -b fix/login-special-chars
# 修正を行う
git add .
git commit -m "Fix login issue with special characters (fixes #<issue-number>)"
git push -u origin fix/login-special-chars
glab mr create --title "Fix login issue with special characters" --target-branch main
Merge Request のコミットメッセージに fixes #<issue-number> を含めることで、MR がマージされたときに Issue が自動的にクローズされます。
チュートリアル 4: CI/CD パイプライン監視 - パイプラインの確認とトラブルシューティング
このチュートリアルでは、GLab を使用して CI/CD パイプラインを監視し、ジョブのトラブルシューティングを行うワークフローを説明します。
4.1 最新のパイプラインを表示
最新のパイプラインの状態を確認します。
glab ci view
パイプラインのステータス、ジョブ数、実行時間などが表示されます。
4.2 パイプラインのジョブをリスト表示
パイプラインに含まれるすべてのジョブをリスト表示します。
glab job list
各ジョブのステータス、実行時間、ステージなどが表示されます。
4.3 失敗したジョブのログを確認
失敗したジョブのログを確認します。ジョブ ID は前のコマンドの出力から取得できます。
glab job trace <job-id>
ジョブのログが表示され、失敗の原因を特定できます。
4.4 失敗したジョブを再実行
失敗したジョブを再実行します。
glab job retry <job-id>
ジョブが再実行され、新しいログが生成されます。
4.5 特定のパイプラインを確認
特定のコミットやブランチのパイプラインを確認します。
glab ci view --branch <branch-name>
または、パイプライン ID を指定して確認します。
glab ci view <pipeline-id>
チュートリアル 5: 複数インスタンス管理 - GitLab.com と Self-Managed の両方を使い分ける
このチュートリアルでは、GLab を使用して複数の GitLab インスタンスを管理するワークフローを説明します。
5.1 GitLab Self-Managed インスタンスへの認証
GitLab Self-Managed インスタンスに認証します。
glab auth login --hostname gitlab.example.com
対話的なプロンプトが表示されます。以下の手順に従います。
- ログイン方法を選択します (OAuth、パーソナルアクセストークン、など)。
- 認証情報を入力します。
- 認証が完了します。
5.2 複数インスタンスの確認
認証済みのすべてのインスタンスを確認します。
glab auth status
複数のインスタンスが表示されます。
5.3 特定のインスタンスでコマンドを実行
特定のインスタンスでコマンドを実行するには、--host フラグを使用します。
glab issue list --host gitlab.example.com
または、環境変数を使用します。
GITLAB_HOST=gitlab.example.com glab issue list
5.4 デフォルトホストの設定
Git リポジトリの外でコマンドを実行する場合、デフォルトホストを設定できます。
glab config set -g host gitlab.example.com
この設定後、--host フラグを指定しなくても、Self-Managed インスタンスがデフォルトで使用されます。
5.5 ホスト単位の設定
ホスト単位で異なる設定を行うことができます。例えば、エディタを指定します。
glab config set editor vim --host gitlab.example.com
チュートリアル 6: CI/CD パイプライン内での活用 - パイプラインから GLab コマンドを実行
このチュートリアルでは、GitLab CI/CD パイプライン内で GLab を使用するワークフローを説明します。
6.1 パイプラインで GLab を使用するための準備
パイプラインで GLab を使用するには、Docker イメージに GLab をインストールするか、リリースページからバイナリをダウンロードします。以下は、Alpine Linux ベースのイメージを使用する例です。
stages:
- build
build:
stage: build
image: alpine:latest
before_script:
- apk add --no-cache curl
- curl -L https://gitlab.com/gitlab-org/cli/-/releases/download/v1.46.0/glab_1.46.0_Linux_x86_64.tar.gz | tar xz
- mv glab /usr/local/bin/
script:
- echo "Building with GLab..."
6.2 CI ジョブトークンを使用した自動ログイン
CI ジョブトークンを使用して、自動的に認証します。
deploy:
stage: deploy
image: alpine:latest
before_script:
- apk add --no-cache curl
- curl -L https://gitlab.com/gitlab-org/cli/-/releases/download/v1.46.0/glab_1.46.0_Linux_x86_64.tar.gz | tar xz
- mv glab /usr/local/bin/
- export GLAB_ENABLE_CI_AUTLOGIN=true
script:
- glab release list -R $CI_PROJECT_PATH
6.3 パイプラインから Issue を作成
パイプラインから Issue を作成します。
create_issue:
stage: build
image: alpine:latest
before_script:
- apk add --no-cache curl
- curl -L https://gitlab.com/gitlab-org/cli/-/releases/download/v1.46.0/glab_1.46.0_Linux_x86_64.tar.gz | tar xz
- mv glab /usr/local/bin/
- export GLAB_ENABLE_CI_AUTLOGIN=true
script:
- glab issue create --title "Build completed" --description "Build for commit $CI_COMMIT_SHA completed successfully"
6.4 パイプラインから Merge Request を作成
パイプラインから Merge Request を作成します。
create_mr:
stage: build
image: alpine:latest
before_script:
- apk add --no-cache curl git
- curl -L https://gitlab.com/gitlab-org/cli/-/releases/download/v1.46.0/glab_1.46.0_Linux_x86_64.tar.gz | tar xz
- mv glab /usr/local/bin/
- export GLAB_ENABLE_CI_AUTLOGIN=true
script:
- git config user.email "ci@example.com"
- git config user.name "CI Bot"
- git checkout -b auto-update-dependencies
- echo "Updated dependencies" > dependencies.txt
- git add dependencies.txt
- git commit -m "Update dependencies"
- git push -u origin auto-update-dependencies
- glab mr create --title "Update dependencies" --target-branch main
チュートリアル 7: リリース管理 - リリースの作成と管理
このチュートリアルでは、GLab を使用してリリースを作成・管理するワークフローを説明します。
7.1 リリースの作成
リリースを作成します。
glab release create v1.0.0 --description "Release version 1.0.0"
リリースが作成されると、リリース URL が表示されます。
7.2 リリースの確認
作成したリリースを確認します。
glab release view v1.0.0
リリースの詳細情報が表示されます。
7.3 リリースのリスト表示
すべてのリリースをリスト表示します。
glab release list
7.4 リリースアセットのアップロード
リリースにアセット (バイナリ、ドキュメントなど) をアップロードします。
glab release upload v1.0.0 ./dist/app-1.0.0.tar.gz
チュートリアル 8: GitLab Duo との連携 - AI を活用した Git コマンド学習
このチュートリアルでは、GLab の GitLab Duo 機能を使用して、Git コマンドについて学習するワークフローを説明します。
8.1 基本的な Git コマンドについて質問
Git コマンドについて質問します。
glab duo ask "How do I rebase my branch?"
GitLab Duo が質問に答え、適切なコマンドと説明を提供します。
8.2 複雑な Git 操作について質問
より複雑な Git 操作について質問します。
glab duo ask "How do I squash commits?"
GitLab Duo が詳細な説明とコマンド例を提供します。
8.3 マージコンフリクトの解決について質問
マージコンフリクトの解決方法について質問します。
glab duo ask "How do I resolve merge conflicts?"
GitLab Duo がコンフリクト解決の手順を説明します。
8.4 Git ブランチ戦略について質問
Git ブランチ戦略について質問します。
glab duo ask "What is Git Flow and how do I use it?"
GitLab Duo が Git Flow ブランチ戦略について詳しく説明します。
まとめ
これら 8 つのチュートリアルを通じて、GLab の主要な機能と実践的な使い方を学ぶことができます。
- チュートリアル 1: GLab の基本的なセットアップ
- チュートリアル 2: Merge Request の管理
- チュートリアル 3: Issue の管理
- チュートリアル 4: CI/CD パイプラインの監視
- チュートリアル 5: 複数インスタンスの管理
- チュートリアル 6: CI/CD パイプライン内での活用
- チュートリアル 7: リリース管理
- チュートリアル 8: GitLab Duo との連携
各チュートリアルは独立しており、必要に応じて選択して学習できます。GLab を使いこなすことで、開発ワークフローがより効率的になり、ターミナルから GitLab のすべての機能を操作できるようになります。