Llamar a la API de GitHub con Travis para build la label

He creado un enganche TravisCI en un repository de GitHub que ejecuta automáticamente una construcción después de empujar al repository. Lo que me gustaría agregar es que si la construcción tiene éxito, se crea automáticamente una label.

Descubrí que hay una forma de crear tags con la API de GitHub http://developer.github.com/v3/git/tags/#create-a-tag-object

¿Pero cómo controlo el acceso a mi repository? No puedo exponer mis cnetworkingenciales de github de inicio de session en travis.yml porque todos pueden leerlo mientras está guardado en el repository.

Soy bastante nuevo en la implementación automatizada, así que si hay alguna otra solución para hacerlo sin travis, por favor, hágamelo saber. Lo que me gustaría lograr es que se cree una versión descargable para los usuarios después de una compilation exitosa.

Solución

Ok, finalmente encontré la configuration travis.yaml correcta.

Cómo funciona: después de presionar al repository, travis ejecutará las testings de mi aplicación. Si las testings son exitosas, travis comstackrá una versión precomstackda de la compilation actual y la cargará en una versión especial que he creado en GitHub Repo.

language: scala env: global: - PLAY_VERSION=2.2.1 - secure: "HD1x0S9ad/3+G9YUkyT/uTw9lEr+tUQEV4QO+M2Ro1JFSVOzLNZiNoh6FrNb06a0TbencTkftyHYmYjp1/CCyTpF9CMCQ4ddB7TVF9hibH1y9ONVrPJIm5BCEpjGDa4fND8bkcChrpcZDQKIO0ZwArEsl2+IRocnbBT+oYqIFNo=" before_script: - wget http://downloads.typesafe.com/play/${PLAY_VERSION}/play-${PLAY_VERSION}.zip - unzip -q play-${PLAY_VERSION}.zip - sudo apt-get install jq script: play-${PLAY_VERSION}/play test notifications: email: false after_success: - play-${PLAY_VERSION}/play dist - cd target/universal/ - 'ASSETID=$(curl -s -H "Authorization: token ${BUILD_KEY}" "https://api.github.com/repos/meisign/fillable/releases/204198/assets" | jq ".[0].id")' - 'curl -XDELETE -s -H "Authorization: token ${BUILD_KEY}" "https://api.github.com/repos/meisign/fillable/releases/assets/$ASSETID"' - 'curl -XPOST -s -H "Authorization: token ${BUILD_KEY}" -H "Content-Type: application/zip" --data-binary @./Fillable-1.0-SNAPSHOT.zip "https://uploads.github.com/repos/meisign/fillable/releases/204198/assets?name=Fillable.zip"' 

Puede crear un Token de API Personal de GitHub que otorgue acceso a sus repositorys. El ámbito public_repo debería ser todo lo que necesita para un repository público.

Use este token para autenticarse en la API de GitHub. Para usar el token con la API, inclúyalo en el encabezado Autorización .

 curl -H "Authorization: token <YOUR_TOKEN>" https://api.github.com/user 

También puede usar este token para enviarlo a su repository.

 git push -q https://<token>@github.com/<user>/<repo> 

Ahora, para la parte divertida, debes mantener esa ficha en secreto. Tenerlo público es equivalente a tener su nombre de usuario y contraseña públicos.


Debe asegurarse de leer la documentation a la que se hace reference y controlar sus loggings de Travis-CI. Los commands se ejecutan en bash, y dependiendo de cómo lo escriba o si hay algún error, podría revelar accidentalmente su token .

Para mantener ese token en secreto, Travis-CI tiene un sistema para generar keys públicas y privadas. Las keys de encryption son específicas de su repository.

El enlace tiene toda la documentation relevante; necesita instalar la herramienta de interfaz de línea de command Travis, está disponible como una gem de Ruby.

 gem install travis 

Para encriptar una variable (como su token personal) –

 travis encrypt SOMEVAR=secretvalue --add 

Travis asume que el command se está ejecutando en el directory del proyecto y proporcionará la key pública única para encriptar sus datos, en function de su repository. El indicador --add colocará automáticamente los datos protegidos en su file .travis.yml .

Así es como lo mantienes en secreto. La implementación de la creación de tags con Git o la API de GitHub depende de usted. Por favor comparte una vez que lo resuelves.