web-dev-qa-db-fra.com

Comment publier des artefacts dans Travis CI?

Je voudrais utiliser Travis CI pour mon projet open-source. Le problème selon lequel Travis ne fournit aucun moyen de publier des artefacts produits (bien que cela soit prévu dans leurs plans futurs).

Quelles sont les solutions de contournement pour publier/télécharger des artefacts quelque part? Je suis autorisé à exécuter n'importe quel script sur une machine CI.

Le téléchargement simple fonctionnera, mais il y a un problème de sécurité: tout le monde pourra télécharger quelque chose de la même manière, toutes les sources étant publiques.

48
eigenein

La fonctionnalité "Téléchargement de versions de github" est annoncée récemment. Il soutient officiellement tout ce qui est nécessaire. Voir http://docs.travis-ci.com/user/deployment/releases/

26
minghua

GitHub publie pas à pas

La méthode a été mentionnée à https://stackoverflow.com/a/24100779/895245 et est mal documentée à: https://docs.travis-ci.com/user/deployment/releases/ , voici donc une étape plus détaillée détaillée.

Il télécharge des artefacts dans les versions GitHub https://github.com/<username>/<repo>/releases qui existent pour chaque balise Git que vous envoyez.

  1. Obtenir un jeton d'accès personnel sous https://github.com/settings/tokens

    Activez uniquement l'accès "public_repo" pour les référentiels publics, "repo" pour privé.

    Enregistrez le jeton quelque part car vous ne pouvez le voir qu'une fois.

  2. Installez la gemme travis:

    gem install travis
    # See: https://stackoverflow.com/a/33119804/895245
    gem update --system
    

    Puis cd dans votre référentiel et:

    travis encrypt <api-token>
    

    mais plus récemment, des personnes ont indiqué que travis encrypt -r githubusername/repositoryname --org était nécessaire, voir: https://github.com/travis-ci/travis-ci/issues/8128

    Cela produira une sortie comme:

    secure: "<encrypted-token>"
    

    Notez le grand jeton crypté.

  3. Utilisez un .travis.yml comme suit:

    script:
      # This command generates a release.Zip file.
      - make dist
    deploy:
      provider: releases
      api_key:
        secure: "<encrypted-token>"
      file: 'release.Zip'
      skip_cleanup: true
      on:
        tags
    

    Ce qui se passe, c’est que Travis remplace chaque something: secure: <encrypted-string> par juste something: <decrypted-string> comme expliqué à l’adresse: http://docs.travis-ci.com/user/encryption-keys/

    Ceci est sûr car seules les pressions autorisées par vous peuvent déchiffrer la chaîne. Ainsi, si un utilisateur malveillant essaie de faire une demande d'extraction pour obtenir votre chaîne, il ne devrait afficher que la chaîne cryptée.

    Maintenant, chaque fois que vous appuyez sur un commit avec un tag, Travis téléchargera release.Zip dans la version:

    git commit -m 1.0
    git tag -m 1.0 1.0
    git Push --tags
    

    Si vous avez déjà poussé la validation et la balise après, vous devrez peut-être cliquer sur le bouton "Redémarrer la construction" dans l'interface utilisateur de Travis pour le télécharger.

https://stackoverflow.com/a/38037626/895245 présente des captures d'écran du processus.

Méthode alternative: variable d'environnement

  1. Au lieu d'une chaîne cryptée, nous pourrions également utiliser une variable d'environnement cachée.

    Dans les paramètres Travis du référentiel https://travis-ci.org/<me>/<myrepo>/settings, créez une variable d'environnement:

    GITHUB_API_KEY=<token>
    

    et assurez-vous de marquer "Afficher la valeur dans le journal de construction" comme "Off", et utilisez:

    api_key: '$GITHUB_API_KEY'
    

    Bien que cela n'apparaisse pas dans les journaux des demandes d'extraction, cette méthode est plus risquée, car vous pourriez vous tromper lister l'environnement d'une construction.

    L'avantage est que cette méthode est plus simple à comprendre.

Un exemple simple de mien qui télécharge des images générées à partir de Gnuplot vers des versions de GitHub:

Question sur le déploiement de GitHub Pages: Comment publier sur Github Pages à partir de Travis CI?

Si votre projet est basé sur Github - probablement avec Travis -, le moyen le plus simple consiste à archiver les artefacts générés sous la branche gh-pages. Voir plus sur Github .

Comment faire cela dépend beaucoup du système de compilation utilisé. Avec maven, vous pouvez utiliser maven-scm-plugin - vous pouvez trouver un exemple ici .

EDIT: Vous trouverez un exemple complet ici: https://github.com/tonnymadsen/ui-bindings/blob/master/com.rcpcompany.updatesite/pom.xml

