TECHSTEP

ITインフラ関連の記事を公開してます。

CI/CD

GitLabトークンの種類と使い分けを考えてみる

今回はGitLabで複数の種類があるTokenを整理し、いつどのトークンを使った方が良いか個人的にまとめておきます。 docs.gitlab.com 要約 Tokenの種類 GitLabリソースの操作 OAuth 2.0 token Impersonation token CI/CD job token GitLabへの接続登録 Runner a…

GitLabパイプラインの種類と設定方法を整理する

今回はGitLabのパイプラインの種類について紹介します。 docs.gitlab.com docs.gitlab.com Branch pipeline パイプラインの中には、特定のブランチにコミットするたびに起動するものがあり、そういうパイプラインをBranch pipelineと呼びます。デフォルトで…

GitLab Review appsを紹介する

今回はGitLab Review appsについて紹介します。 docs.gitlab.com 背景 GitLab Review appsは、以前紹介したGitLab Environmentと連動し、Merge request画面から検証用の環境にアクセスする手段を提供する機能です。具体的には、Merge request画面から特定のE…

GitLabからAmazon EKS上のリソースを更新する

今回はGitLabからAmazon EKS上のPodを更新する方法を紹介します。 docs.gitlab.com 背景 GitLabからAmazon EKSに接続し、リソースを更新するには、大きく3つの方法があります。 AWSアクセス情報を使ってkubectlで接続する GitLab Agent for Kubernetesをイン…

GitLab Auto-mergeを試す

今回はGitLabのAuto-mergeを簡単に紹介します。 docs.gitlab.com 背景 Auto-mergeは、Merge requestがマージ可能な状態になったときに自動的にマージする機能です。ここでいう「マージ可能な状態」とは、以下のような条件を満たした場合を指します。 要求す…

GitLab Merge request経由でAmazon ECSの検証環境を作成する

今回はGitLabでMerge requestを作成すると自動的に検証環境を作成する例を紹介します。 背景 今回作成した環境の構成図、及び検証環境を作成する処理の流れは以下の通りです。 利用者はGitLab Project上のファイルを修正し、Merge requestを作成する GitLab…

GitLab Deploy token/keyを紹介する

今回はGitLab deploy token/keyについて簡単に紹介します。 docs.gitlab.com docs.gitlab.com 背景 Deploy token / Deploy keyはどちらもGitLabへのアクセスに使用するものであり、主に外部のビルドサーバー・CICDサーバーからGitLabにアクセスする際に利用…

GitLab ChatOpsでGitLab CI/CDを起動する

今回はGitLab ChatOpsについて簡単に紹介します。 docs.gitlab.com 背景 GitLabはChatOpsを実現する手段としてSlack / Mattermostとの連携機能を提供しており、gitlab というslashコマンドを使うことでGitLabへのコマンドを実行します。 チャットツールから…

GitLab CI/CDからTerraform / OpenTofuを実行する

今回はGitLabとTerraformを連携し、GitLab CI/CDからTerraform (OpenTofu) を利用する方法を紹介します。 docs.gitlab.com 背景 GitLabはTerraformと連携する以下のような機能を提供しています。 GitLabをTerraformのstateファイル保存場所として提供 GitLab…

GitLab Releaseの概要を紹介する

今回はGitLab Releaseについて簡単に紹介します。 docs.gitlab.com 背景 GitLab Releaseは、Projectで管理するソフトウェアのリリースをサポートする機能です。ある時点でのProject中のソースコードやインストールパッケージ、リリースノートなどを作成し、 …

GitLab Environmentの概要を紹介する

今回はGitLab Environmentの概要を紹介します。 docs.gitlab.com 背景 GitLabのEnvironmentは、GitLab内でコードがどの場所にデプロイされたかの「場所」を表すリソースです。この場所というのは、例えばクラウド上に実際に環境を作るわけではなく、GitLab上…

GitLab Secret detectionを利用する

今回はGitLabのSecret detection機能を検証します。 docs.gitlab.com 背景 GitLabのSecret detection機能は、あらかじめ設定したルールを元に秘匿情報を検出し、表示する機能です。これは開発言語やフレームワークによらず、すべてのテキストファイルに対し…

GitLab IaC Scanning機能を利用する

今回はGitLab IaC Scanning機能を検証しました。 docs.gitlab.com 背景 GitLabのIaC ScanningはIaCファイルに対する静的解析機能を提供します。IaC Scanningの内部ではKICSというIac専用の静的解析ツールを実行しており、セキュリティの脆弱性やコンプライア…

