0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSとGitHubを組み合わせてCI環境を作成してみた

Last updated at Posted at 2024-09-21

QAエンジニアとして、学習のためAWSとGitHubを組み合わせたCI環境の構築を実践してみました。本記事では、その手順を共有します。

1. GitHubリポジトリの準備

ステップ 1: GitHubアカウントの作成

  1. GitHubの公式サイトにアクセスします。
  2. 右上の「Sign up」をクリックします。
  3. 必要な情報を入力してアカウントを作成します。

ステップ 2: 新しいリポジトリの作成

  1. GitHubにサインインします。
  2. 右上の「+」アイコンをクリックし、「New repository」を選択します。
  3. リポジトリ名を入力します(例: ci-project)。
  4. リポジトリの説明を追加します(任意)。
  5. 「Public」または「Private」を選択します。※今回は「Public」を指定しています。
    • Public: 誰でも見ることができる。
    • Private: 指定したユーザーのみがアクセスできる。
  6. 「Initialize this repository with a README」にチェックを入れると、初期ファイルが作成されます(任意)。
  7. 「Create repository」をクリックしてリポジトリを作成します。

ステップ 3: リポジトリのクローン

  1. 作成したリポジトリのページに移動します。

  2. 「Code」ボタンをクリックし、HTTPSまたはSSHのURLをコピーします。

  3. コマンドラインまたはターミナルを開き、次のコマンドを実行してリポジトリをクローンします:

    git clone https://github.com/username/ci-project.git
    

    usernameをあなたのGitHubユーザー名に置き換えます。)

ステップ 4: 必要なブランチの設定

  1. クローンしたリポジトリのディレクトリに移動します:

    cd ci-project
    
  2. 新しいブランチを作成します(例: develop):

    git checkout -b develop
    
  3. 新しいブランチをリモートリポジトリにプッシュします:

    git push -u origin develop
    

ステップ 5: GitHubの準備完了

  1. GitHubのリポジトリページに戻り、「Branches」タブをクリックします。
  2. 作成したdevelopブランチが表示されていることを確認します。

2. AWSアカウントの設定

AWSアカウントを作成し、CI/CDに必要な権限を持つユーザーを設定する手順については、以下のリンクを参照してください。

これらの手順に従って、AWSアカウントを設定してください。

3. AWS CodeBuildの設定

S3バケットの作成

AWS CodeBuildのアーティファクトを保存するために、S3バケットを作成します。

ステップ 1: S3を開く

  1. AWS Management Consoleにサインインします。
  2. サービス一覧から「S3」を選択します。

ステップ 2: バケットの作成

  1. 「Create bucket」をクリックします。
  2. バケット名を入力します(例: my-codebuild-artifacts)。バケット名はユニークである必要があります。
  3. リージョンを選択します。CodeBuildプロジェクトと同じリージョンを選ぶことをお勧めします。
  4. オプションで、バケットの設定を調整します(例: パブリックアクセスのブロック、バージョニングなど)。
  5. 「バケット作成」をクリックしてバケットを作成します。

CodeBuildプロジェクトの作成

ステップ 1: CodeBuildを開く

  1. AWS Management Consoleにサインインします。
  2. サービス一覧から「CodeBuild」を検索して選択します。

ステップ 2: ビルドプロジェクトの作成

  1. CodeBuildダッシュボードで「Create build project」をクリックします。

ステップ 3: プロジェクト設定

  1. プロジェクト名を入力します(例: ci-build-project)。
  2. 説明を追加します(任意)。
  3. ソースプロバイダーで「GitHub」を選択します。
  4. GitHubアカウントへのアクセスを許可するため、最初に「Connect to GitHub」をクリックします。
  5. GitHubにサインインし、AWS CodeBuildがリポジトリにアクセスできるように承認します。
  6. 許可した後、リポジトリのリストが表示されるので、使用するリポジトリを選択します。

スクリーンショット 2024-09-22 3.59.10.png

ステップ 5: ビルド環境の設定

  1. 環境イメージで「Managed image」を選択します。
  2. オペレーティングシステムランタイムイメージのバージョンを選択します。
    • 例:
      • OS: Amazon Linux
      • Runtime: Standard
      • Image version: aws/codebuild/amazonlinux2-x86_64-standard:5.0(最新のバージョンを選択)

スクリーンショット 2024-09-22 4.03.38.png
3. サービスロールで「Create a new service role」を選択するか、既存のロールを選択します。
スクリーンショット 2024-09-22 4.04.39.png

ステップ 6: ビルド仕様の設定

  1. Buildspecの設定を行います。
    • **buildspecを選択します。
    • buildspec.ymlをBuildspec名を入力します。

