この記事の操作
Harness は「AI For Everything After Code」を掲げる CI/CD プラットフォームです。CI パイプライン実行だけでなく、Git リポジトリのホスティング機能(Code Repository)も提供しており、既存の GitHub リポジトリをそのままインポートして Harness 上で管理できるらしいので試してみました。
Harness にサインアップする
Harness はクレジットカード不要で無料から始められます。トップページの「Get started」からそのままサインアップできます。

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


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 自体はどちらを選んでも同じように使えます。


サイドバーから「Code Repository」を選択すると、Default Project 配下の Repositories 画面が開きます。初期状態は「No repositories yet」です。
GitHub リポジトリをインポートする
「+ Create Repository」ボタン右の下矢印をクリックすると「Create Repository」「Import Repository」「Import Repositories」の3つが選べます。単体でインポートしたいので「Import Repository」を選択しました。


「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」を選択し、インポートしたいリポジトリを個別に指定します。

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

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

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

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


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

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

まとめ
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 内でソースも管理できるのは便利なオプションになりそうです。
開発ノートをもっと読む
技術的な学びや実践的な開発ノートをもっと探索してみませんか?
⭐ この記事への反応
はてなアカウントでスターを付けることができます
関連記事
GitHub Actionsで特定Nodeバージョンのテスト失敗を許容する方法
Node.js の最新バージョンがリリースされた直後、プロジェクトの互換性を確認したいが、テストが失敗してもデプロイフローは止めたくない。そんな状況に直面したことはないでしょうか。 この記事では、GitHub Actio […]
CircleCIのworkspaceをcacheに切り替えてストレージ利用量を8GB節約する
CircleCIを運用していると、ストレージ使用量の増加に悩まされることがあります。今回、あるNode.jsプロジェクトでストレージが圧迫されている状況を調査したところ、workspaceの不適切な使用が原因だとわかりま […]
