# 基本的なTravisCI情報

{{#include ../../banners/hacktricks-training.md}}

## アクセス

TravisCIは、Github、Bitbucket、Assembla、Gitlabなどの異なるgitプラットフォームと直接統合されます。ユーザーにTravisCIが統合したいリポジトリにアクセスするための権限を与えるよう求めます。

例えば、Githubでは以下の権限を求めます：

- `user:email`（読み取り専用）
- `read:org`（読み取り専用）
- `repo`：公開およびプライベートリポジトリと組織のコード、コミットステータス、コラボレーター、およびデプロイメントステータスへの読み取りおよび書き込みアクセスを付与します。

## 暗号化された秘密

### 環境変数

TravisCIでは、他のCIプラットフォームと同様に、**リポジトリレベルで秘密を保存する**ことが可能で、これらは暗号化されて保存され、**ビルドを実行するマシンの環境変数に復号化されてプッシュされます**。

![](<../../images/image (203).png>)

**秘密が利用可能になるブランチを指定する**ことが可能です（デフォルトではすべて）し、またTravisCIが**ログに表示された場合にその値を隠すべきか**（デフォルトでは隠します）も指定できます。

### カスタム暗号化された秘密

**各リポジトリ**に対してTravisCIは**RSAキーペア**を生成し、**プライベート**キーを保持し、リポジトリに**アクセス**できる人々にリポジトリの**公開鍵を提供します**。

リポジトリの公開鍵にアクセスするには、次のようにします：
```
travis pubkey -r <owner>/<repo_name>
travis pubkey -r carlospolop/t-ci-test
```
このセットアップを使用して、**秘密を暗号化し、それを `.travis.yaml` に追加できます**。秘密は **ビルドが実行されるときに復号化され**、**環境変数**でアクセス可能になります。

![](<../../images/image (139).png>)

この方法で暗号化された秘密は、設定の環境変数にリストされないことに注意してください。

### カスタム暗号化ファイル

以前と同様に、TravisCIは**ファイルを暗号化し、ビルド中に復号化することも許可します**：
```
travis encrypt-file super_secret.txt -r carlospolop/t-ci-test

encrypting super_secret.txt for carlospolop/t-ci-test
storing result as super_secret.txt.enc
storing secure env variables for decryption

Please add the following to your build script (before_install stage in your .travis.yml, for instance):

openssl aes-256-cbc -K $encrypted_355e94ba1091_key -iv $encrypted_355e94ba1091_iv -in super_secret.txt.enc -out super_secret.txt -d

Pro Tip: You can add it automatically by running with --add.

Make sure to add super_secret.txt.enc to the git repository.
Make sure not to add super_secret.txt to the git repository.
Commit all changes to your .travis.yml.
```
ファイルを暗号化する際には、リポジトリ内に2つの環境変数が設定されることに注意してください。

![](<../../images/image (170).png>)

## TravisCI Enterprise

Travis CI Enterpriseは、**Travis CIのオンプレミス版**であり、**あなたのインフラストラクチャにデプロイすることができます**。Travis CIの「サーバー」版と考えてください。Travis CIを使用すると、あなたが望むように構成およびセキュリティを設定できる環境で、使いやすい継続的インテグレーション/継続的デプロイメント（CI/CD）システムを有効にすることができます。

**Travis CI Enterpriseは2つの主要な部分で構成されています：**

1. TCI **サービス**（またはTCIコアサービス）は、バージョン管理システムとの統合、ビルドの承認、ビルドジョブのスケジューリングなどを担当します。
2. TCI **ワーカー**およびビルド環境イメージ（OSイメージとも呼ばれます）。

**TCIコアサービスには以下が必要です：**

1. **PostgreSQL11**（またはそれ以降）のデータベース。
2. Kubernetesクラスターをデプロイするためのインフラストラクチャ；必要に応じてサーバークラスターまたは単一のマシンにデプロイできます。
3. セットアップに応じて、RabbitMQなどのコンポーネントを自分でデプロイおよび構成することを検討するかもしれません - 詳細については[Travis CI Enterpriseの設定](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/)を参照してください。

**TCIワーカーには以下が必要です：**

1. **ワーカーとリンクされたビルドイメージを含むdockerイメージをデプロイできるインフラストラクチャ**。
2. 特定のTravis CIコアサービスコンポーネントへの接続 - 詳細については[ワーカーの設定](https://docs.travis-ci.com/user/enterprise/setting-up-worker/)を参照してください。

デプロイされたTCIワーカーおよびビルド環境OSイメージの数は、あなたのインフラストラクチャにおけるTravis CI Enterpriseデプロイメントの総同時容量を決定します。

![](<../../images/image (199).png>)

{{#include ../../banners/hacktricks-training.md}}
