# Informazioni di base su TravisCI

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

## Accesso

TravisCI si integra direttamente con diverse piattaforme git come Github, Bitbucket, Assembla e Gitlab. Chiederà all'utente di concedere a TravisCI i permessi per accedere ai repo che desidera integrare con TravisCI.

Ad esempio, in Github chiederà i seguenti permessi:

- `user:email` (solo lettura)
- `read:org` (solo lettura)
- `repo`: Concede accesso in lettura e scrittura al codice, agli stati di commit, ai collaboratori e agli stati di distribuzione per repository e organizzazioni pubbliche e private.

## Segreti Cifrati

### Variabili d'Ambiente

In TravisCI, come in altre piattaforme CI, è possibile **salvare a livello di repo segreti** che saranno salvati cifrati e **decrittati e inviati nella variabile d'ambiente** della macchina che esegue la build.

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

È possibile indicare le **branche a cui i segreti saranno disponibili** (per impostazione predefinita tutte) e anche se TravisCI **dovrebbe nascondere il suo valore** se appare **nei log** (per impostazione predefinita lo farà).

### Segreti Cifrati Personalizzati

Per **ogni repo** TravisCI genera un **coppia di chiavi RSA**, **mantiene** quella **privata** e rende disponibile la **chiave pubblica** del repository a coloro che hanno **accesso** al repository.

Puoi accedere alla chiave pubblica di un repo con:
```
travis pubkey -r <owner>/<repo_name>
travis pubkey -r carlospolop/t-ci-test
```
Quindi, puoi utilizzare questa configurazione per **crittografare segreti e aggiungerli al tuo `.travis.yaml`**. I segreti saranno **decrittografati quando viene eseguita la build** e accessibili nelle **variabili d'ambiente**.

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

Nota che i segreti crittografati in questo modo non appariranno elencati nelle variabili d'ambiente delle impostazioni.

### File Crittografati Personalizzati

Allo stesso modo di prima, TravisCI consente anche di **crittografare file e poi decrittografarli durante la build**:
```
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.
```
Nota che quando si crittografa un file, 2 variabili di ambiente saranno configurate all'interno del repository, come ad esempio:

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

## TravisCI Enterprise

Travis CI Enterprise è una **versione on-prem di Travis CI**, che puoi distribuire **nella tua infrastruttura**. Pensa alla versione ‘server’ di Travis CI. Utilizzare Travis CI ti consente di abilitare un sistema di Integrazione Continua/Distribuzione Continua (CI/CD) facile da usare in un ambiente, che puoi configurare e proteggere come desideri.

**Travis CI Enterprise è composto da due parti principali:**

1. I **servizi TCI** (o Servizi Core TCI), responsabili dell'integrazione con i sistemi di controllo versione, dell'autorizzazione delle build, della pianificazione dei lavori di build, ecc.
2. Il **Worker TCI** e le immagini dell'ambiente di build (chiamate anche immagini OS).

**I servizi Core TCI richiedono quanto segue:**

1. Un database **PostgreSQL11** (o successivo).
2. Un'infrastruttura per distribuire un cluster Kubernetes; può essere distribuito in un cluster di server o in una singola macchina se necessario.
3. A seconda della tua configurazione, potresti voler distribuire e configurare alcuni dei componenti da solo, ad esempio, RabbitMQ - consulta il [Setting up Travis CI Enterprise](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) per ulteriori dettagli.

**Il Worker TCI richiede quanto segue:**

1. Un'infrastruttura in cui può essere distribuita un'immagine docker contenente il **Worker e un'immagine di build collegata**.
2. Connettività a determinati componenti dei Servizi Core di Travis CI - consulta il [Setting Up Worker](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) per ulteriori dettagli.

La quantità di Worker TCI distribuiti e delle immagini OS dell'ambiente di build determinerà la capacità totale concorrente della distribuzione di Travis CI Enterprise nella tua infrastruttura.

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

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