

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 付録 A: GitHub (OAuth アプリ経由) ソースアクション
<a name="appendix-github-oauth"></a>

この付録では、CodePipeline での GitHub アクションの (OAuth アプリ経由) について説明します。

**注記**  
GitHub (OAuth アプリ経由) アクションの使用はお勧めしませんが、GitHub (OAuth アプリ経由) アクションを持つ既存のパイプラインは何の影響なく引き続き動作します。GitHub (OAuth アプリ経由) アクションを持つパイプラインの場合、CodePipeline は OAuth ベースのトークンを使用して GitHub リポジトリに接続します。対照的に、GitHub アクション (GitHub App 経由) は接続リソースを使用して GitHub リポジトリに AWS リソースを関連付けます。接続リソースは、アプリベースのトークンを使用して接続します。接続を使用する推奨される GitHub アクションにパイプラインを更新する方法の詳細については [GitHub (OAuth アプリ経由) ソースアクションを GitHub (GitHub アプリ経由) ソースアクションに更新する](update-github-action-connections.md) を参照してください。アプリベースの GitHub アクセスとは対照的な OAuth ベースの GitHub アクセスの詳細については、[https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps](https://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps) を参照してください。

GitHub と統合するために、CodePipeline はパイプライン用の OAuth アプリケーションを作成します。CodePipeline は、GitHub (OAuth アプリ経由) ソースアクションでパイプラインの変更検出を管理するためにウェブフックを使用します。

**注記**  
で GitHub (GitHub App 経由) ソースアクションを設定する場合 CloudFormation、GitHub トークン情報を含めたり、ウェブフックリソースを追加したりすることはありません。「ユーザーガイド」の「[AWS::CodeStarConnections::Connection](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarconnections-connection.html)」に示すように、接続リソースを設定します* CloudFormation 。*

このリファレンスには、GitHub (OAuth アプリ経由) アクションに関する次のセクションが含まれています。
+ パイプラインに GitHub (OAuth アプリ経由) ソースアクションとウェブフックを追加する方法については、「[GitHub (OAuth アプリ経由) ソースアクションの追加](#appendix-github-methods)」を参照してください。
+ GitHub (OAuth アプリ経由) ソースアクションの設定パラメータと YAML/JSON スニペットの例については、「[GitHub (OAuth アプリ経由) ソースアクションリファレンス](#action-reference-GitHub)」を参照してください。

**重要**  
CodePipeline ウェブフックを作成するときは、独自の認証情報を使用したり、複数のウェブフック間で同じシークレットトークンを再利用したりしないでください。セキュリティを最適化するには、作成するウェブフックごとに一意のシークレットトークンを生成します。シークレットトークンは、ユーザーが指定する任意の文字列で、ウェブフックペイロードの整合性と信頼性を保護するために、CodePipeline に送信するウェブフックペイロードを GitHub で計算して署名するために使用します。独自の認証情報を使用したり、複数のウェブフック間で同じトークンを再利用したりすると、セキュリティの脆弱性につながる可能性があります。

**注記**  
シークレットトークンを指定していた場合は、レスポンスで編集されます。

**Topics**
+ [GitHub (OAuth アプリ経由) ソースアクションの追加](#appendix-github-methods)
+ [GitHub (OAuth アプリ経由) ソースアクションリファレンス](#action-reference-GitHub)

## GitHub (OAuth アプリ経由) ソースアクションの追加
<a name="appendix-github-methods"></a>

GitHub (OAuth アプリ経由) ソースアクションを CodePipeline に追加するには、次の手順を実行します。
+ CodePipeline コンソールの **[パイプラインの作成]** ウィザード ([カスタムパイプラインを作成する (コンソール)](pipelines-create.md#pipelines-create-console))、または **[アクションを編集する]** ページを使用して、**[GitHub]** プロバイダオプションを選択します。コンソールは、ソースが変更されたときにパイプラインを開始するウェブフックを作成します。
+ CLI を使用して、`GitHub` アクションのアクション設定を追加し、次のようにリソースを追加作成します。
  + `GitHub` でのアクション設定の例を [GitHub (OAuth アプリ経由) ソースアクションリファレンス](#action-reference-GitHub) で使用し、[パイプラインを作成する (CLI)](pipelines-create.md#pipelines-create-cli) で表示されるようなアクションを作成します。
  + 定期的にチェックを無効にし、変更検出を手動で作成します。これは、変更検出方法によりソースをポーリングすることでパイプラインが開始されるためです。ポーリングパイプラインを GitHub (OAuth アプリ経由) アクションのウェブフックに移行します。

## GitHub (OAuth アプリ経由) ソースアクションリファレンス
<a name="action-reference-GitHub"></a>

**注記**  
GitHub (OAuth アプリ経由) アクションの使用はお勧めしませんが、GitHub (OAuth アプリ経由) アクションを持つ既存のパイプラインは何の影響なく引き続き動作します。GitHub (OAuth アプリ経由) アクションを持つパイプラインの場合、CodePipeline は OAuth ベースのトークンを使用して GitHub リポジトリに接続します。対照的に、新しい GitHub アクション (GitHub App 経由) は、接続リソースを使用して GitHub リポジトリに AWS リソースを関連付けます。接続リソースは、アプリベースのトークンを使用して接続します。推奨される GitHub アクションを使用した接続でパイプラインを更新する方法の詳細については「[GitHub (OAuth アプリ経由) ソースアクションを GitHub (GitHub アプリ経由) ソースアクションに更新する](update-github-action-connections.md)」 を参照してください。

設定された GitHub リポジトリとブランチで新しいコミットが行われたときに、パイプラインをトリガーします。

GitHub と統合するため、CodePipeline はパイプラインの OAuth アプリケーションまたは個人用アクセストークンを使用します。コンソールを使用してパイプラインを作成または編集する場合、CodePipeline は GitHub Webhook を作成し、リポジトリに変更が生じた場合に、パイプラインを開始するようにします。

GitHub アクションを介してパイプラインを接続する前に、GitHub アカウントとリポジトリを作成しておく必要があります。

CodePipeline のリポジトリへのアクセスを制限する場合は、GitHub アカウントを作成し、CodePipeline と統合するリポジトリのみにアカウントのアクセス許可を付与します。CodePipeline を設定する際は、そのアカウントを使用し、パイプラインのソースステージの GitHub リポジトリを使用します。

詳細については、GitHub ウェブサイトの [GitHub 開発者向けドキュメント](https://developer.github.com)を参照してください。

**Topics**
+ [アクションタイプ](#action-reference-GitHub-type)
+ [設定パラメータ](#action-reference-GitHub-config)
+ [入力アーティファクト](#action-reference-GitHub-input)
+ [出力アーティファクト](#action-reference-GitHub-output)
+ [出力変数](#action-reference-GitHub-variables)
+ [アクションの宣言 (GitHub の例)](#action-reference-GitHub-example)
+ [GitHub (OAuth) への接続](#action-reference-GitHub-auth)
+ [関連情報](#action-reference-GitHub-links)

### アクションタイプ
<a name="action-reference-GitHub-type"></a>
+ カテゴリ:`Source`
+ 所有者: `ThirdParty`
+ プロバイダー: `GitHub`
+ バージョン: `1`

### 設定パラメータ
<a name="action-reference-GitHub-config"></a>

**所有者**  
必須: はい  
GitHub リポジトリを所有する GitHub ユーザーまたは組織の名前。

**Repo**  
必須: はい  
ソースの変更が検出されるリポジトリの名前。

**ブランチ**  
必須: はい  
ソースの変更が検出されるブランチの名前。

**OAuthToken**  
必須: はい  
GitHub リポジトリで CodePipeline が操作を実行できるようにするための GitHub 認証トークンを表します。エントリは、常に 4 つのアスタリスクでマスクされた状態で表示されます。これは、次のいずれかの値を表します。  
+ コンソールを使用してパイプラインを作成すると、CodePipeline は、OAuth トークンを使用して GitHub 接続を登録します。
+ を使用してパイプライン AWS CLI を作成する場合、このフィールドで GitHub 個人用アクセストークンを渡すことができます。アスタリスク (\$1\$1\$1\$1) を GitHub からコピーした個人用アクセストークンに置き換えます。`get-pipeline` を実行してアクション設定を表示すると、この値の 4 つのアスタリスクマスクが表示されます。
+  CloudFormation テンプレートを使用してパイプラインを作成する場合は、まずトークンをシークレットとして保存する必要があります AWS Secrets Manager。このフィールドの値は、`{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}` など Secrets Manager に保存されたシークレットへの動的リファレンスとして含めます。
GitHub のスコープに関する詳細については、GitHub ウェブサイトの「[GitHub 開発者 API リファレンス](https://developer.github.com/v3/oauth/#scopes)」を参照してください。

**PollForSourceChanges**  
必須: いいえ  
`PollForSourceChanges` は、 CodePipeline が GitHub リポジトリをポーリングしてソースを変更するかどうかを制御します。この方法の代わりに、ウェブフックを使用してソースの変更を検出することをお勧めします。ウェブフックの設定に関する詳細は、「[ポーリングパイプラインを Webhook に移行する (GitHub (OAuth アプリ経由) ソースアクション) (CLI)](update-change-detection.md#update-change-detection-cli-github)」または「[プッシュイベントのパイプラインを更新する (GitHub (OAuth アプリ経由) ソースアクション) (CloudFormation テンプレート)](update-change-detection.md#update-change-detection-cfn-github)」を参照してください。  
ウェブフックを設定する場合、パイプライン実行の重複を避けるため、`PollForSourceChanges` を `false` に設定します。
このパラメータの有効な値:  
+ `True`: 設定されている場合、CodePipeline はソースの変更についてポーリングします。
**注記**  
`PollForSourceChanges` を省略すると、CodePipeline はデフォルトでソースの変更についてポーリングします。この動作は、`PollForSourceChanges` が `true` に設定されている場合と同じです。
+ `False`: 設定されている場合、CodePipeline は、ソースの変更についてリポジトリをポーリングしません。ソースの変更を検出するようにウェブフックを構成する場合は、この設定を使用します。

### 入力アーティファクト
<a name="action-reference-GitHub-input"></a>
+ **アーティファクトの数:** `0`
+ **説明:** 入力アーティファクトは、このアクションタイプには適用されません。

### 出力アーティファクト
<a name="action-reference-GitHub-output"></a>
+ **アーティファクトの数:** `1` 
+ **説明:** このアクションの出力アーティファクトは、パイプライン実行のソースリビジョンとして指定されたコミットで設定されたリポジトリとブランチの内容を含む ZIP ファイルです。リポジトリから生成されたアーティファクトは、GitHub アクションの出力アーティファクトです。ソースコードのコミット ID は、パイプライン実行のトリガーとなるソースリビジョンとして、CodePipeline に表示されます。

### 出力変数
<a name="action-reference-GitHub-variables"></a>

このアクションを設定すると、パイプライン内のダウンストリームアクションのアクション設定によって参照できる変数が生成されます。このアクションは、アクションに名前空間がない場合でも、出力変数として表示できる変数を生成します。名前空間を使用してアクションを設定し、これらの変数をダウンストリームアクションの設定で使用できるようにします。

CodePipeline の変数についての詳細は、「[変数リファレンス](reference-variables.md)」を参照してください。

**CommitId**  
パイプライン実行をトリガーした GitHub コミット ID。コミット ID は、コミットの完全な SHA です。

**CommitMessage**  
パイプライン実行をトリガーしたコミットに関連付けられた説明メッセージ (存在する場合)。

**CommitUrl**  
パイプラインをトリガーしたコミットの URL アドレス。

**RepositoryName**  
パイプラインをトリガーしたコミットが実行された GitHub リポジトリの名前。

**BranchName**  
ソースの変更が行われた GitHub リポジトリのブランチの名前。

**AuthorDate**  
コミットが認証された日付 (タイムスタンプ形式)。

**CommitterDate**  
コミットがコミットされた日付 (タイムスタンプ形式)。

### アクションの宣言 (GitHub の例)
<a name="action-reference-GitHub-example"></a>

------
#### [ YAML ]

```
Name: Source
Actions:
  - InputArtifacts: []
    ActionTypeId:
      Version: '1'
      Owner: ThirdParty
      Category: Source
      Provider: GitHub
    OutputArtifacts:
      - Name: SourceArtifact
    RunOrder: 1
    Configuration:
      Owner: MyGitHubAccountName
      Repo: MyGitHubRepositoryName
      PollForSourceChanges: 'false'
      Branch: main
      OAuthToken: '{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}'
    Name: ApplicationSource
```

------
#### [ JSON ]

```
{
    "Name": "Source",
    "Actions": [
        {
            "InputArtifacts": [],
            "ActionTypeId": {
                "Version": "1",
                "Owner": "ThirdParty",
                "Category": "Source",
                "Provider": "GitHub"
            },
            "OutputArtifacts": [
                {
                    "Name": "SourceArtifact"
                }
            ],
            "RunOrder": 1,
            "Configuration": {
                "Owner": "MyGitHubAccountName",
                "Repo": "MyGitHubRepositoryName",
                "PollForSourceChanges": "false",
                "Branch": "main",
                "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}"
            },
            "Name": "ApplicationSource"
        }
    ]
},
```

------

### GitHub (OAuth) への接続
<a name="action-reference-GitHub-auth"></a>

初めて GitHub リポジトリをパイプラインに追加するコンソールを使用する場合、CodePipeline のリポジトリへのアクセスを承認するように要求されます。トークンには、次の GitHub スコープが必要です。
+ `repo` スコープ。これは、パブリックおよびプライベートリポジトリからパイプラインにアーティファクトを読み込んでプルする完全制御に使用されます。
+ `admin:repo_hook` スコープ。これは、リポジトリフックの完全制御に使用されます。

CLI または CloudFormation テンプレートを使用する場合は、GitHub で既に作成した個人用アクセストークンの値を指定する必要があります。

### 関連情報
<a name="action-reference-GitHub-links"></a>

このアクションを利用する際に役立つ関連リソースは以下の通りです。
+ [AWS CloudFormation ユーザーガイド AWS::CodePipeline::Webhook](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html) のリソースリファレンス – これには、リソースのフィールド定義、例、スニペットが含まれます CloudFormation。
+ [AWS CloudFormation AWS::CodeStar::GitHubRepository ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestar-githubrepository.html) のリソースリファレンス フィールド定義、例および CloudFormationにあるリソースに対するスニペットが含まれます。
+ [チュートリアル: を使用して Android アプリを構築およびテストするパイプラインを作成する AWS Device Farm](tutorials-codebuild-devicefarm.md) このチュートリアルでは、GitHub ソースでパイプラインを作成するためのビルド仕様ファイルとサンプルアプリケーションを提供します。CodeBuild および AWS Device Farmを使用して Android アプリ を構築し、テストします。