Travis CIではGitHub Repositoryのアクセス権ごとにどんな操作が可能であるか確認してみた

2020.06.01

こんにちは、CX事業本部の若槻です。

CircleCIGitHub 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]をクリックします。 5c00048b-1471-470d-84ae-5a247b0af806.png

ユーザーアカウントのGitHubのセッションで、OrganizationのTravis CIに対するPermissionを要求するページが開くので、追加したいOraganizationの右横の[Request]をクリックします。 938e1f09-31f5-4666-a960-5b4ecbd23b38.png

以下のように聞かれたら[Request approval from owners]をクリックします。 5a6c1139-26a3-4cd2-a558-e225c38af752.png

OrganizationのOWNER宛に[GitHub] Third-party application approval request for <Organization名>というタイトルのメールが送付されるので、OWNERはメール内のリンクURLから下記のようなページを開いたら、[Grant access]をクリックしてTravis CIに対するPermission要求を承認します。 d5dd3872-b4db-4906-9e3f-8999d2d03729.png

以下のようにApprovedとなればOWNERの操作は完了です。 20bb55da-9b39-42f3-8cf5-95457a2a29c5.png

ユーザーアカウントでTravis CIのアカウントページに戻ると、[ORGANIZATIONS]欄に先程承認されたOrganizationアカウントが追加されているのでクリックします。 526493e5-a154-4771-a9aa-21f533388ad1.png

GitHub AppのActivateを要求されます。[Activate]をクリックします。 da65d073-80d9-49c0-972a-c5b2570ca633.png

ユーザーアカウントのGitHubのセッションで、Organization上でのGitHub AppのInstallの承認を要求するページが開くので、GitHub Appのアクセス可能なRepositoryを選択して[Approve & Request]をクリックします。 8f90700a-0a2c-4be8-8dd0-21873c394071.png

以下のような画面となりInstallが要求されます。 083230ea-3ba8-424f-95ac-f070bd19dda2.png

OrganizationのOWNER宛にRequest to install Travis CI in <Organization名>というタイトルのメールが送付されるので、OWNERはメール内のリンクURLから下記のようなページを開いたら、[Approve & Install]をクリックしてAppのInstallを承認します。 7b14d0d0-3c07-4a07-83b4-738f0666e516.png

(確認)InstallされたGitHub Appは、Organizationアカウントで[Settings] - [Installed GitHub Apps]より確認できます。 スクリーンショット 2020-06-01 20.58.25.png

ユーザーアカウントでTravis CIのアカウントページからOrganizationのRepository一覧に戻ると、[Repositories]タブにOrganizationアカウント上のRepository一覧(ユーザーアカウントがGitHub側でアクセス権を持つもののみ)が表示されています。 c1beef6c-602f-4767-9d59-0922468f6ca6.png

これで、Travis CIへのOrganizationアカウントの連携を行うことができました。

RepositoryのCIの実施

ここでは連携したOrganization上のRepositoryをもとにTravis CI上でCIを実施してみます。

test2Repositoryで以下の.travis.ymlファイル(installでpipenvによるライブラリインストールを行い、scriptでコードのLintとユニットテストを行う)を作成し、GitHubにPushします。

.travis.yml

language: python
python:
  - "3.7"
install:
  - pip install pipenv
  - pipenv sync
script:
  - make lint test-unit

ユーザーアカウントでTravis CIのトップページを開くと、test2Repositoryの表示色が黄色となり、Build実施中となっています。 f6f9bc57-065e-44c6-8ad5-e66cef47183e.png

少し待つと、表示色が緑色となり、test2RepositoryのBuildがPASSしました。 b2549d04-5419-4ec0-bb9f-59d05bbbccfb.png

これで、Organization上のRepositoryをもとにTravis CI上でCIを実施できました。

Repositoryのアクセス権ごとに可能な操作について

次に、GitHub側でのRepositoryに対してユーザーアカウントが持つアクセス権ごとに、Travis CI上でどのような操作が可能なのか確認してみます。

現在、あるユーザーアカウント(一般ユーザーアカウント)は所属するOrganization上の3つのRepositoryそれぞれに対してReadWriteAdminのアクセス権を持っています。また、Organizationにはこれら3つ以外にもRepositoryが作成されています。 60b490dd-aa5a-4893-9259-bc318cf4a2e2.png

RepositoryのSettingの可否について

Travis CI側でSetting(Repositoryごとの環境変数やCron Jobの設定など)が可能なRepositoryについて確認してみます。

一般ユーザーアカウントでTravis CIのアカウントページからOrganizationのRepository一覧を開くと、[Repositories]タブに先程確認した3つのRepositoryがすべて表示されました。Repository名の右側の[Settings]ボタンはWriteAdminの権限があるRepositoryのみがクリック可能となっています。 c1beef6c-602f-4767-9d59-0922468f6ca6.png

一方で、OrganizationのOWNER権限を持つアカウント(OWNERアカウント)でTravis CIのアカウントページからOrganizationのRepository一覧を開くと、Organization上のすべてのRepositoryが表示されました。 スクリーンショット 2020-06-01 22.12.28.png

Buildの状態や履歴へのアクセス可否について

Buildの状態や履歴へのアクセスが可能なRepositoryについて確認してみます。

OWNERアカウントでTravis CIのトップページを開くと、Organization上のすべてのRepositoryのBuildの実行履歴が確認できるようになっていました。 8e80f109-a87a-4a5e-8389-21a7e593ae51.png

一方で、一般ユーザーアカウントTravis CIのトップページを開くと、自身がアクセス権を持っているRepositoryのBuildの実行履歴が確認できるようになっていました。 image.png

また、一般ユーザーアカウントでRead権限のみを持っているRepositoryのBuildを[Restart build]ボタンから実行できました。 image.png

アクセス権ごとに可能な操作まとめ

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にマーケットシェアを奪われつつあったまさにこの時期に行われた。

参考

以上