原文はこちら。
https://blogs.oracle.com/developers/code-merge-as-part-of-a-build-pipeline-in-oracle-developer-cloud
![]()
この記事ではOracle Developer Cloudでのパイプライン構成の一部として、コードのマージを行う方法を説明します。簡単に使えるビルド・ジョブ機能だけをこれを使って実現することができます。また、開発者が日々の開発作業を行う際に、どのようにこの機能が役立つかについても理解することができるでしょう。![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
https://blogs.oracle.com/developers/code-merge-as-part-of-a-build-pipeline-in-oracle-developer-cloud
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/File/eb5f16c051f8d4a42d99db4d93f194c3/2019_01_28_22_11_54_build__demoproject.png)
この記事ではOracle Developer Cloudでのパイプライン構成の一部として、コードのマージを行う方法を説明します。簡単に使えるビルド・ジョブ機能だけをこれを使って実現することができます。また、開発者が日々の開発作業を行う際に、どのようにこの機能が役立つかについても理解することができるでしょう。
新規Gitリポジトリの作成
ナビゲーションバーのProject Homeをクリックします。Projectページで使用するプロジェクトを選び(例ではDemoProjectを選択しています)、+ Create Repositoryボタンを押すと新規リポジトリが作成されます。この記事では、このリポジトリを使ってcode mergeを行います。![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/24ae78fa7bee901ef4459694fa36af8a/2019_01_28_16_55_09_project___demoproject___oracle_developer_cloud_service.png)
New Repositoryダイアログでは、リポジトリ名を入力します。例ではMyMergeRepoとしていますが、好きな名前を使ってください。Initialize repository with README fileオプションを選び、Createボタンを押しましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/53f65d08faf05dd10c3539d42ad93f12/2019_01_28_21_21_31_project___demoproject___oracle_developer_cloud_service.png)
新規ブランチの作成
ナビゲーションバーのGitをクリックします。GitページのRefsビューで、RepositoriesドロップダウンからMyMergeRepo.gitを選びます。+ New Branchボタンを押すと新規ブランチが作成されます。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/fbca864bfe58ff3677cbb645b0471977/2019_01_28_21_22_40_code___demoproject.png)
New Branchダイアログでは、一意になるブランチ名を入力します。例ではchangeを使っていますが、好きな名前にしてください。適切なBaseブランチをドロップダウンリストから指定しましょう。例ではmasterブランチのみしか選択肢がありません。Createボタンを押し、新規ブランチを作成しましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/d6f8cf628a9916a5a29ea464d18ad8ce/2019_01_28_21_23_25_code___demoproject.png)
ビルドジョブ設定を作成する
ナビゲーションバーからBuildsをクリックします。Jobsタブで、+ Create Jobボタンを押すと、新規ビルドジョブが作成されます。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/3dcc31ee52597692f617da0ca0f1fc06/2019_01_28_21_24_10_build__demoproject.png)
New Jobダイアログでは、ジョブ名として一意となる名前を指定しましょう。例ではMergeCodeとしていますが、好きな名前を入力してください。Use for Merge Requestチェックボックスにチェックを入れ、Create Newオプションを選択したら、ドロップダウンリストから任意のソフトウェアテンプレートを選んでください。マージを行う際に特に必要となる特定のソフトウェアバンドルなく、いずれのソフトウェアテンプレートにもデフォルトで含まれているソフトウェアバンドルだけで十分です。最後にCreate Jobボタンをクリックしましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/2f0ac6ae0438b2db19db96b9cd76337d/2019_01_28_21_35_59_build__demoproject.png)
Use for Merge Requestにチェックを入れてビルドジョブを作成すると、Source ControlタブのRepositoryとBranchフィールドにマージリクエストパラメータが格納されます。そのままAutomatically perform build on SCM commitチェックボックスにチェックを入れましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/7db7b4081a6bff232f617ec5020c7341/2019_01_28_22_11_04_build__demoproject.png)
Build Parametersタブを見ると、GIT_REPO_URLやGIT_REPO_BRANCHなどのマージリクエストパラメータが自動的に追加されていることにお気づきでしょう。確認したら、Saveボタンを押しましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/eb5f16c051f8d4a42d99db4d93f194c3/2019_01_28_22_11_54_build__demoproject.png)
マージリクエストの作成
ナビゲーションバーのMerge Requestsをクリックし、+ Create Merge Requestボタンを押しましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/cede4cd09f283fc01b79b5c562282660/2019_01_28_22_13_18_merge_requests___demoproject.png)
New Merge Requestウィザードでは、Gitリポジトリ(MyMergeRepo)を選択し、ターゲットブランチ(master)とレビューブランチ(change)を選択します。まだ何もコミットしてないので、何も表示されません。Nextボタンをクリックして次のページに進みましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/382d722127df565914c5f1e5859c3a7b/2019_01_28_22_14_06_merge_requests___demoproject.png)
Detailsページでは、Linked BuildフィールドでMergeCodeを選択し、また、レビュアーを設定します。このマージリクエストに紐づけたいissueがある場合は、Linked Issuesフィールドで設定しましょう。Nextボタンをクリックし、最後のページに移動します。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/3a10cc6aa8382bf5a5de9bd4e1b58cb7/2019_01_28_22_14_56_merge_requests___demoproject.png)
マージリクエストの説明欄のコメントは、デフォルトのものを使うこともできますし、編集することもできます。では、Createボタンを押してマージリクエストを作成しましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/6249976f2b975ee122fef0d52e7683f7/2019_01_28_22_15_13_merge_requests___demoproject.png)
Linked Buildsタブでは、MergeCodeビルドジョブがリンクされたビルドジョブとして表示されます。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/42bc22494dec53c7e71480051154d00a/2019_01_28_23_29_15_merge_request__devinstance4wd8us2_wd4devcs8us2_demoproject_142___143.png)
ファイルを更新し変更をGitリポジトリにコミット
GitページでリポジトリのドロップダウンリストからMyMergeRepo.gitリポジトリを選択し、ブランチのドロップダウンリストからchangeブランチを選択します。そしてREADME.mdファイルのリンクをクリックしましょう。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/bb1220874ec0566bb534141c21797705/2019_01_28_22_19_19_code___demoproject.png)
鉛筆のアイコンをクリックしてファイルを編集します。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/543ced20f534edab4194192274f940c5/2019_01_28_22_19_39_code___demoproject.png)
任意のテキストを追記し、Commitボタンをクリックします。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/86b8eb055a2e4159631a3e4b74797ab0/2019_01_28_22_20_07_code___demoproject.png)
コードのコミットによりMergeCodeビルドジョブがトリガーされます。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/31c831a055c43d1e8e1c1ca045b34807/2019_01_28_22_20_45_code___demoproject.png)
リンクされたジョブのビルドが起動されると、Conversationタブに自動的にコメントが追加されます。MergeCodeのビルドが完了すると、マージリクエストが自動的に承認され、MergeCode自身がReview StatusリストのApproveセクションに追加され、マージリクエストにアサインされているレビュアーの承認待ちの状態になります。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/3fa18e6c3e89193bf811cc32b9d667bd/2019_01_28_23_31_03_merge_request__devinstance4wd8us2_wd4devcs8us2_demoproject_142___143.png)
レビュアーがマージリクエストを承認すると、レビューブランチにあるコードをターゲットブランチにマージできる状態になります。Mergeボタンをクリックすると、コードがマージされます。
注意:この例のマージリクエストではログインしているユーザーであるAlex Adminがレビュアーです。
![](http://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/d5e9c9e1-977b-417a-a349-ce8a7f4052af/Image/321630e03fa9a098d498e94f741c7067/2019_01_28_23_32_01_merge_request__devinstance4wd8us2_wd4devcs8us2_demoproject_142___143.png)
ビルドジョブにMerge Requestパラメータを含めておくことにより、全てのコミットに対してコンフリクトが発生していないか、承認されているかのチェックを自動的に行うようにすることができます。マージリクエスト用のビルドジョブをリンクしておくと、ひとつのマージリクエストに複数のコミットが紐付られているような場合に有用です。マージリクエストに対してアサインされたレビュアーからのコードレビューと変更の承認が行われたのち、コードがターゲットブランチにマージされます。
日々の開発作業において開発者がチームメンバーと効率的に協働することを手助けしてくれるような機能です。
良いコーディングを!