AWS

AWS CodeCommitでプルリクエスト・マージ


press
AWS CodeCommitでプルリクエスト・マージ

AWS CodeCommitでプルリクエスト・マージ

ソースコードの管理にはGitHubやGitLabを採用している方が多いかもしれませんが、AWSにもCodeCommitというサービスがあり、5人までは無料で5人以上でも一人当たり$1(月)で利用可能です。CodeCommitはAWSの他サービスとの連携も簡単で、ブラウザからの操作で様々な連携ができるのも魅力的です。また、IAMポリシーで利用者ごとに柔軟に権限を持たせることもできるのでセキュリティ対策にも有効です。

本記事はCodeCommitでリポジトリの作成、ブランチの作成、プルリクエストの作成、マージという流れを解説します。次の記事ではCodePipelineを使ってプルリクエストをマージしたタイミングでCodeBildによるテストを自動で実行するまでの流れを解説します。

構築の流れ

  1. リポジトリ作成
  2. ブランチ作成
  3. プルリクエスト作成
  4. マージ

リポジトリ作成

コンソールにログインしたらCodeCommitを検索します。

CodeCommitでリポジトリ作成
CodeCommitでリポジトリ作成

CodeCommitで「リポジトリ作成」を押します。

CodeCommitでリポジトリ作成
CodeCommitでリポジトリ作成

リポジトリ名を入力して「作成」を押します。最終的にCodeBuildでテストを実行するリポジトリなので、ContinuousTestingというリポジトリ名にしました。説明は空欄のまま作成します。

ファイルを作成

リポジトリにファイルを作成します。

CodeCommitでリポジトリにファイルを作成
CodeCommitでリポジトリにファイルを作成

「ファイルの作成」を押してファイルを作成します。

CodeCommitでリポジトリにファイルを作成
CodeCommitでリポジトリにファイルを作成

CodeBuildのテストに必要なbuildspec.ymlを作成します。下記のコードを入力して、ファイル名、作成者名、Eメールアドレスを入力して「変更のコミット」を押します。

buildspec.yml

version: 0.2

phases:
  install:
    runtime-versions:
      python: 3.10
    commands:
      - echo "Build Start v1"
      - pip install -r requirements.txt
  build:
    commands:
      - python -m pytest --junitxml=./pytest_results.xml
reports:
  pytest_reports:
    files:
       - pytest_results.xml
    base-directory: "./"
    file-format: JUNITXML

CodeBuildでビルド実行時に実行するコマンドが書かれたファイルです。コードの主な処理はcommandsにあるテスト開始時のテキスト表示、パッケージのインストール、テストの実行と、reportsにあるテストのレポートを出力です。

ブランチ作成

Git flowでの運用を想定してdevブランチを作成します。

CodeCommitでブランチを作成
CodeCommitでブランチを作成

サイドバーのブランチを選択して「ブランチの作成」を押します。

CodeCommitでブランチを作成
CodeCommitでブランチを作成

ブランチ名は「dev」、ブランチ元は「main」を指定して「ブランチの作成」を押します。

デフォルトブランチを設定

Git flowでの運用を想定しているのでデフォルトのブランチを「dev」に変更します。(デフォルトブランチの設定が不要であれば飛ばして問題ありません)

CodeCommitでデフォルトブランチを設定
CodeCommitでデフォルトブランチを設定

デフォルトブランチで「dev」を選択して「Save」を押します。

CodeCommitでデフォルトブランチを設定
CodeCommitでデフォルトブランチを設定

リポジトリのデフォルトブランチが「dev」に変更されました。

プルリクエスト

エディタやCodeCommit上での変更をdevブランチに反映させるためにプルリクエストを作成します。今回はCodeBuildによるテストに必要な下記の3ファイルを新たに作成しました。

  • main.py:関数を実行するファイル
  • main_test.py:main.pyの関数をテストするファイル
  • requirements.txt:インストールするパッケージを記載したファイル

main.py

def add_numbers(a, b):
    return a + b

main_test.py

import main


def test_add_numbers():
    assert main.add_numbers(1, 2) == 3

requirements.tx

exceptiongroup==1.2.0
iniconfig==2.0.0
packaging==23.2
pluggy==1.3.0
pytest==7.4.3
tomli==2.0.1
CodeCommitでプルリクエスト作成
CodeCommitでプルリクエスト作成

サイドバーのプルリクエストを選択してターゲットに「dev」、ソースに「feature/add-files」を選択して「比較」を押します。(ソースで選択するブランチは自身で作成したブランチを選択します。)

CodeCommitでプルリクエスト作成
CodeCommitでプルリクエスト作成

タイトル名の入力、変更内容を確認して「プルリクエストの作成」を押します。

マージ

作成したプルリクエストをdevブランチにマージします。

CodeCommitでマージ
CodeCommitでマージ

先程作成したプルリクエストを選択して「マージ」を押します。

CodeCommitでマージ
CodeCommitでマージ

今回はマージ戦略に「早送りマージ」を選択して「プルリクエストのマージ」を押します。マージ後もブランチを残しておきたいのでチェックを外してからマージしましたが、削除する場合はチェックを入れてマージしてください。


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    AWS

    GitHub Actionsで Lambdaにデプロイ失敗した原因を調査

    GitHub Actionsで Lambdaにデプロイ失敗した原因を調査 GitHub ActionsでLambdaへデプロイ中に発生したエラーを調査し、適切なポリシーの追加と deploy.ymlへのコマンド追加で解消 […]

    Posted on by press
    Other

    Gitで別のブランチから特定のファイルorディレクトリをチェックアウト

    Gitで別のブランチから特定のファイルorディレクトリをチェックアウト 複数人での開発や細かくブランチを作って開発していると、別ブランチの一部分だけを今のブランチに取り込みたいということがあります。マージだと取り込みたく […]

    Posted on by press

    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません