Actuellement, je crée un système pour stocker des données dans une base de données en utilisant Spring Boot dans ma thèse de fin d'études. Je voudrais développer localement les fonctions inachevées et procéder en parallèle lors de l'exploitation du système en le téléchargeant sur le serveur lorsque le système est terminé afin que l'entrée de données elle-même puisse être aidée par quelqu'un d'autre que moi. Donc, si vous pouvez pousser vers Github lorsque la fonction est terminée et la déployer automatiquement sur le serveur avec comme déclencheur, l'utilisateur (personne qui aide) le système avec la nouvelle fonction (en fait, il s'arrête pendant quelques secondes) sans arrêter le système d'exploitation ) Peut être utilisé. Ainsi, à partir du local, lorsque je git push vers le référentiel privé de git hub, les webhooks git hub envoient une requête http à jenkins, et avec cela comme déclencheur, jenkins git clone et exécute un script shell qui construit et exécute l'application spring. Remarque: il s'agit de l'article sur le 15e jour du calendrier de l'Avent Spring / Spring Boot. Lol
Java 1.8 Jenkins 2.891 Git 1.8.3.1 Github CentOS 7.2
Créer un nouveau travail Entrez le nom du travail à partir de Créer, sélectionnez Construire un projet Freestyle, puis cliquez sur OK.
Ensuite, l'écran de configuration apparaîtra, donc cochez Build à distance au déclencheur de construction et entrez le jeton d'authentification. Le jeton d'authentification peut être n'importe quoi. Par exemple, si le jeton d'authentification est Secret, JENKINS_URL / job / New / build? Token = Secret sera l'endroit où les webhooks enverront des requêtes http. La partie JENKINS_URL est l'URL où votre jenkins fonctionne. Pour le moment, appuyez une fois sur le bouton Enregistrer pour enregistrer.
Github dispose d'une fonctionnalité appelée Webhooks qui envoie des requêtes HTTP à une URL spécifiée lorsqu'un événement particulier se produit. Je l'ai utilisé cette fois. Ouvrez le référentiel Github du système que vous souhaitez déployer, ouvrez Setting et sélectionnez Add webhooks from Webhooks.
Décrivez l'URL qui a été définie dans Jenkins plus tôt et reçoit la requête HTTP dans l'URL de la charge utile.
Il est nécessaire d'ajouter les informations de connexion de l'utilisateur lors de l'écriture dans l'URL.
L'URL est
http://[USER_ID]:[API_TOKEN]@[JENKINS_HOST]/job/[JOB_NAME]/[build|buildWithParameters]?token=[TOKEN_NAME]
L'ID utilisateur et le jeton API peuvent être vus dans jenkins → gestion jenkins → gestion des utilisateurs → cliquez sur l'icône de configuration → affichage du jeton API.
Sélectionnez l'option par défaut «application / x-www-form-urlencoded» pour le type de contenu.
Le secret est vide.
Quels événements souhaitez-vous déclencher ce webhook? Parce que Tory souhaite créer l'événement push cette fois.
Vérifier uniquement l'événement push
Appuyez ensuite sur Ajouter des webhooks et s'il y a une coche verte dans la colonne Livraisons récentes, le réglage est terminé.
Si vous obtenez une erreur 403, vous pouvez décocher le jeton jenkins csrf. Pas bon pour la sécurité.
Vous devriez avoir un utilisateur jenkins lorsque vous avez installé jenkins. Le répertoire personnel de l'utilisateur jenkins est / var / lib / jenkins. Créez un répertoire .ssh ici et générez une clé publique et une clé privée pour l'authentification.
$ cd /var/lib/Jenkins
$ sudo mkdir .ssh
$ sudo ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa
Enter passphrase (empty for no passphrase):(enter)
Enter same passphrase again:(enter)
Cela générera la clé.
Exécutez la commande suivante.
$ cd /var/lib/jenkins/.ssh
$ sudo vi config
Contenu de la configuration ci-dessous
.ssh/config
Host github.com
User git
Hostname ssh.github.com
Port 443
Réglez ceci
$ sudo -u jenkins ssh -T [email protected]
Et plus tôt
Salut ~ ~ ~ ~! Vous vous êtes authentifié avec succès, mais GitHub ne fournit pas d'accès shell.
Si vous ne pouvez pas, changez les permissions de ʻid_rsaet de
config, changez le propriétaire en jenkins, créez
/ var / lib / jenkins / .ssh / known_hosts`, et changez les permissions et le propriétaire en jenkins également. Doit être résolu.
Définissez le Job que vous avez créé précédemment. Cliquez sur Paramètres en haut à gauche. Cliquez sur Ajouter une procédure de génération dans la colonne Génération, puis sur Exécuter Shell. Ajoutez le shell suivant ici
#Supprimez le processus de ressort précédent et arrêtez l'application du ressort.
ps aux | grep java | [Nom du pot après la construction].jar | grep -v sudo | awk '{print "kill -9 " $2}' | sudo sh
#Accédez au répertoire dans lequel vous souhaitez déployer l'application Spring. Cette fois/var/webapp/spring/J'ai décidé de déployer sur (les privilèges et les propriétaires ont été définis)
cd /var/webapp/spring/
#Supprimer l'application précédemment clonée par git
sudo rm -rf [Nom du référentiel]
#git clone.
git clone [URL pour ssh dans le référentiel]
#Déplacer vers le répertoire racine du référentiel cloné
cd [Nom du référentiel]
#Construisez avec Maven. Une fois construit, un fichier jar exécutable Spring est créé dans le répertoire cible du répertoire racine du projet.
sudo ./mvnw clean package
#Exécuter le fichier jar&Fonctionne en arrière-plan.--server.Vous pouvez l'exécuter sur n'importe quel port de votre choix.
sudo java -jar ./target/[Nom du pot après la construction].jar --server.port=8080 &
Enregistrez-le avec ceci et les paramètres sont terminés. Si vous exécutez le fichier jar en arrière-plan, vous ne pourrez pas voir le journal, donc si vous écrivez la description suivante dans application.proparties de spring-boot, un fichier journal appelé /logs/spring.log sera créé sous le répertoire racine du projet et le journal y sera craché.
/src/main/resource/application.proparties
logging.file=./logs/spring.log
Apportez quelques modifications au projet et git push pour le voir. Ensuite, le travail jenkins démarrera, et si le travail réussit, il sera terminé. C'est OK s'il est exécuté en tapant l'URL de votre application dans le navigateur!
Cette fois, j'ai demandé à une personne âgée du laboratoire de m'aider. Remerciements spéciaux @cappyzawa, Shotaro! !! !! !!
Organisation de l'intégration Webhook entre Jenkins et GitHub | Blog des développeurs de visée
Recommended Posts