スクリーンショット 2024-09-22 4.05.18.png

ステップ 7: アーティファクトの設定

  1. アーティファクトの出力先を設定します。
    • アーティファクトの種類(例: No artifacts, Amazon S3など)を選択します。
    • S3を選択した場合、出力先のバケットを指定します。

スクリーンショット 2024-09-22 4.06.39.png

ステップ 8: CloudwatchとS3の設定

  1. 「CloudWatch Logs」にチェックを入れる。
  2. 「S3ログ」にチェックを入れる。
    スクリーンショット 2024-09-22 4.06.58.png

ステップ 9: 確認と作成

  1. 「ビルドプロジェクトを作成する」をクリックします。

ステップ 10: プロジェクトの確認

  1. 作成したプロジェクトがCodeBuildダッシュボードに表示されることを確認します。

4. AWS CodePipelineの設定

CodePipelineの作成

ステップ 1: CodePipelineを開く

  1. AWS Management Consoleにサインインします。
  2. サービス一覧から「CodePipeline」を検索して選択します。

ステップ 2: パイプラインの作成

  1. CodePipelineダッシュボードで「Create pipeline」をクリックします。

ステップ 3: パイプライン設定

  1. パイプライン名を入力します(例: ci-pipeline)。
  2. サービスロールを選択します。
    • 「新しいサービスロールを作成」を選択します。
  3. 実行モードを選択します。
    • 「キュー(パイプラインタイプV2が必須)」を選択します。
  4. 「次に」をクリックします。

スクリーンショット 2024-09-22 4.12.42.png

ステップ 4: ソースステージの設定

  1. ソースプロバイダーとして「GitHub」を選択します。
  2. GitHubアカウントへのアクセスを許可するため、「Connect to GitHub」をクリックします。
  3. リポジトリの一覧から使用するリポジトリを選択します。
  4. ブランチ名を指定します(例: develop)。
  5. トリガータイプ「フィルターを指定」イベントタイプ「プッシュ」フィルタータイプ「ブランチ」、含める「develop」

スクリーンショット 2024-09-22 4.17.12.png

  1. 「次に」をクリックします。

ステップ 5: ビルドステージの追加

  1. ビルドプロバイダーとして「AWS CodeBuild」を選択します。
  2. 先ほど作成したCodeBuildプロジェクトを選択します。
  3. 「次に」をクリックします。

スクリーンショット 2024-09-22 4.20.09.png

今回はデプロイは考慮しないため。
デプロイステージは「導入段階をスキップ」にする。

ステップ 7: パイプラインの設定の確認

  1. 「パイプラインを作成する」をクリックします。

ステップ 8: パイプラインの実行

  1. パイプラインが作成されたら、「develop」をリポジトリにプッシュして、パイプラインが自動的にトリガーされることを確認します。
  2. CodePipelineのダッシュボードで、各ステージが正しく実行されているか確認します。

5. テストの設定

AWS CodeBuildプロジェクトに自動テストを組み込むためには、buildspec.ymlファイルにテストフェーズを追加します。このファイルは、ビルドプロセス全体を管理する重要な設定ファイルです。

テストフェーズの追加

以下は、テストを実行するためのbuildspec.ymlです:

version: 0.2

phases:
  install:
    runtime-versions:
      python: 3.x  # 使用するPythonのバージョンを指定します
    commands:
      - echo Installing dependencies...
      - pip install -r requirements.txt  # プロジェクトに必要な依存関係をインストールします

  pre_build:
    commands:
      - echo Running connectivity tests...  # テストを実行する準備をします

  build:
    commands:
      - python -m unittest discover tests/  # testsディレクトリ内の全テストを自動で実行します
      - echo Uploading duration to S3...  # S3にアップロードする準備をします
      - aws s3 cp test_duration.txt s3://cicd-kiki-bucket/test_duration.txt  # テスト結果ファイルを指定したS3バケットにアップロードします

  post_build:
    commands:
      - echo Tests completed  # テストが完了したことを表示します

各ファイルの説明

  • buildspec.yml:

    • AWS CodeBuildの設定ファイルです。ビルドプロセス、テストの実行、アーティファクトの出力先などを定義します。
  • tests/:

    • テストスクリプトを格納するディレクトリです。ここにテストを追加することで、CI/CDパイプライン内で自動的にテストを実行できます。
  • requirements.txt:

    • プロジェクトに必要なPythonライブラリを定義するファイルです。pip install -r requirements.txtコマンドを使用して、ライブラリをインストールします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?