Outils pour utilisateurs

Outils du site


prog:travis

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
prog:travis [2020/04/04 19:11] – ↷ Page déplacée de travis à prog:travis rootprog:travis [2020/11/22 17:52] (Version actuelle) – [Deploy key] : déplacement de la création de la clé dans prog:ssh root
Ligne 1: Ligne 1:
-Ici, je ne parle que de l'intégration de Travis à GitHub.+~~NOCACHE~~
  
-====Lignes de commande====+=====travis.yml=====
  
-===Installation===+====Hello world==== 
 + 
 +===Cas basique commenté=== 
 + 
 +{{gh>https://github.com/bansan85/wiki_le_garrec_fr/blob/master/travis/helloworld.yml}} 
 + 
 +===Ordre d'exécution des commandes=== 
 + 
 +  OPTIONAL Install apt addons 
 +  OPTIONAL Install cache components 
 +  before_install 
 +  install 
 +  before_script 
 +  script 
 +  OPTIONAL before_cache (if and only if caching is effective) 
 +  after_success or after_failure 
 +  OPTIONAL before_deploy (if and only if deployment is active) 
 +  OPTIONAL deploy 
 +  OPTIONAL after_deploy (if and only if deployment is active) 
 +  after_script 
 + 
 +[[https://docs.travis-ci.com/user/job-lifecycle/|Job Lifecycle]] {{ :prog:travis:job_lifecycle_-_travis_ci_2020-06-24_22_36_33_.html |Archive le 24/06/2020}} 
 + 
 +=====Lignes de commande===== 
 + 
 +====Installation====
  
 Il faut l'installer et aussi s'identifier. Il faut l'installer et aussi s'identifier.
Ligne 9: Ligne 34:
 <code bash> <code bash>
 gem install travis gem install travis
-travis login --com 
 </code> </code>
  
-===Stockage sécurisé===+====Login====
  
-[[https://docs.travis-ci.com/user/encrypting-files/|Encrypting Files]] {{ :prog:travis:encrypting_files_-_travis_ci_2020-04-04_7_07_58_pm_.html |Archive le 04/04/2020}}+<WRAP center round info 60%> 
 +Pour toute utilisation de ''travis'' en ''CLI'', il est impératif d'avoir fait un ''travis login %%--%%com'' auparavant. 
 +</WRAP>
  
-  Solution rapide+===Manuel=== 
 + 
 +  travis login --com 
 + 
 +===Automatique avec GitHub=== 
 + 
 +  Générer un ''Personal Access Tokens'' 
 + 
 +Depuis [[https://github.com/settings/tokens]] avec les droits : ''user:email'', ''read:org'' et ''repo''. Cela va générer une clé hexadécimale. 
 + 
 +[[https://docs.travis-ci.com/user/github-oauth-scopes|Travis CI's use of GitHub API Scopes]] {{ :prog:travis:travis_ci_s_use_of_github_api_scopes_-_travis_ci_2020-06-28_13_02_38_.html |Archive le 28/06/2020}} 
 + 
 +  * Utilisation de Travis 
 + 
 +  travis login --pro --github-token $GITHUB_PERSONAL_TOKEN 
 + 
 +====Stockage sécurisé==== 
 + 
 +===Chiffrer un fichier automatiquement=== 
 + 
 +[[https://docs.travis-ci.com/user/encrypting-files/|Encrypting Files]] {{ :prog:travis:encrypting_files_-_travis_ci_2020-04-04_7_07_58_pm_.html |Archive le 04/04/2020}}
  
 <code bash> <code bash>
-travis encrypt-file list_to_encrypt.key --add --com+travis encrypt-file file_to_encrypt.key --add --com
 </code> </code>
  
-Mais cette technique souffre d'un bug. [[https://github.com/travis-ci/travis-ci/issues/4746|File decryption fails (wrong final block length) on Windows]] {{ ::prog:travis:file_decryption_fails_wrong_final_block_length_on_windows_issue_4746_travis-ci_travis-ci_github_2020-04-04_6_53_38_pm_.html |Archive du 03/09/2015 le 04/04/2020}}+Cela va créer un mot de passe automatiquement, l'ajouter aux variables d'environnement de travis, chiffrer le fichier et ajouter les commandes ''openssl'' pour déchiffrer le fichier.
  
-Il faut alors utiliser la méthode manuelle avec OpenSSL+<WRAP center round important 60%> 
 +Sous Windows, cette technique souffre d'un bug. [[https://github.com/travis-ci/travis-ci/issues/4746|File decryption fails (wrong final block length) on Windows]] {{ ::prog:travis:file_decryption_fails_wrong_final_block_length_on_windows_issue_4746_travis-ci_travis-ci_github_2020-04-04_6_53_38_pm_.html |Archive du 03/09/2015 le 04/04/2020}} 
 +</WRAP>
  
-  * OpenSSL+Il faut alors utiliser la méthode manuelle avec ''OpenSSL''.
  
-On commence par ajouter le mot de passe en chiffré dans ''.travis.yml''. La commande doit être exécutée depuis le dossier contenant le fichier+===Chiffrer un fichier manuellement=== 
 + 
 +  * Définition du mot de passe 
 + 
 +On commence par ajouter le mot de passe en chiffré dans ''.travis.yml''. La commande doit être exécutée depuis le dossier contenant le fichier.
  
 <code bash> <code bash>
-travis encrypt password_openssl=123456789abcdef --add+travis encrypt --pro PASSWORD_OPENSSL="123456789"
 </code> </code>
  
 et accepter les modifications. et accepter les modifications.
  
-Chiffrer le fichier. Les options par défaut ne sont plus sécurisée, d'où les options complémentaires ''-md sha512 -pbkdf2 -iter 100000''.+<WRAP center round important 60%> 
 +''travis encrypt %%--%%add'' reformat le fichier, supprimer les commentaires. 
 + 
 +[[https://github.com/travis-ci/travis-ci/issues/9248|Using travis encrypt --add strips all comments from .travis.yml / comment best practices]] {{ :prog:travis:using_travis_encrypt_--add_strips_all_comments_from_.travis.yml_comment_best_practices_issue_9248_travis-ci_travis-ci_2020-06-28_08_44_16_.html |Archive du 20/02/2018 le 28/06/2020}} 
 +</WRAP> 
 + 
 +On peut ajouter la variable d'environnement à tous les jobs : 
 + 
 +<code yaml> 
 +env: 
 +  global: 
 +  - secure: "..." 
 +</code> 
 + 
 +ou à un seul job : 
 + 
 +<code yaml> 
 +jobs: 
 +  include: 
 +    - language: cpp 
 + 
 +      env: 
 +      - secure: "..." 
 + 
 +</code> 
 + 
 +  * Chiffrement d'un fichier 
 + 
 +Les options par défaut ne sont plus sécurisées (''openssl'' répond ''%%***%% WARNING : deprecated key derivation used.''), d'où les options complémentaires ''-md sha512 -pbkdf2 -iter 100000''.
  
 <code bash> <code bash>
-openssl aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -k "$password_openssl" -in travis/github-travis-doc.key -out travis/github-travis-doc.key.enc+openssl aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -k "$PASSWORD_OPENSSL" -in travis/github-travis-doc.key -out travis/github-travis-doc.key.enc
 </code> </code>
  
-Et pour déchiffrer, il faut inverser ''-in'' et ''-out'' et ajouter un ''-d''.+Et pour déchiffrer depuis ''.travis.yml'', il faut inverser ''-in'' et ''-out'' et ajouter un ''-d''.
  
 <code bash> <code bash>
 before_install: before_install:
-- openssl aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -k "$password_openssl" -out travis/github-travis-doc.key -in travis/github-travis-doc.key.enc -d+- openssl aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -k "$PASSWORD_OPENSSL" -out travis/github-travis-doc.key -in travis/github-travis-doc.key.enc -d 
 +</code> 
 + 
 +===Deploy key=== 
 + 
 +Les clés de déploiement permettent de ne pas avoir besoin de saisir le mot de passe pour faire un push vers un dépôt. 
 + 
 +  * Création de la clé 
 + 
 +Il faut commencer par [[prog:ssh|créer la clé d'authentification]]. 
 + 
 +Puis ouvrir le fichier ''file.key.pub'' et créer une clé de déploiement à l'adresse [[https://github.com/USER/PROJET/settings/keys]] 
 + 
 +{{:prog:ssh:ssh_github_deploy_keys.png?400|}} 
 + 
 +Ajouter le [[#chiffrer_un_fichier_manuellement|fichier chiffré]] ''github_wiki_le_garrec_fr.key.enc'' sur la base de la clé ''github_wiki_le_garrec_fr.key''
 + 
 +  * Configuration de git 
 + 
 +Dans le fichier ''.travis.yml'', ajouter à la rubrique ''before_install''
 + 
 +<code yaml> 
 +before_install: 
 +  # You must add options either openssl will says : 
 +  # *** WARNING : deprecated key derivation used. 
 +  - openssl aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -k "$PASSWORD_OPENSSL" -out travis/ci/github_wiki_le_garrec_fr.key -in travis/ci/github_wiki_le_garrec_fr.key.enc -d 
 +  # Open a connection to the authentication agent so ssh-add work. 
 +  - eval $(ssh-agent -s) 
 +  # ssh-add says: 
 +  # Permissions 0664 for 'travis/ci/github_wiki_le_garrec_fr.key' are too open. 
 +  # It is required that your private key files are NOT accessible by others. 
 +  - chmod 600 travis/ci/github_wiki_le_garrec_fr.key 
 +  - ssh-add travis/ci/github_wiki_le_garrec_fr.key 
 +  # Configuration de l'utilisateur 
 +  - git config --global user.name "Travis" 
 +  - git config --global user.email "travis-ci@le-garrec.fr" 
 +</code> 
 + 
 +  * Ajout du dépôt git à modifier dans ''.travis.yml'' 
 + 
 +<code yaml> 
 +script: 
 +  # Il faut impérativement utiliser ssh://git@github.com et non pas https://github.com 
 +  # sinon, la clé importée via ssh-add ne sera pas utilisée. 
 +  - git clone ssh://git@github.com/bansan85/wiki_le_garrec_fr_travis.git 
 +  - cd wiki_le_garrec_fr_travis 
 +  # Faire des modifications et les ajouter via git add 
 +  - git commit -m "Update from commit $TRAVIS_COMMIT" 
 +  - git push
 </code> </code>
  
Ligne 54: Ligne 182:
  
 Voir la page [[prog:asciidoc#travis|Asciidoc]] dédiée. Voir la page [[prog:asciidoc#travis|Asciidoc]] dédiée.
 +
 +====Messages d'erreurs====
 +
 +  * ''Shell completion not installed. Would you like to install it now?''
 +
 +Peut apparaître si l'OS est minimaliste, ce qui est le cas des images Ubuntu de Travis.
 +
 +Il suffit de désactiver le mode interactif :
 +
 +  travis lint $f -x --no-interactive
prog/travis.1586020269.txt.gz · Dernière modification : 2020/04/04 19:11 de root