~~NOCACHE~~ =====travis.yml===== ====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. gem install travis ====Login==== Pour toute utilisation de ''travis'' en ''CLI'', il est impératif d'avoir fait un ''travis login %%--%%com'' auparavant. ===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}} travis encrypt-file file_to_encrypt.key --add --com 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. 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}} Il faut alors utiliser la méthode manuelle avec ''OpenSSL''. ===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. travis encrypt --pro PASSWORD_OPENSSL="123456789" et accepter les modifications. ''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}} On peut ajouter la variable d'environnement à tous les jobs : env: global: - secure: "..." ou à un seul job : jobs: include: - language: cpp env: - secure: "..." * 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''. 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 Et pour déchiffrer depuis ''.travis.yml'', il faut inverser ''-in'' et ''-out'' et ajouter un ''-d''. 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 ===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'' : 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" * Ajout du dépôt git à modifier dans ''.travis.yml'' 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 ====Modules==== * Asciidoc 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