# 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 / 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}}