GitHub リポジトリで GitLab CI/CD を使用する場合

GitLab CI/CDはGitHub.comと GitHub Enterpriseで使用することができます。CI/CDプロジェクトを作成し、GitHubリポジトリとGitLabを接続します。

GitLabのCI/CDパイプラインをGitHubリポジトリで使うのビデオをご覧ください。

note
GitHubの制限によりGitHub OAuthを使用してGitHubを外部のCI/CDリポジトリとして認証することはできません。

個人アクセストークンでの接続

個人アクセストークンはGitHub.comのリポジトリとGitLabの接続にのみ使用でき、GitHubユーザーはオーナーロールを持っている必要があります。

GitLabにリポジトリへのアクセスを許可するために、GitHubで1回限りの認証を行うには:

  1. GitHub でトークンを作成します:
    1. https://github.com/settings/tokens/new を開いてください。
    2. パーソナルアクセストークンを作成します。
    3. トークンの説明を入力し、GitLab がプロジェクトにアクセスし、コミットステータスを更新し、新しいコミットを GitLab に通知するためのウェブフックを作成できるように、repoadmin:repo_hook を許可するようにスコープを更新します。
  2. GitLab でプロジェクトを作成します:
    1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
    2. View all my projects を選択します。
    3. ページの右側で、新規プロジェクトを選択します。
    4. Run CI/CD for external repositoryを選択します。
    5. GitHub を選択します。
    6. パーソナルアクセストークンには、トークンを貼り付けます。
    7. リポジトリの一覧]を選択します。
    8. Connectを選択して、リポジトリを選択します。
  3. GitHub で、.gitlab-ci.yml を追加してGitLab CI/CD を設定します。

GitLab:

  1. プロジェクトをインポートします。
  2. プルミラーリングを有効にします。
  3. GitHub プロジェクトインテグレーションを有効にします。
  4. GitLab に新しいコミットを通知する GitHub のウェブフックを作成します。

手動で接続

GitLab.comGitHub Enterpriseを使うには、この方法を使います。

リポジトリの GitLab CI/CD を手動で有効にするには:

  1. GitHub でトークンを作成します:
    1. https://github.com/settings/tokens/new を開いてください。
    2. パーソナルアクセストークンを作成します。
    3. トークンの説明を入力し、GitLab がプロジェクトにアクセスしてコミットステータスを更新できるように、repo を許可するようにスコープを更新します。
  2. GitLab でプロジェクトを作成します:
    1. 左のサイドバーで、Search を選択するか、次のページに進んでください。
    2. View all my projects を選択します。
    3. 新規プロジェクトを選択します。
    4. Run CI/CD for externalrepositoryとRepository by URLを選択します。
    5. Git リポジトリの URLフィールドに、GitHub リポジトリの HTTPS URL を入力します。プロジェクトが非公開の場合は、先ほど作成した個人アクセストークンを認証に使用します。
    6. その他のフィールドをすべて入力し、プロジェクトの作成を選択します。GitLabは自動的にポーリングベースのプルミラーリングを設定します。
  3. GitLabで、GitHubプロジェクトインテグレーションを有効にします:
    1. 左のサイドバーで、Settings > Integrations を選択してください。
    2. アクティブ]チェックボックスを選択します。
    3. 個人アクセストークンと HTTPS リポジトリ URL をフォームに貼り付け、[保存] を選択します。
  4. GitLab で、新しいコミットを GitLab に通知する GitHub ウェブフックを認証するために、API スコープでパーソナルアクセストークンを作成します。
  5. GitHubの設定 > Webhooksから、新しいコミットをGitLabに通知するWebフックを作成します。

    ウェブフックの URL には GitLab API を指定し、先ほど作成した GitLab パーソナルアクセストークンを使ってプルミラーリングを起動します:

    https://gitlab.com/api/v4/projects/<NAMESPACE>%2F<PROJECT>/mirror/pull?private_token=<PERSONAL_ACCESS_TOKEN>
    

    Let me select individual eventsオプションを選択し、Pull requestsPushesのチェックボックスをオンにします。これらの設定は、外部からのプルリクエスト用のパイプラインに必要です。

  6. GitHubで、GitLab CI/CDを設定するために.gitlab-ci.yml