travis deploy cli badges github markdown travis-ci

github - deploy - travis git



Hacer referencia a la rama actual en github readme.md (2)

He solucionado este problema con un gancho pre-commit de git que vuelve a escribir la línea Travis en el archivo README.md con la rama actual. Un ejemplo de código de uso y precompilación (Python) (para la pregunta como se solicita) se encuentra a continuación.

Uso

dandye$ git checkout -b feature123 origin/master Branch feature123 set up to track remote branch master from origin. Switched to a new branch ''feature123'' dandye$ echo "* Feature123" >> README.md dandye$ git add README.md dandye$ git commit -m "Added Feature123" Starting pre-commit hook... Replacing: [![Build Status](https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=master)][travis] with: [![Build Status](https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=feature123)][travis] pre-commit hook complete. [feature123 54897ee] Added Feature123 1 file changed, 2 insertions(+), 1 deletion(-) dandye$ cat README.md |grep "Build Status" [![Build Status](https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=feature123)][travis] dandye$

Código de Python para el código precompuesto

dandye$ cat .git/hooks/pre-commit

#!/usr/bin/python """ Referencing current branch in github readme.md[1] This pre-commit hook[2] updates the README.md file''s Travis badge with the current branch. Gist at[4]. [1] http://stackoverflow.com/questions/18673694/referencing-current-branch-in-github-readme-md [2] http://www.git-scm.com/book/en/v2/Customizing-Git-Git-Hooks [3] https://docs.travis-ci.com/user/status-images/ [4] https://gist.github.com/dandye/dfe0870a6a1151c89ed9 """ import subprocess # Hard-Coded for your repo (ToDo: get from remote?) GITHUB_USER="joegattnet" REPO="joegattnet_v3" print "Starting pre-commit hook..." BRANCH=subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"]).strip() # String with hard-coded values # See Embedding Status Images[3] for alternate formats (private repos, svg, etc) # [![Build Status](https://travis-ci.org/ # joegattnet/joegattnet_v3.png? # branch=staging)][travis] # Output String with Variable substitution travis="[![Build Status](https://travis-ci.org/" / "{GITHUB_USER}/{REPO}.png?" / "branch={BRANCH})][travis]/n".format(BRANCH=BRANCH, GITHUB_USER=GITHUB_USER, REPO=REPO) sentinel_str="[![Build Status]" readmelines=open("README.md").readlines() with open("README.md", "w") as fh: for aline in readmelines: if sentinel_str in aline and travis != aline: print "Replacing:/n/t{aline}/nwith:/n/t{travis}".format( aline=aline, travis=travis) fh.write(travis) else: fh.write(aline) subprocess.check_output(["git", "add", "README.md" ]) print "pre-commit hook complete."

En el archivo readme.md de mi github repo tengo una insignia de Travis-CI. Yo uso el siguiente enlace:

https://travis-ci.org/joegattnet/joegattnet_v3.png?branch=staging

El problema obvio es que la rama está codificada. ¿Es posible usar algún tipo de variable para que la rama sea la que se está viendo actualmente?


No que yo sepa.
El soporte de GitHub confirma (a través del comment )

La única forma de hacer esto sería pasar el enlace a través de mi propio servicio, que usaría el encabezado de referencia http de github para determinar a qué rama se hace referencia y luego buscar la imagen apropiada de Travis CI

Prefiero hacer una insignia de Travis-CI por rama, para que el lector elija o considere la adecuada al ver el README.md .

Actualización 2016 (3 años después): aunque nada ha cambiado en el lado de GitHub, fedorqui informa sobre la solución alternativa mencionada en " Obtener Travis Shield en Github para reflejar el estado de la rama seleccionada " por Andrie .
Simplemente muestre todas las ramas y sus respectivas insignias de TravisCI.

Si solo tienes dos o tres ramas, eso podría ser suficiente.