Outils pour utilisateurs

Outils du site


prog:travis

travis.yml

Hello world

Cas basique commenté

travis/helloworld.yml
# Language de programmation. On ne peut en sélectionner qu'un seul à la fois.
language: cpp
 
# Les éventuels services. Ici Docker.
# Parfois, il faut utiliser l'installation via apt, parfois par services, au cas par cas.
# Voir https://docs.travis-ci.com/user/database-setup/ pour quelques exemples.
services:
  - docker
 
# Version de la distribution ubuntu.
# 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" CFLAGS="-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 ..

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

Job Lifecycle 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.

Travis CI's use of GitHub API Scopes Archive le 28/06/2020

  • Utilisation de Travis
travis login --pro --github-token $GITHUB_PERSONAL_TOKEN

Stockage sécurisé

Chiffrer un fichier automatiquement

Encrypting Files 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.

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.

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 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

Ajouter le 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 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.txt · Dernière modification : 2020/11/22 17:52 de root