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/06/24 23:10] – Ajout d'un hello world commenté 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:
-====travis.yml====+~~NOCACHE~~
  
-===Hello world===+=====travis.yml=====
  
-  * Cas basique commenté+====Hello world====
  
-<code yaml> +===Cas basique commenté===
-# Language de programmation. On ne peut en sélectionner qu'un seul à la fois. +
-language: cpp+
  
-# Les éventuels services. Ici Docker. +{{gh>https://github.com/bansan85/wiki_le_garrec_fr/blob/master/travis/helloworld.yml}}
-# Parfois, il faut utiliser l'installation via apt, parfois par services, au cas par cas. +
-# Voir https://docs.travis-ci.com/user/database-setuppour quelques exemples. +
-services: +
-  - docker+
  
-# Version de la distribution ubuntu. +===Ordre d'exécution des commandes===
-# Pour la liste des versions disponibles : https://docs.travis-ci.com/user/reference/linux/ +
-# Généralement, il n'y a que les version LTS et la dernière est souvent manquante. +
-dist: bionic +
- +
-# Toute première étape : l'installation automatique des paquets. +
-addons: +
-  apt: +
-    sources: +
-    # Ici, je force l'utilisation de la dernière version du système d'exploitation. +
-    # Ne pas faire un apt-get dist-upgrade. Ca prend beaucoup de bande passante, de temps et risque de générer un système pas très stable. +
-    # Il est préférable d'indiquer un par un la liste des packets à mettre à jour. +
-    - sourceline: 'deb http://archive.ubuntu.com/ubuntu/ focal main universe' +
-    packages: +
-    - cppcheck +
- +
-# Généralement, on met dans before_install tout ce qu'il faut installer (images docker et packets). +
-before_install: +
-  - docker pull clangbuiltlinux/ubuntu:latest +
-  - docker run --rm clangbuiltlinux/ubuntu:latest clang++-11 --version +
-  - cppcheck --version +
-  - clang-format --version +
- +
-# Ici, c'est tous les scripts à exécuter. +
-# Ils seront tous exécuté jusqu'au dernier. +
-# Si l'un renvoie un code d'erreur, l'ensemble sera considéré comme failure. +
-# Ici, tout est mis en vrac. Mais il est aussi possible de mettre les commandes dans un script bash. +
-script: +
-  - mkdir buildcppgcc; cd buildcppgcc +
-  - CC=/usr/bin/gcc-10 CXX=/usr/bin/g++-10 CXXFLAGS="-Wall -Werror -Wextra -Wpedantic -fanalyzer -O2" cmake ../cpp +
-  - make +
-  - cppcheck --inconclusive --enable=all --check-config --project=compile_commands.json +
-  - iwyu_tool -p . > iwyu_tool.log; if [ $(cat iwyu_tool.log |grep -e "should add these lines" -e "should remove these lines" | wc -l) -ne "0" ]; then cat iwyu_tool.log ; exit 1; fi +
-  - cd .. +
-</code> +
- +
-  * Ordre d'exécution des commandes+
  
   OPTIONAL Install apt addons   OPTIONAL Install apt addons
Ligne 68: Ligne 26:
 [[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}} [[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====+=====Lignes de commande=====
  
-===Installation===+====Installation====
  
 Il faut l'installer et aussi s'identifier. Il faut l'installer et aussi s'identifier.
Ligne 76: 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 121: 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.1593033043.txt.gz · Dernière modification : 2020/06/24 23:10 de root