yml travis que generate deploy create cli git github travis-ci doxygen github-pages

que - ¿Cómo publicar en Github Pages desde Travis CI?



travis cli (5)

Acabo de escribir un blog sobre esto hace algunos días. Aquí está el resumen:

Escribí un script de despliegue personalizado para este propósito. La funcionalidad principal del script se ve así:

#!/bin/bash git clone --depth=1 --branch=master "https://github.com/iBug/iBug.github.io.git" deploy cd deploy git rm -rf . cd .. mv _site/* deploy cd deploy git add --all git config user.name "Travis CI" git config user.email "[email protected]" git commit --message "Auto deploy from Travis CI" git remote add deploy "https://[email protected]/iBug/iBug.github.io.git" &>/dev/null git push deploy master &>/dev/null

Ahora ve a https://github.com/settings/tokens y genera un token. public_repo privilegio public_repo . Vaya a la configuración del repositorio en Travis CI y almacene el token con el nombre de la variable GH_TOKEN .

Agregue la secuencia de comandos de implementación a travis:

script: bundle exec jekyll build after_success: - bash .travis/deploy.sh

Empuja estas cosas hacia GitHub y se activará Travis.

Mi blog esta here Es completo y, por lo tanto, redundante si se publica como respuesta aquí (porque los usuarios de Stack Overflow son en su mayoría desarrolladores experimentados). El script que publiqué en mi blog también carece de una funcionalidad: no conserva el historial de commit del sitio construido, mientras que el script en esta respuesta anterior sí lo hace.

Estamos recopilando documentos de Doxygen en el servidor de travis-ci y queremos insertarlos en nuestra rama gh-pages.

¿Cómo manejo la autorización para git push ? ¿Alguien tiene un ejemplo para usar variables encriptadas en travis-ci? ¿Debo obtener la autorización https o una clave SSH?


La documentación de travis-ci aquí recomienda agregar esto para enviar a un repositorio de git:

after_success: - chmod 600 .travis/deploy_key.pem # this key should have push access - ssh-add .travis/deploy_key.pem - git remote add deploy DEPLOY_REPO_URI_GOES_HERE - git push deploy

Sin embargo, esto es inseguro ya que hace que almacene su clave privada no protegida en el repositorio de github.

En su lugar, puede agregar su clave ssh como una variable de entorno cifrada utilizando la herramienta travis:

travis encrypt DEPLOY_KEY=<private ssh key with write access> --add env.matrix

Ahora solo necesita agregar esta línea al principio de after_success:

cat $DEPLOY_KEY > .travis/deploy_key.pem

Tenga en cuenta que after_success se alternará en cada compilación en la matriz de compilación, por lo que si tiene varios trabajos por compilación, su código se insertará varias veces, lo que no hará nada, pero es bueno saber que está ocurriendo.


No sé qué tan reciente es, pero Travis ahora tiene una opción de implementación incorporada, básicamente agregue a su archivo travis:

deploy: provider: pages skip_cleanup: true local_dir: myfolder/ # or remove this line to upload from root of repo github_token: $GITHUB_TOKEN # Set in travis-ci.org dashboard on: branch: master

Asegúrate de no tener un .gitignore en la carpeta cargada; solo carga archivos no ignorados.

Consulte el documento oficial en línea de travis: https://docs.travis-ci.com/user/deployment/pages/

No existe un problema de clave pública con el enfoque de "Configuración de depósito", usted genera una clave en Github y luego la copia y la pega en campos secretos / no visibles de Travis.

Problema de carga de historial: tenga en cuenta que cada carga aplasta cualquier información cargada previamente, sin preservar el historial.

  • Ahora puedes (Nov 2017+) preservar el historial agregando un keep-history: true línea keep-history: true

  • Esto puede ser deseable ya que estas compilaciones de instantáneas pueden ser voluminosas, y son reproducibles a voluntad de todos modos (simplemente ramifique su depósito desde la revisión que desea). Señalar esos artefactos generalmente apunta a una última creación exitosa de una instantánea.

  • Sin embargo, para activar el almacenamiento en un lugar estable, simplemente edite su travis para agregar un indicador:
    target_branch: Branch para push force, por defecto gh-pages
    Ej target_branch: rc1.2

Y ejecútelo una vez antes de regresar al modo de instantánea.

Otra alternativa que podría ser buena para los lanzamientos (aunque no he probado personalmente) es publicar en una etiqueta, vea: https://docs.travis-ci.com/user/deployment/releases/


Solo para agregar otra solución, utilicé un token de HTTPS de github, lo cifré y usé HTTPS para las compras y los empujones


Ejemplo paso a paso con HTTPS API Token en variable de entorno

Otros lo han mencionado, pero aquí hay un procedimiento más detallado.

  1. Cree un repositorio separado para el sitio web (opcional). Esto reducirá la probabilidad de que sobrescriba su repositorio principal y evitará que los archivos de salida lo contaminen.

  2. Obtenga un token de acceso personal en https://github.com/settings/tokens

    Solo habilite el acceso "public_repo" para repositorios públicos, "repo" para privado.

    Guarde la ficha en algún lugar, ya que solo puede verla una vez.

  3. En la configuración de Travis para el repositorio https://travis-ci.org/<me>/<myrepo>/settings crea una variable de entorno:

    GITHUB_API_KEY=<token>

    y asegúrese de marcar "Mostrar valor en el registro de compilación" como "Desactivado".

    Esto es seguro porque solo las visitas autorizadas pueden ver tales variables de entorno, por lo que si un usuario malintencionado intenta realizar una solicitud de extracción para obtener su cadena, la variable no estará allí.

    ¡Solo asegúrate de que nunca, nunca, incluyas las variables de tu entorno en tu construcción!

  4. Agregue lo siguiente a su .travis.yml :

    after_success: | if [ -n "$GITHUB_API_KEY" ]; then cd "$TRAVIS_BUILD_DIR" # This generates a `web` directory containing the website. make web cd web git init git checkout -b gh-pages git add . git -c user.name=''travis'' -c user.email=''travis'' commit -m init # Make sure to make the output quiet, or else the API token will leak! # This works because the API key can replace your password. git push -f -q https://<me>:[email protected]/<me>/<myrepo>-gh-pages gh-pages &2>/dev/null cd "$TRAVIS_BUILD_DIR" fi

Método alternativo de cifrado travis

Explicado en detalle en: https://.com/a/33109519/895245

Encripte la cadena GITHUB_API_KEY=<key> con la gema travis , y agréguela a su .travis.yml :

env: secure: <encrypted>

Esto tiene la ventaja de que no requiere el uso de la interfaz web de Travis, pero sí requiere el uso de una Gema y más copia de pegado.