En avril 2022, ce référentiel n'est plus utilisé ou maintenu.
Il s'agit de Janky, un serveur d'intégration continu construit au-dessus de Jenkins, contrôlé par Hubot, et conçu pour Github.
Construit au-dessus de Jenkins. La puissance, une grande quantité de plugins et une grande communauté du serveur CI populaire ont toutes terminées dans une grande expérience.
Contrôlé par Hubot. Les opérations quotidiennes sont exposées comme simples commandes Hubot que toute l'équipe peut utiliser.
Conçu pour GitHub. Janky crée les crochets Web appropriés pour vous et l'application Web restreint l'accès aux membres de votre organisation GitHub.
Commencez par configurer un nouveau travail Jenkins et GitHub Web Hook pour un référentiel: [ORG]/[REPO]
hubot ci setup github/janky
La commande setup
peut être exécutée en toute sécurité encore et encore. Il ne fera rien à moins que cela n'en ait besoin. Il prend un argument name
facultatif: [ORG]/[REPO] [NAME]
hubot ci setup github/janky janky-ruby1.9.2
Il prend également un argument template
facultatif: [ORG]/[REPO] [NAME] [TEMPLATE]
hubot ci setup github/janky janky-ruby1.9.2 ruby-build
Toutes les branches sont construites automatiquement sur Push. Désactiver la construction automatique avec:
hubot ci toggle [REPO]
Remarque : Si name
a été défini, vous devrez l'utiliser avec l'intesté.
hubot ci toggle [NAME]
Exécutez à nouveau la commande pour le réactiver. Forcer une construction de la branche principale:
hubot ci build [REPO]
Remarque : Si name
a été défini, vous devrez l'utiliser avec l'intesté.
hubot ci build [NAME]
D'une branche spécifique: [REPO]/[BRANCH]
hubot ci build janky/libgit2
Différentes versions ne sont pas pertinentes pour la même salle de chat et donc Janky vous permet de choisir où les notifications sont envoyées. Obtenez d'abord une liste des chambres disponibles:
hubot ci rooms
Puis choisissez-en un:
hubot ci set room janky The Serious Room
Obtenez l'état d'une construction:
hubot ci status janky
Branche spécifique: [REPO]/[BRANCH]
hubot ci status janky/libgit2
Toutes les constructions:
hubot ci status
Enfin, obtenez une référence rapide des commandes disponibles avec:
hubot ci?
Janky a besoin d'accès à un serveur Jenkins. La version 1.580 est recommandée. Reportez-vous à la documentation Jenkins pour les instructions d'installation et installez la version 1.4 du plugin de notification.
N'oubliez pas de définir l'URL Jenkins dans http://your-jenkins-server.com/configure
. Janky déclenchera toujours des builds mais ne mettra pas à jour le statut de construction sans cet ensemble.
Janky est conçu pour être déployé à Heroku.
Saisissez tous les fichiers nécessaires de l'essentiel:
$ git clone git://gist.github.com/1497335 janky
Ensuite, poussez-le vers une nouvelle application Heroku:
$ cd janky
$ heroku create --stack cedar
$ bundle install
$ git add Gemfile.lock
$ git commit Gemfile.lock -m "lock bundle"
$ git push heroku master
Après la configuration de l'application (voir ci-dessous), créez la base de données:
$ heroku run rake db:migrate
Remarque: Ruby version 2.0.0+ est nécessaire pour exécuter Janky.
Nous recommandons fortement de sauvegarder votre base de données Janky avant la mise à niveau.
Le processus général consiste à mettre à niveau le gemme, puis à migrer. Voici comment vous faites cela sur une boîte locale à laquelle vous avez accès (ce processus différera pour Heroku):
cd [PATH-TO-JANKY]
gem update janky
rake db:migrate
Janky est configuré à l'aide de variables d'environnement. Utilisez la commande heroku config
:
$ heroku config:add VARIABLE=value
Paramètres requis:
JANKY_BASE_URL
: L'URL de l'application avec une barre oblique. Exemple: http://mf-doom-42.herokuapp.com/
.JANKY_BUILDER_DEFAULT
: L'URL du serveur Jenkins avec une barre oblique. Exemple: http://jenkins.example.com/
. Pour Basic Auth, incluez les informations d'identification dans l'URL: http://user:[email protected]/
. L'utilisation de GitHub Oauth avec Jenkins n'est pas prise en charge par Janky.JANKY_CONFIG_DIR
: répertoire où les modèles de configuration de construction sont stockés. Généralement défini sur /app/config
sur Heroku.JANKY_HUBOT_USER
: Connexion utilisée pour protéger l'API Hubot.JANKY_HUBOT_PASSWORD
: mot de passe pour l'API Hubot.JANKY_GITHUB_USER
: la connexion de l'utilisateur GitHub a utilisé pour accéder à l'API. Nécessite des privilèges administratifs pour configurer des crochets de service.JANKY_GITHUB_PASSWORD
: le mot de passe de l'utilisateur GitHub.JANKY_GITHUB_HOOK_SECRET
: secret utilisé pour signer les demandes de crochet de github.JANKY_CHAT_DEFAULT_ROOM
: salle de chat où les notifications sont envoyées par défaut.Paramètres de base de données facultatifs:
DATABASE_URL
: URL de connexion de la base de données. Exemple: postgres://user:password@host:port/db_name
.JANKY_DATABASE_SOCKET
: chemin vers la prise de base de données. Exemple: /var/run/mysql5/mysqld.sock
.L'utilisation de Janky avec GitHub Enterprise nécessite un paramètre supplémentaire:
JANKY_GITHUB_API_URL
: URL API complète de l'instance, avec une barre oblique. Exemple: https://github.example.com/api/v3/
.https://github.com/blog/1227-commit-status-api
Pour mettre à jour les demandes de traction avec l'état de construction, générez un jeton OAuth via l'API GitHub:
curl -u username:password
-d '{ "scopes": [ "repo:status" ], "note": "janky" }'
https://api.github.com/authorizations
Définissez ensuite JANKY_GITHUB_STATUS_TOKEN
. En éventuellement, vous pouvez également définir JANKY_GITHUB_STATUS_CONTEXT
pour envoyer un contexte à l'API GitHub par défaut par défaut
username
et password
dans l'exemple ci-dessus doivent être les mêmes que les valeurs prévues pour JANKY_GITHUB_USER
et JANKY_GITHUB_PASSWORD
respectivement.
Paramètres requis:
JANKY_CHAT=hipchat
JANKY_CHAT_HIPCHAT_TOKEN
: jeton d'authentification (ce jeton doit être un jeton d'administration, pas un jeton de notification.)JANKY_CHAT_HIPCHAT_FROM
: Nom que les messages apparaîtront à partir de. Par défaut est CI
.JANKY_HUBOT_USER
doit être le nom d'utilisateur XMPP / Jabber au format xxxxx_xxxxxx plutôt que par e-mailJANKY_CHAT_DEFAULT_ROOM
devrait être le nom de la salle au lieu du format XMPP, par exemple: Engineers
au lieu de xxxx_xxxxxx.Installation:
require "janky/chat_service/hipchat"
dans le fichier config/environment.rb
avant la ligne Janky.setup(ENV)
.echo 'gem "hipchat", "~>0.4"' >> Gemfile
bundle
git commit -am "install hipchat"
Paramètres requis:
JANKY_CHAT=slack
JANKY_CHAT_SLACK_TEAM
: nom de l'équipe SlackJANKY_CHAT_SLACK_TOKEN
: jeton d'authentification pour l'utilisateur envoyant des notifications de construction.JANKY_CHAT_SLACK_USERNAME
: le nom que les messages apparaîtront à partir de. Par défaut est CI
.JANKY_CHAT_SLACK_ICON_URL
: URL vers une image à utiliser comme icône pour ce message.Installation:
require "janky/chat_service/slack"
dans le fichier config/environment.rb
avant la ligne Janky.setup(ENV)
.echo 'gem "slack.rb"' >> Gemfile
bundle
git commit -am "install slack"
Envoie des notifications à Hubot via le script Janky.
Paramètres requis:
JANKY_CHAT=hubot
JANKY_CHAT_HUBOT_URL
: URL vers votre instance de hubot.JANKY_CHAT_HUBOT_ROOMS
: Liste des pièces qui peuvent être définies via ci set room
."#room, #another-room"
"34343:room, 23223:another-room"
"room, another-room"
Installation:
require "janky/chat_service/hubot"
dans le fichier config/environment.rb
avant la ligne Janky.setup(ENV)
. Pour restreindre l'accès aux membres d'une organisation GitHub, enregistrez une nouvelle application OAuth sur GitHub avec le rappel défini sur $JANKY_BASE_URL/auth/github/callback
puis définissez quelques paramètres supplémentaires:
JANKY_SESSION_SECRET
: Cookie de session aléatoire Secret. Généralement généré par un outil comme pwgen
.JANKY_AUTH_CLIENT_ID
: l'ID client de l'application OAuth.JANKY_AUTH_CLIENT_SECRET
: Le secret du client de l'application OAuth.JANKY_AUTH_ORGANIZATION
: le nom de l'organisation. Exemple: "github".JANKY_AUTH_TEAM_ID
: un identifiant d'équipe facultatif pour donner l'autant. Exemple: "1234". Installez le script Janky dans votre Hubot puis définissez la variable d'environnement HUBOT_JANKY_URL
. Exemple: http://user:[email protected]/_hubot/
, avec l'utilisateur et le mot de passe remplacé par JANKY_HUBOT_USER
et JANKY_HUBOT_PASSWORD
respectivement.
La commande de construction par défaut doit suffire pour la plupart des applications Ruby:
$ bundle install --path vendor/gems --binstubs
$ bundle exec rake
Pour plus de contrôle, vous pouvez ajouter un script/cibuild
à la racine de votre référentiel pour Jenkins à exécuter à la place.
Pour le contrôle total, les fichiers config.xml
de Jenkins entiers peuvent être associés à des builds janky. Étant donné une version appelée windows
et un nom de modèle de psake
, Janky essaiera config/jobs/psake.xml.erb
pour utiliser un modèle, config/jobs/windows.xml.erb
pour essayer le nom du travail si le modèle ne sort pas, Avant de retomber enfin à la configuration par défaut, config/jobs/default.xml.erb
. Après avoir mis à jour ou ajouté une configuration personnalisée, exécutez à nouveau hubot ci setup
pour mettre à jour le serveur Jenkins.
Docker et Docker-Compose sont nécessaires pour pirater ce projet.
Faites fonctionner votre environnement:
script/bootstrap
Créez les bases de données, les tables et les données de semences:
script/setup
Démarrez le serveur:
docker-compose run --service-ports app script/server
Ouvrez l'application:
open http://localhost:9393/
Exécutez la suite de tests:
docker-compose run --rm app script/test
Fourk le référentiel Janky sur GitHub et envoyez une demande de traction. Notez que toute modification du comportement sans test sera rejetée. Si vous ajoutez de nouvelles fonctionnalités importantes, veuillez ajouter à la fois des tests et de la documentation.
Copyright © 2011-2014, GitHub, Inc. Voir le fichier COPYING
pour les droits et limitations de licence (MIT).