8
Tonny Madsen

Donc, vous devez d’abord essayer de déployer des artefacts de version. Alors, faites le tag en premier dans Github. Pour le faire manuellement:

 enter image description here

Ensuite, dans le fichier .travis.yml, ajoutez la configuration suivante. Pour les utilisateurs

language: Java
jdk:
  - oraclejdk7

Sudo: required

before_install:
 - chmod +x gradlew

script:
  - ./gradlew clean build -i --continue

deploy:
  provider: releases
  api_key: ${api_key}
  file: "build/libs/Project.jar"
  skip_cleanup: true
  on:
    all_branches: true
    tags: true

Ici api_key valeur est Travis Ci variable d'environnement. Ce qui pointe vers Github api_key.

file est l'artefact de construction produit à partir de la construction. Ce que nous voulons être déployé sur gitHub.

on:
    all_branches: true
    tags: true

est une configuration obligatoire pour les tags à déployer.

Non, vous devez obtenir la clé api de github:

  1. Aller à jetons d'accès personnel

 enter image description here

  1. Choisissez Générer un nouveau jeton

 enter image description here

  1. Sélectionnez les étendues appropriées pour la api_key enter image description here
  2. Copiez la clé_pap générée  enter image description here
  3. Allez dans Travis Ci et ajoutez une variable d’environnement. Pour cela, choisissez Paramètres enter image description here
    1. Collez le api_key généré enter image description here

Lorsque vous déclenchez une nouvelle construction, l'artefact sera déployé .  enter image description here

6
Xelian

Update: Github désactive maintenant l’API de téléchargement. La réponse ci-dessous est donc une idée.

Ma solution utilise des "variables d'environnement sécurisées" fournies par travis-ci et une "API de téléchargement du dépôt Github" avec un script associé.

Chaque dépôt dans Github a des pages de téléchargement, c’est également le bon endroit pour publier vos artefacts. Il contient également une "API de téléchargement du dépôt" http://developer.github.com/v3/repos/downloads/

En fin de compte, dans le .travis-ci.yml on dirait ci-dessous

env:
  global:
    - secure:     "qkE5/TVKQV/+xBEW5M7ayWMMtFwhu44rQb9zh3n0LH4CkVb+b748lOuW3htc\nXfnXU8aGzOsQBeCJZQstfzsHFPkll+xfhk38cFqNQp7tpMo/AOZIkqd2AIUL\n0bgaFD+1kFAxKTu02m11xzkDNw6FuHMVvoMEQu/fo115i2YmWHo="  

after_script:
  - ./github-upload.rb sdcamp.zh.pdf larrycai/sdcamp --description "generated by travis-ci, $TRAVIS_JOB_ID" --force --name sdcamp.zh.snapshot.pdf --skip-ssl-verification -t $GITHUB_TOKEN

voir mon blog de détail: http://larrycaiyu.com/blog/2012/10/25/publish-the-artifacts-inside-travis-ci-to-github/

5
Larry Cai

J'ai mis en place un exemple de projet à l'adresse https://github.com/vorburger/mvnDeployGitHubTravisCI , illustrant la procédure à suivre (partiellement basé sur Hébergement d'un référentiel Maven sur github ). Comme expliqué dans la réponse liée, l'idée de base est de préparer un référentiel local en utilisant altDeploymentRepository [] de maven-deploy-plugin , puis d'utiliser github site-maven-plugin pour transférer vos artefacts vers GitHub. Connectez Travis à l'authentification GitHub comme expliqué ci-dessus.

2
vorburger

TravisCI prend désormais en charge les versions: https://docs.travis-ci.com/user/deployment/releases/

GitHub a supprimé l'API de téléchargement, mais l'a remplacée par des versions: https://github.com/blog/1547-release-your-software

1
Jan

L'intégration SBT-Travis-Sonatype comprend les étapes principales suivantes:

  1. Ajout du plugin sbt-pgp;
  2. Générer une paire de clés pour signer vos artefacts et les publier sur un serveur de clés publiques;
  3. Chiffrer les fichiers de données d'identification de la paire de clés et du sonatype et les ajouter à votre projet;
  4. Création de la configuration travis et ajout de la clé cryptée utilisée par Travis pour décompresser vos fichiers secrets.

J'ai rassemblé une instruction simple sur la façon d'intégrer SBT à Travis-CI et Sonatype, elle est disponible ici et contient les étapes nécessaires à la configuration des plugins de projet pour chiffrer les fichiers et fournir la configuration Travis. Il est principalement basé sur/ developer blog de John Duffel, associé aux documents de référence sbt-pgp.

0
uralian