0
1

AWSでCodeCommitとCodeBuildを使ってみる

Last updated at Posted at 2024-08-13

概要

表題の通り

でGitLabからCodeCommitにミラーリング設定を行った。
次にGitLabに大量のリポジトリが必要となることを想定し、自動で作れるようにしたい。やり直すことも考えて削除も行えるようにしたい。
しかし、AWSのサービスではないGitLabとCodeBuildを連携するのは認証部分でハードルが高いので、まずはCodeCommitとCodeBuildを連携させることにする

CodeCommitで作業用リポジトリを作成する

このリポジトリにリポジトリの作成、削除に必要なファイルを格納する。

リポジトリ(プロジェクト)作成 

  1. http://35.75.155.254/gitlab を開く。ログインする
  2. NewGroupを作成 ※すでにあるグループを使う場合はskipします
    • Create group(画面名)
      • Group name
        • hello (任意です)
      • Visibility level
        • public (業務ではprivateかもしれない)
  3. NewGProjectを作成
    • Create blank project(画面名)
      • Project name
        • project_create ※ここにdelete用のコードも置きます
      • Visibility level
        • public (業務ではprivateかもしれない)

ここでプロジェクトのProject IDを控えておく
Setting->Generalで確認可能

CodeCommitで使うコード

project_createプロジェクト(リポジトリ)に以下のコードを登録する
https://github.com/tmoritoki0227/gitlab_project_create

  • 変更が必要な個所
    • create_project.sh
      • NAMESPACE_ID # グループのID
    • delete_project_all.sh
      • $project_id ※削除したくないGitLabのプロジェクト(リポジトリ)をif文で指定する必要あり

SSMを作成

gitlabとgitlabのtokenをパラメータ化する

  1. AWS Systems Managerの画面を開く→左メニューのパラメータストアをクリック→パラメータの作成をクリック
    • パラメータを作成 (画面名)

      • 名前
        • gitlab_access_token
      • 利用枠
        • 標準
      • タイプ
        • 文字列 ※業務では安全な文字列を選択だと思う
      • データ型
        • text
        • (gitlabで取得したtokenを張り付ける)
    • パラメータを作成 (画面名)

      • 名前
        • gitlab_url
      • 利用枠
        • 標準
      • タイプ
        • 文字列
      • データ型
        • text
        • (ElasticIPを張り付ける)

※これらはbuildspec.yamlに設定することで環境変数になる

IAMロールを作成

CodeBUildで利用するロールを作成する。

  1. IAMの画面を開く→左メニューのロールをクリック→ロールの作成をクリック
    • 信頼されたエンティティを選択 (画面名)
      • 信頼されたエンティティタイプ
        • AWS のサービス
      • ユースケース
        • サービスまたはユースケース
          • CodeBuild
        • ユースケース
          • CodeBuild
    • 許可を追加(画面名)
      • 許可ポリシー
        • AWSCodeBuildDeveloperAccess
        • AmazonSSMReadOnlyAccess
        • AmazonS3FullAccess ※ログ出力用
        • CloudWatchEventsFullAccess ※ログ出力用
        • CloudWatchLogsFullAccess ※ログ出力用
    • 名前、確認、および作成(画面名)
      • ロール名
        • gitlab_project_create  ※deleteのときも使うロールです

CodeBuildの作成

project_createproject_deleteの2つのプロジェクトを作成する

  1. CodeBuildの画面を開く→プロジェクトを作成をクリック
    • プロジェクトを編集する(画面名)
      • プロジェクトの設定
        • project_create
      • ソース
        • ソースプロバイダ
          • AWS CodeCommit
        • リポジトリ
          • project_create
        • リファレンスタイプ
          • ブランチ
        • ブランチ
          • master ※mainではない
      • 環境
        • プロビジョニングモデル
          • オンデマンド
        • 環境イメージ
          • マネージド型イメージ
        • コンピューティング
          • EC2 ※今回シェルスクリプトを使うので、lambdaでは実行できないはず
        • オペレーティングシステム
          • Ubuntu ※前回Ubuntuで動作したから
        • ランタイム
          • Standard
        • イメージ
          • aws/codebuild/standard:7.0 ※最新を選ぶ
        • イメージのバージョン
          • aws/codebuild/standard:7.0-2.4.05.15 ※最新を選ぶ
        • サービスロール
          • 既存のサービスロール
        • ロール名
          • gitlab_project_create
      • Buildspec
        • ビルド仕様
          • buildspec ファイルを使用する
        • Buildspec 名
          • buildspec_create.yml
      • バッチ設定
        • (設定なし)
      • アーティファクト ※設定不要。ビルドによって作成するもの成果物はない
        • タイプ
          • アーティファクトなし
      • ログ ※デフォルトのままでOK。監視に使わないので違和感はあるがこれでログは見れる
        • CloudWatch
          • CloudWatch Logs - オプショナル
            • チェックを入れる
        • S3 ※この設定を入れると画面にビルドログが表示されずS3に保存される形式になるので、軽量なジョブでは使いずらい
          • S3 ログ - オプショナル 
            • チェックを入れない
      • サービスロールのアクセス許可
    • プロジェクトを編集する(画面名)※書いてないところはproject_createと同じなので省略
      • プロジェクトの設定
        • project_delete
      • Buildspec
        • ビルド仕様
          • buildspec ファイルを使用する
        • Buildspec 名
          • buildspec_delete.yml

※参考
image.png

gitメモ

git config --global credential.helper 'cache --timeout=3600' # 1時間
0
1
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
0
1