Travis CIではGitHub Repositoryのアクセス権ごとにどんな操作が可能であるか確認してみた
こんにちは、CX事業本部の若槻です。
CircleCIやGitHub Actionsなど、システムのCI/CDを実現するためのサービスはいくつかありますが、本記事アイキャッチのTravisおじさんが目印なTravis CIもそのうちの一つです。
Travis CIも他のCI/CDサービスと同様に、GitHubのユーザーアカウントやOrganizationアカウントと連携させてCI/CDを実施する使い方となります。
今回は、Travis CIを利用してGitHubのOrganizationアカウント上のリポジトリのCIを試してみた上で、ユーザーがRepositoryに対して持つアクセス権ごとにTravis CIでどんな操作が実施可能であるか確認してみました。
Travis CIでCIをしてみる
まず、Travis CIを利用してGitHubのOrganizationアカウント上のリポジトリをCIしてみます。
Travis CIへのOrganizationアカウントの連携
ここではTravis CIへのGitHubのOrganizationアカウントの連携を行います。なお、すでにユーザーアカウントではTravis CIにGitHub連携によりサインアップ済みとなります。
ユーザーアカウントでTravis CIへログインし、アカウントページを開きます。現在はまだユーザーアカウントの情報とリポジトリのみが表示されています。[Review and add]をクリックします。
ユーザーアカウントのGitHubのセッションで、OrganizationのTravis CIに対するPermissionを要求するページが開くので、追加したいOraganizationの右横の[Request]をクリックします。
以下のように聞かれたら[Request approval from owners]をクリックします。
OrganizationのOWNER宛に[GitHub] Third-party application approval request for <Organization名>
というタイトルのメールが送付されるので、OWNERはメール内のリンクURLから下記のようなページを開いたら、[Grant access]をクリックしてTravis CIに対するPermission要求を承認します。
以下のようにApproved
となればOWNERの操作は完了です。
ユーザーアカウントでTravis CIのアカウントページに戻ると、[ORGANIZATIONS]欄に先程承認されたOrganizationアカウントが追加されているのでクリックします。
GitHub AppのActivateを要求されます。[Activate]をクリックします。
ユーザーアカウントのGitHubのセッションで、Organization上でのGitHub AppのInstallの承認を要求するページが開くので、GitHub Appのアクセス可能なRepositoryを選択して[Approve & Request]をクリックします。
以下のような画面となりInstallが要求されます。
OrganizationのOWNER宛にRequest to install Travis CI in <Organization名>
というタイトルのメールが送付されるので、OWNERはメール内のリンクURLから下記のようなページを開いたら、[Approve & Install]をクリックしてAppのInstallを承認します。
(確認)InstallされたGitHub Appは、Organizationアカウントで[Settings] - [Installed GitHub Apps]より確認できます。
ユーザーアカウントでTravis CIのアカウントページからOrganizationのRepository一覧に戻ると、[Repositories]タブにOrganizationアカウント上のRepository一覧(ユーザーアカウントがGitHub側でアクセス権を持つもののみ)が表示されています。
これで、Travis CIへのOrganizationアカウントの連携を行うことができました。
RepositoryのCIの実施
ここでは連携したOrganization上のRepositoryをもとにTravis CI上でCIを実施してみます。
test2
Repositoryで以下の.travis.yml
ファイル(install
でpipenvによるライブラリインストールを行い、script
でコードのLintとユニットテストを行う)を作成し、GitHubにPushします。
language: python python: - "3.7" install: - pip install pipenv - pipenv sync script: - make lint test-unit
ユーザーアカウントでTravis CIのトップページを開くと、test2
Repositoryの表示色が黄色となり、Build実施中となっています。
少し待つと、表示色が緑色となり、test2
RepositoryのBuildがPASSしました。
これで、Organization上のRepositoryをもとにTravis CI上でCIを実施できました。
Repositoryのアクセス権ごとに可能な操作について
次に、GitHub側でのRepositoryに対してユーザーアカウントが持つアクセス権ごとに、Travis CI上でどのような操作が可能なのか確認してみます。
現在、あるユーザーアカウント(一般ユーザーアカウント)は所属するOrganization上の3つのRepositoryそれぞれに対してRead
、Write
、Admin
のアクセス権を持っています。また、Organizationにはこれら3つ以外にもRepositoryが作成されています。
RepositoryのSettingの可否について
Travis CI側でSetting(Repositoryごとの環境変数やCron Jobの設定など)が可能なRepositoryについて確認してみます。
一般ユーザーアカウントでTravis CIのアカウントページからOrganizationのRepository一覧を開くと、[Repositories]タブに先程確認した3つのRepositoryがすべて表示されました。Repository名の右側の[Settings]ボタンはWrite
とAdmin
の権限があるRepositoryのみがクリック可能となっています。
一方で、OrganizationのOWNER権限を持つアカウント(OWNERアカウント)でTravis CIのアカウントページからOrganizationのRepository一覧を開くと、Organization上のすべてのRepositoryが表示されました。
Buildの状態や履歴へのアクセス可否について
Buildの状態や履歴へのアクセスが可能なRepositoryについて確認してみます。
OWNERアカウントでTravis CIのトップページを開くと、Organization上のすべてのRepositoryのBuildの実行履歴が確認できるようになっていました。
一方で、一般ユーザーアカウントTravis CIのトップページを開くと、自身がアクセス権を持っているRepositoryのBuildの実行履歴が確認できるようになっていました。
また、一般ユーザーアカウントでRead
権限のみを持っているRepositoryのBuildを[Restart build]ボタンから実行できました。
アクセス権ごとに可能な操作まとめ
GitHub側でのOrganization上のRepositoryに対するアクセス権の種類ごとに、Travis CI側でユーザーがRepositoryに対してどんな操作が可能であるか、ここまでの結果をまとめると以下のようになりました。
None | Read | Write | Admin | 補足 | |
---|---|---|---|---|---|
Repository追加 | - | ○ | ○ | ○ | 自動で追加される |
Repository設定 | - | - | ○ | ○ | |
CI/CD実行履歴の表示 | - | ○ | ○ | ○ | |
CI/CD実行履歴からの再実行 | - | ○ | ○ | ○ |
この結果ですが、Travis CIの以下のドキュメントの記述通りとならなかったため、もやっとした結果となりました。
Access rights on Travis CI is based on the access rights on GitHub or Bitbucket:
- Users that can access a repository on GitHub or Bitbucket can see the build status and logs on Travis CI.
- Users that can push to a repository on GitHub or Bitbucket can trigger, cancel and restart builds, and change its settings.
- Users that have admin access to a repository on GitHub or Bitbucket can enable/disable it on Travis CI.
おわりに
Travis CIを利用してGitHubのOrganizationアカウント上のリポジトリをCIして、また、Repositoryのアクセス権ごとにどんな操作が実施可能であるか確認をしてみました。
Travis CIは今まで触ったことがなかったのですが、たまたま目にした以下の記事で気になっていたため、今回一通り触ることが出来てよかったです。
オープンソースの継続的インテグレーションサービスTravis CIは、ベルリン生まれだが世界的にも人気が高い。その同社がこのほど、オンプレミスとクラウドアプリケーション向けにさまざまなSQLデータベース管理ツールを提供しているIderaに買収された。この買収は、Circle CIなどそのほかのCIサービスがTravis CIにマーケットシェアを奪われつつあったまさにこの時期に行われた。
参考
以上