GitLab SAST機能を利用する

今回はGitLabの提供するSAST (Static Application Security Testing) 機能を検証します。 docs.gitlab.com 背景 GitLabのSAST機能は、アプリケーションコードや一部インフラのマニフェストファイルに対して、GitLab CI/CDパイプライン上でセキュリティスキャ…

GitLab workflowを理解してパイプライン全体の挙動を制御する

今回はGitLabの workflow というキーワードを紹介します。 docs.gitlab.com docs.gitlab.com 背景 workflow:auto_cancel:on_new_commit workflow:auto_cancel:on_job_failure workflow:name workflow:rules workflow:rules:variables workflow:rules:auto_ca…

『入門 継続的デリバリー』の感想: CI/CDの概念から実戦まで含めた良書でした

今回はオライリーの 入門 継続的デリバリー を読んだので、その感想です。本書は2022年に出版されたManning社のGrokking Continuous Delivery を和訳したものですが、とても面白く読ませていただいたので取り上げました。今回も読んでいてよかったと思うポイ…

GitLab extendsキーワードでJobを再利用する

今回はGitLabの extends というキーワードを使ってみました。 docs.gitlab.com 背景 GitLab CIはJobを再利用する方法として複数の手法を提供しており、 extends はそのひとつです。 Jobを再利用する方法は、大きく3種類あります (include等も含めるともっと…

GitLabパイプラインエディタを紹介する

今回はGitLabのパイプラインエディタについて紹介します。 docs.gitlab.com 背景 パイプラインエディタはGitLabのUIから .gitlab-ci.yml を編集・テストできる機能です。具体的には以下のような機能を提供しています。 Edit : パイプラインエディタ画面では …

GitLab rulesを試す

今回はGitLab rulesを少しだけ試してみました。 docs.gitlab.com 背景 GitLab CIに限らず、CI/CDのジョブを実行するタイミングを制御したいケースは多くあります。GitLabでは rules というキーワード配下に条件を指定することで、ジョブの実行タイミングを制…

GitLab CI/CDでAmazon ECSサービスを更新する

今回はGitLab CI/CDでコンテナイメージを作成し、作成したイメージを使ってAmazon ECSのサービスを更新する例を紹介します。 背景 GitLab CI/CDからAmazon ECSサービスを更新するには、大きく2つの方法があります。 .gitlab-ci.yml にスクリプトを記載する i…

IaCの継続的テストを検証する: Amazon EC2に対するテスト

背景 前回AWS CloudFormationで管理するAmazon S3に対し、CI/CDによる継続的なテストと更新を検証しましたが、今回はAmazon EC2を対象に検証してみました。 Amazon EC2で気を付けた点 まず、Amazon EC2に対してテストを行う前に、以前のAmazon S3と比べて異…

IaCの継続的テストを検証する: Amazon S3に対するテスト

背景 以前IaCの書籍をいくつか取り上げ、IaCのテストをどう実行すべきか調査したことがありました。書籍の中には具体的なツールや例を取り上げて記載されている箇所もありますが、やはり実際に動かしてみることで見えることもあると思い、今回簡単に検証して…

【メモ】AWS CodeCommit / CodeBuild + Flux を使ったGitLab Flowの構築

今回は以前のGitHub Flowの構成例に続き、GitLab Flowの実現を目指した例を考えました。 なお、今回は前回と大部分同じ構成なので、説明を省いている箇所があります。 GitLab Flowとは GitLab Flowも開発ワークフローの一種で、以下のようなルールに従って開…

【メモ】AWS CodeCommit / CodeBuild + Flux を使ったGitHub Flowの構築例

今回はAWS CodeCommit/CodeBuildとFluxを使い、GitHub Flowを実現することを目指して構成を考えてみました。 GitHub Flowとは GitHub Flowは開発ワークフローの1つであり、以下のようなルールが定められた、比較的シンプルなワークフローになります。 master…

【メモ】AWS CodeCommit / CodeBuildと ECR / EKSを利用したCI/CDパイプラインの例

はじめに 今回は AWS CodeCommit / CodeBuildを使い、コンテナイメージのビルドからKubernetesクラスターへのデプロイまで実行するサンプルを作成しました。 CodeCommit / CodeBuildは、それ単体では実現できることがかなり限られるため、Amazon EventBridge…