A partir de abril de 2022, este repositorio ya no se usa o mantiene.
Este es Janky, un servidor de integración continuo construido sobre Jenkins, controlado por Hubot, y diseñado para GitHub.
Construido sobre Jenkins. La potencia, la gran cantidad de complementos y la gran comunidad del popular servidor CI envuelto en una gran experiencia.
Controlado por Hubot. Las operaciones diarias están expuestas como simples comandos de Hubot que todo el equipo puede usar.
Diseñado para Github. Janky crea los ganchos web apropiados para usted y la aplicación web restringe el acceso a los miembros de su organización GitHub.
Comience configurando un nuevo trabajo de Jenkins y GitHub Web Hook para un repositorio: [ORG]/[REPO]
hubot ci setup github/janky
El comando setup
se puede ejecutar de manera segura una y otra vez. No hará nada a menos que sea necesario. Toma un argumento name
opcional: [ORG]/[REPO] [NAME]
hubot ci setup github/janky janky-ruby1.9.2
También toma un argumento template
opcional: [ORG]/[REPO] [NAME] [TEMPLATE]
hubot ci setup github/janky janky-ruby1.9.2 ruby-build
Todas las ramas se construyen automáticamente en Push. Desactive la construcción automática con:
hubot ci toggle [REPO]
Nota : Si se estableció name
, necesitará usarlo interesado.
hubot ci toggle [NAME]
Ejecute el comando nuevamente para volver a habilitarlo. Forzar una construcción de la rama maestra:
hubot ci build [REPO]
Nota : Si se estableció name
, necesitará usarlo interesado.
hubot ci build [NAME]
De una rama específica: [REPO]/[BRANCH]
hubot ci build janky/libgit2
Diferentes construcciones no son relevantes para la misma sala de chat, por lo que Janky le permite elegir a dónde se envían notificaciones. Primero obtenga una lista de habitaciones disponibles:
hubot ci rooms
Entonces elige uno:
hubot ci set room janky The Serious Room
Obtenga el estado de una compilación:
hubot ci status janky
Rama específica: [REPO]/[BRANCH]
hubot ci status janky/libgit2
Todas las compilaciones:
hubot ci status
Finalmente, obtenga una referencia rápida de los comandos disponibles con:
hubot ci?
Janky requiere acceso a un servidor Jenkins. Se recomienda la versión 1.580 . Consulte la documentación de Jenkins para obtener instrucciones de instalación e instale el complemento de notificación versión 1.4.
Recuerde establecer la URL de Jenkins en http://your-jenkins-server.com/configure
. Janky aún activará las compilaciones, pero no actualizará el estado de compilación sin este conjunto.
Janky está diseñado para ser desplegado en Heroku.
Tome todos los archivos necesarios de la esencia:
$ git clone git://gist.github.com/1497335 janky
Luego empújalo a una nueva aplicación Heroku:
$ cd janky
$ heroku create --stack cedar
$ bundle install
$ git add Gemfile.lock
$ git commit Gemfile.lock -m "lock bundle"
$ git push heroku master
Después de configurar la aplicación (ver más abajo), cree la base de datos:
$ heroku run rake db:migrate
Nota: se requiere la versión 2.0.0+ de Ruby para ejecutar Janky.
Recomendamos encarecidamente hacer una copia de seguridad de su base de datos Janky antes de actualizar.
El proceso general es actualizar la gema y luego ejecutar migrar. Así es como lo hace en una caja local a la que tiene acceso (este proceso diferirá para Heroku):
cd [PATH-TO-JANKY]
gem update janky
rake db:migrate
Janky está configurado utilizando variables de entorno. Use el comando heroku config
:
$ heroku config:add VARIABLE=value
Configuración requerida:
JANKY_BASE_URL
: la URL de la aplicación con una barra de corte. Ejemplo: http://mf-doom-42.herokuapp.com/
.JANKY_BUILDER_DEFAULT
: la URL del servidor Jenkins con una barra de corte. Ejemplo: http://jenkins.example.com/
. Para una autenticación básica, incluya las credenciales en la URL: http://user:[email protected]/
. El uso de Github Oauth con Jenkins no es compatible con Janky.JANKY_CONFIG_DIR
: directorio donde se almacenan las plantillas de configuración de compilación. Por lo general, configurado en /app/config
on Heroku.JANKY_HUBOT_USER
: Iniciar sesión utilizado para proteger la API Hubot.JANKY_HUBOT_PASSWORD
: contraseña para la API Hubot.JANKY_GITHUB_USER
: el inicio de sesión del usuario de GitHub utilizado para acceder a la API. Requiere privilegios administrativos para configurar ganchos de servicio.JANKY_GITHUB_PASSWORD
: la contraseña para el usuario de GitHub.JANKY_GITHUB_HOOK_SECRET
: secreto utilizado para firmar solicitudes de gancho de GitHub.JANKY_CHAT_DEFAULT_ROOM
: sala de chat donde las notificaciones se envían por defecto.Configuración de base de datos opcional:
DATABASE_URL
: URL de conexión de base de datos. Ejemplo: postgres://user:password@host:port/db_name
.JANKY_DATABASE_SOCKET
: ruta al socket de la base de datos. Ejemplo: /var/run/mysql5/mysqld.sock
.El uso de Janky con GitHub Enterprise requiere una configuración adicional:
JANKY_GITHUB_API_URL
: URL completa de la instancia, con una barra de corte. Ejemplo: https://github.example.com/api/v3/
.https://github.com/blog/1227commit-status-api
Para actualizar las solicitudes de extracción con el estado de compilación, genere un token OAuth a través de la API GitHub:
curl -u username:password
-d '{ "scopes": [ "repo:status" ], "note": "janky" }'
https://api.github.com/authorizations
Luego establezca JANKY_GITHUB_STATUS_TOKEN
. Opcionalmente, también puede configurar JANKY_GITHUB_STATUS_CONTEXT
para enviar un contexto a la API de GitHub de forma predeterminada
username
y password
en el ejemplo anterior deben ser los mismos que los valores proporcionados para JANKY_GITHUB_USER
y JANKY_GITHUB_PASSWORD
respectivamente.
Configuración requerida:
JANKY_CHAT=hipchat
JANKY_CHAT_HIPCHAT_TOKEN
: token de autenticación (este token debe ser un token de administrador, no un token de notificación).JANKY_CHAT_HIPCHAT_FROM
: nombre que aparecerán los mensajes. El valor predeterminado a CI
.JANKY_HUBOT_USER
debe ser xmpp/jabber nombre de usuario en formato xxxxx_xxxxxx en lugar de correo electrónicoJANKY_CHAT_DEFAULT_ROOM
debe ser el nombre de la habitación en lugar del formato XMPP, por ejemplo: Engineers
en lugar de xxxx_xxxxxx.Instalación:
require "janky/chat_service/hipchat"
al archivo config/environment.rb
antes de la línea Janky.setup(ENV)
.echo 'gem "hipchat", "~>0.4"' >> Gemfile
bundle
git commit -am "install hipchat"
Configuración requerida:
JANKY_CHAT=slack
JANKY_CHAT_SLACK_TEAM
: nombre del equipo SlackJANKY_CHAT_SLACK_TOKEN
: token de autenticación para el usuario que envía notificaciones de compilación.JANKY_CHAT_SLACK_USERNAME
: nombre que aparecerán los mensajes. El valor predeterminado a CI
.JANKY_CHAT_SLACK_ICON_URL
: URL a una imagen para usar como icono para este mensaje.Instalación:
require "janky/chat_service/slack"
en el archivo config/environment.rb
antes de la línea Janky.setup(ENV)
.echo 'gem "slack.rb"' >> Gemfile
bundle
git commit -am "install slack"
Envía notificaciones a Hubot a través de Janky Script.
Configuración requerida:
JANKY_CHAT=hubot
JANKY_CHAT_HUBOT_URL
: URL a su instancia de Hubot.JANKY_CHAT_HUBOT_ROOMS
: lista de habitaciones que se pueden configurar a través ci set room
."#room, #another-room"
"34343:room, 23223:another-room"
"room, another-room"
Instalación:
require "janky/chat_service/hubot"
al archivo config/environment.rb
antes de la línea Janky.setup(ENV)
. Para restringir el acceso a los miembros de una organización de GitHub, registre una nueva aplicación OAuth en GitHub con la devolución de llamada establecida en $JANKY_BASE_URL/auth/github/callback
y luego establece algunas configuraciones adicionales:
JANKY_SESSION_SECRET
: secreto de cookie de sesión aleatoria. Típicamente generado por una herramienta como pwgen
.JANKY_AUTH_CLIENT_ID
: la ID del cliente de la aplicación OAuth.JANKY_AUTH_CLIENT_SECRET
: el secreto del cliente de la aplicación OAuth.JANKY_AUTH_ORGANIZATION
: el nombre de la organización. Ejemplo: "Github".JANKY_AUTH_TEAM_ID
: una identificación de equipo opcional para dar autenticación. Ejemplo: "1234". Instale el script Janky en su Hubot y luego establezca la variable de entorno HUBOT_JANKY_URL
. Ejemplo: http://user:[email protected]/_hubot/
, con el usuario y la contraseña reemplazadas por JANKY_HUBOT_USER
y JANKY_HUBOT_PASSWORD
respectivamente.
El comando de compilación predeterminado debería ser suficiente para la mayoría de las aplicaciones de Ruby:
$ bundle install --path vendor/gems --binstubs
$ bundle exec rake
Para obtener más control, puede agregar un script/cibuild
en la raíz de su repositorio para que Jenkins ejecute en su lugar.
Para el control total, los archivos config.xml
de Whole Jenkins se pueden asociar con construcciones Janky. Dada una compilación llamada windows
y un nombre de plantilla de psake
, Janky intentará config/jobs/psake.xml.erb
para usar una plantilla, config/jobs/windows.xml.erb
para probar el nombre del trabajo si la plantilla no sale, Antes de finalmente volver a la configuración predeterminada, config/jobs/default.xml.erb
. Después de actualizar o agregar una configuración personalizada, ejecute hubot ci setup
nuevamente para actualizar el servidor Jenkins.
Docker y Docker-Compose son necesarios para piratear este proyecto.
Ponga en funcionamiento su entorno:
script/bootstrap
Cree las bases de datos, tablas y datos de semillas:
script/setup
Inicie el servidor:
docker-compose run --service-ports app script/server
Abra la aplicación:
open http://localhost:9393/
Ejecute la suite de prueba:
docker-compose run --rm app script/test
Bifurca el repositorio Janky en GitHub y envía una solicitud de extracción. Tenga en cuenta que cualquier cambio en el comportamiento sin pruebas será rechazado. Si está agregando nuevas características significativas, agregue tanto las pruebas como la documentación.
Copyright © 2011-2014, Github, Inc. Consulte el archivo COPYING
para los derechos y limitaciones de licencia (MIT).