---
title: "harnessでgithubリポジトリをimportしてみた"
date: 2026-07-04
categories:
  - "CI / CD"
  - "Harness"
url: "https://hidetaka.dev/ja/writing/dev-notes/import-github-repo-to-harness"
---

Harness は「AI For Everything After Code」を掲げる CI/CD プラットフォームです。CI パイプライン実行だけでなく、Git リポジトリのホスティング機能（Code Repository）も提供しており、既存の GitHub リポジトリをそのままインポートして Harness 上で管理できるらしいので試してみました。

## Harness にサインアップする

Harness はクレジットカード不要で無料から始められます。トップページの「Get started」からそのままサインアップできます。

![Harness のトップページ。「AI For Everything After Code」のキャッチコピーと Get started ボタンが表示されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/93853cce4288ba45a0a21d85161e7673-20260624101746.png)

サインアップ画面では Google や GitHub でのソーシャルログインに加え、Bitbucket・GitLab・LinkedIn・Azure にも対応しています。今回は「Continue with Github」でサインアップしました。

![Harness のサインアップ画面。Google・GitHub など複数の ID プロバイダに対応している](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/9e067ba39949e12777564e408fdb760b-20260624101757.png)

![GitHub の OAuth 認証画面。Harness Gateway by harness-app が hideokamoto アカウントへのメールアドレス read-only アクセスを要求している](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/5af7716738f72c21cad6de1155808edf-20260624101813.png)

GitHub 側では「Authorize Harness Gateway」の OAuth 認証ダイアログが表示されます。「Harness Gateway by harness-app」がメールアドレスへの read-only アクセスを要求するので、「Authorize harness-app」をクリックして認証を完了させます。

## ユースケースを選択して Code Repository を開く

認証が完了するとユースケースの選択画面が表示されます。「Continuous Integration」と「Continuous Delivery & GitOps」の2択から始める形です。今回は CI を選択しましたが、Code Repository 自体はどちらを選んでも同じように使えます。

![Harness のユースケース選択画面。Continuous Integration と Continuous Delivery & GitOps の2択が表示されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/bd96c3660c4ecdb17fef268a58b824ec-20260624101834.png)

![Harness の Code Repository 画面。Default Project の Repositories が空の状態で「No repositories yet」と表示されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/7ae3ec3c2c082dccdb04d6869e642cc3-20260624101916.png)

サイドバーから「Code Repository」を選択すると、Default Project 配下の Repositories 画面が開きます。初期状態は「No repositories yet」です。

## GitHub リポジトリをインポートする

「+ Create Repository」ボタン右の下矢印をクリックすると「Create Repository」「Import Repository」「Import Repositories」の3つが選べます。単体でインポートしたいので「Import Repository」を選択しました。

![Create Repository ボタンのドロップダウン。Create Repository・Import Repository・Import Repositories の3つが選択できる](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/39812d75f16c9c2545b8a5660072bdf0-20260624101932.png)

![Import a repository フォーム。Provider に Github、Organization・Repository・Name・Description の各フィールドがある](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/a23cbaae7892e3d71aa4ed5d91b5c35c-20260624102438.png)

「Import a repository」フォームでは Provider・Organization 名・リポジトリ名・Harness 上での表示名（Name）を入力します。プライベートリポジトリをインポートしようとしたところ、「Requires Authorization」にチェックを入れる必要があることに気づきました。チェックを入れると Token フィールドが出てきます。

repo import のためには PAT が必要らしい、ということで GitHub 側で発行しに行きます。

## GitHub PAT を発行する

GitHub の Settings > Developer settings > Personal access tokens (Fine-grained) から PAT を新規作成します。Repository access は「Only select repositories」を選択し、インポートしたいリポジトリを個別に指定します。

![GitHub の PAT 作成画面。Repository access で Public repositories・All repositories・Only select repositories の3択が表示されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/6c8f69ce3cdf2a5d64c504f3d5f19954-20260624110558.png)

Permissions は「Contents」に Read-only、「Metadata」（Required）に Read-only を設定します。今回は `alexa-kyoto-city-guide-skill` と `alexa-nekolog` の2リポジトリをインポートしたかったので、両方を選択した状態でトークンを生成しました。

![GitHub PAT の Only select repositories 設定。hideokamoto/alexa-kyoto-city-guide-skill と hideokamoto/alexa-nekolog を選択し、Permissions は Contents と Metadata を Read-only に設定して Generate token ボタンが表示されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/16e566ef37e7a79c356e531aa4ec2fab-20260624111409.png)

## インポートを実行する

生成したトークンを Harness の Token フィールドに貼り付け、「Import Repository」を実行します。今回は `hideokamoto/alexa-kyoto-city-guide-skill` を最初にインポートしました。

![Import a repository フォームの入力完了状態。Provider=Github、Organization=hideokamoto、Repository=alexa-kyoto-city-guide-skill、Requires Authorization にチェック、Token フィールドにトークンが入力されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/00b1a7a18c5c22fa9bc3704c47df8dd0-20260624111409.png)

同じ手順で `alexa-nekolog` もインポートし、Repositories 一覧に2リポジトリが並びました。インポートは数秒で完了します。

![Harness の Repositories 一覧。alexa-nekolog と alexa-kyoto-city-guide-skill の2リポジトリがインポートされて表示されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/6485d47439a7fc813ecb818104acd39e-20260624111409.png)

## インポート後のリポジトリを確認する

インポート後のリポジトリは Harness の UI 上でファイルツリーとコミット履歴を確認できます。8年前（2018年）のコミットも正常に取り込まれていました。

![Harness 上の alexa-kyoto-city-guide-skill リポジトリのファイル表示。src/index.js のコードが閲覧できる](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/fe5a0aee5bdf53a4412fa085fc0bff79-20260624111410.png)

![Harness 上の alexa-kyoto-city-guide-skill リポジトリのコミット履歴。2018年のコミットも正常にインポートされている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/7568c9cd275bcc24d09a92f33d8ed3fa-20260624111409.png)

Clone する場合は Harness 独自の URL（`https://git.harness.io/...`）が割り当てられます。GitHub の URL とは別物になるので、既存のローカル環境から使いたい場合はリモートの差し替えが必要です。初回クローン時は「Generate Clone Credential」でクレデンシャルを生成する必要があります。

![Harness の Clone Repository ダイアログ。HTTPS で https://git.harness.io/... という Harness 独自の Git URL が表示され、初回クローンには Generate Clone Credential が必要と案内されている](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/8d51964765870d06efd68cab58c62684-20260624111409.png)

リポジトリ設定から Webhook も設定できます。Payload URL と Secret を指定し、Branch created・PR created・PR merged など細かいイベント単位で外部サービスへの通知をトリガーできます。

![Harness リポジトリの Webhook 設定画面。Payload URL・Secret・SSL Verification と、Branch created・PR created など細かいイベント単位でトリガーを設定できる](https://wp-api.wp-kyoto.net/wp-content/uploads/2026/06/3fcc359fb8b4721b4c14b18a98ae7f81-20260624111409.png)

## まとめ

Harness の Code Repository 機能を使って GitHub のプライベートリポジトリをインポートしてみました。操作の流れは次のとおりです。

-   Harness にサインアップ（GitHub OAuth）

-   Code Repository > Import Repository を選択

-   プライベートリポジトリには GitHub PAT が必要（Contents + Metadata を Read-only）

-   インポート後はファイル閲覧・コミット履歴・Clone・Webhook 設定が Harness 上で完結

PAT が必要な点はやや手間ですが、Fine-grained tokens でリポジトリとスコープを絞って発行できるのでセキュリティ的にはちょうどよいかなと思います。Harness を CI/CD のメイン環境として使っているチームであれば、同じ UI 内でソースも管理できるのは便利なオプションになりそうです。