Installez la dernière version de Jenkins sur Ubuntu 16

Ce didacticiel décrit l'installation de la dernière version du serveur d'automatisation ** Jenkins ** sur ** Alibaba Cloud ECS Ubuntu 16 **.

Alibaba Cloud Tech Share Auteur Liptan Biswas, Tech Share /techshare?spm=a2c65.11461447.0.0.789b4a54a4WRLd) est un programme d'incitation Alibaba Cloud qui encourage le partage des connaissances techniques et des meilleures pratiques au sein de la communauté cloud.

Jenkins est un serveur d'automatisation auto-hébergé open source. Il est très populaire parmi les ingénieurs DevOps pour la mise en œuvre d'une intégration continue et d'une livraison continue dans le cycle de vie du développement logiciel. Écrit en Java, Jenkins fournit un support prêt à l'emploi pour la création de projets Apache Ant, Maven et sbt. Vous pouvez également exécuter des scripts batch pour les shells Linux et Windows. Les systèmes de gestion de versions multiples tels que Git, Mercurial, Subversion et CVS sont entièrement pris en charge par Jenkins. Au moins 1000 types de plug-ins sont disponibles pour améliorer les fonctionnalités de votre application.

Les builds dans Jenkins peuvent être déclenchés de plusieurs manières, par exemple en planifiant une build à un moment précis ou en appelant l'URL de build après avoir détecté un changement dans le code source du système de contrôle de version. Lorsque la construction est déclenchée, Jenkins récupère le code source du référentiel et démarre la construction. Les tests automatisés sont exécutés et la sortie est enregistrée en fonction des paramètres fournis. Jenkins peut également fournir des packages générés après une compilation réussie.

Ce didacticiel en trois parties vous montrera comment installer Jenkins et comment utiliser Jenkins pour une intégration et un déploiement continus.

La partie 1 de ce didacticiel est à jour avec l'instance Ubuntu 16.04 64 bits Alibaba Cloud Elastic Computer Service (ECS). Installez la version de Jenkins Automation Server. Configurez également un proxy inverse Nginx sécurisé pour accéder à votre instance Jenkins. Dans la partie 2, vous allez créer un exemple d'application Web Java en tant que projet Maven. Nous allons également procéder au processus de création d'un travail de build dans Jenkins. Enfin, la troisième partie du didacticiel automatise le processus de construction. Vous apprendrez également à utiliser Jenkins pour une livraison continue.

Conditions préalables

1, [Alibaba Cloud ECS](https://www.alibabacloud.com/product/ecs?spm=a2c65.11461447.0.0.789b4a54a4WRLd&biz_params=%7B%22intl%22:%22%7B%5C%22referralCode%5C%22 :% 5C% 22fmj2og% 5C% 22% 7D% 22% 7D) Ubuntu 16.04 64 bits est installé sur l'instance. 2. Une règle de pare-feu ou de groupe de sécurité configurée pour autoriser les ports «80» et «443». 3, Pour les instances ECS Obligatoire [nom de domaine](https: // www) .alibabacloud.com / domain? spm = a2c65.11461447.0.0.789b4a54a4WRLd & biz_params =% 7B% 22intl% 22:% 22% 7B% 22referralCode% 22:% 22fmj2og% 22% 7D% 22% 7D).

Pour obtenir des instructions sur la création d'une instance et la connexion à celle-ci, consultez le Guide de démarrage rapide (https://www.alibabacloud.com/help/doc-detail/25422.htm?spm=a2c65.11461447.0.0.789b4a54a4WRLd). "Veuillez suivre le. Dans ce didacticiel, vous avez déjà créé une instance Alibaba et défini "jenkins.example.com" pour pointer vers votre instance Ubuntu. On suppose que vous l'êtes. Après vous être connecté à l'instance via SSH, exécutez la commande suivante pour mettre à jour le cache du référentiel et le système de base.

apt update && apt -y upgrade & apt -y autoremove

Il est préférable de créer un utilisateur sudo et d'exécuter toutes les commandes au lieu d'exécuter toutes les commandes en tant qu'utilisateur root. Créons maintenant un utilisateur sudo. Vous pouvez utiliser n'importe quel nom d'utilisateur de votre choix.

adduser aliyun

Après avoir créé l'utilisateur, ajoutez-le au groupe sudo.

usermod -aG sudo aliyun

Passez maintenant à l'utilisateur nouvellement créé.

su - aliyun

Réglage du nom d'hôte

Définissez le nom de domaine complet ou le nom de domaine complet comme nom d'hôte du serveur. La définition du nom d'hôte n'est pas obligatoire, mais Jenkins affichera un message d'avertissement si le nom d'hôte n'est pas défini correctement.

sudo hostnamectl set-hostname jenkins.example.com

De même, ajoutez le nom de domaine au fichier / etc / hosts.

echo "127.0.0.0.1 jenkins.example.com" | sudo tee -a /etc/hosts

Installation de Java

Jenkins est écrit en Java et vous devrez peut-être créer des applications Java à l'avenir, alors passons au kit de développement Java et à l'installation de JDK. Jenkins prend en charge à la fois Oracle Java 8 et OpenJDK 8. Ce didacticiel installe Oracle Java version 8. Oracle Java contient à la fois Java Runtime (JRE) et JDK. Ajoutez le référentiel Oracle Java PPA.

sudo apt install -y software-properties-common
sudo add-apt-repository --yes ppa:webupd8team/java
sudo apt update

Installez Oracle Java 8.

sudo apt -y install oracle-java8-installer

Vous pouvez vérifier si Java est installé avec succès en exécutant la commande java -version.

aliyun@jenkins:~$ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

Installez les packages suivants et définissez le chemin par défaut de java_home.

sudo apt -y install oracle-java8-set-default

Vous pouvez maintenant vérifier si la variable JAVA_HOME est définie en exécutant echo $ JAVA_HOME. Vous devrez peut-être également vous déconnecter et vous reconnecter pour obtenir le résultat souhaité.

aliyun@jenkins:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-oracle

Installez Jenkins

Jenkins peut être facilement installé via un référentiel que le projet lui-même maintient activement. En installant via le référentiel, vous pouvez facilement mettre à niveau à l'avenir en utilisant directement la commande apt upgrade. Importez la clé utilisée pour signer le package dans le référentiel Jenkins. Cela garantira que le package correct est installé.

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -.

Créez un nouveau fichier de liste de référentiels pour Jenkins.

echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list

Installez Jenkins.

sudo apt update
sudo apt -y install jenkins git

J'installe Jenkins à partir d'un référentiel géré par le projet, je dois donc installer la dernière version disponible de l'application. Git est requis pour exécuter le plugin Git sur Jenkins. Pour démarrer Jenkins et le faire démarrer automatiquement au démarrage, exécutez-le.

sudo systemctl start jenkins
sudo systemctl enable jenkins

Vous pouvez vérifier l'état du service avec la commande systemctl status jenkins.

aliyun@jenkins:~$ sudo systemctl status jenkins
● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; bad; vendor preset: enabled)
   Active: active (exited) since Fri 2018-05-04 12:37:03 UTC; 35s ago
     Docs: man:systemd-sysv-generator(8)

May 04 12:37:02 jenkins.liptan.tk systemd[1]: Starting LSB: Start Jenkins at boot time...
May 04 12:37:02 jenkins.liptan.tk jenkins[4787]:  * Starting Jenkins Automation Server jenkins

Pour voir les journaux associés au serveur Jenkins lui-même, exécutez la commande suivante:

tail -f /var/log/jenkins/jenkins.log

Le premier lancement de Jenkins prendra quelques minutes. Si vous voyez la ligne suivante dans la sortie, votre application est prête.

aliyun@jenkins:~$ tail -f /var/log/jenkins/jenkins.log
May 02, 2018 2:14:29 PM hudson.WebAppMain$3 run
INFO: Jenkins is fully up and running

Jenkins est maintenant en cours d'exécution sur votre serveur. Poursuivez l'installation de Nginx afin de pouvoir accéder facilement à votre instance Jenkins en utilisant votre nom de domaine.

Remarque: Si le nom de domaine n'est pas configuré pour pointer vers l'instance Alibaba Cloud ECS, ouvrez le port "808080" via le groupe de sécurité de l'instance ECS et ouvrez [http://172.16.0.1:8080](http: / /172.16.0.1:8080/?spm=a2c65.11461447.0.0.789b4a54a4WRLd), 172.16.0.1 peut accéder à l'instance Jenkins, qui est l'adresse IP publique de l'instance ECS. Ignorez la section d'installation de Nginx et suivez le didacticiel de la configuration finale.

Installez Nginx

Jenkins a un serveur Web intégré pour servir les applications sur le port "808080", mais il n'est pas recommandé de publier un tel serveur Web sur Internet dans un environnement de production. Ce didacticiel utilise Nginx comme proxy inverse qui transmet les demandes des clients au serveur Jenkins. La configuration d'un proxy inverse avec un nom de domaine améliore également l'accessibilité de l'instance, vous n'avez donc pas besoin de vous souvenir de l'adresse IP de l'instance.

Installez le serveur Web Nginx.

sudo apt -y install nginx

Démarrez Nginx pour que le serveur démarre automatiquement au démarrage.

sudo systemctl start nginx
sudo systemctl enable nginx

Il est également important de protéger votre serveur Web avec le cryptage SSL / TLS, car les connexions et autres données importantes sont envoyées du client au serveur Web et vice versa. Si les données échangées ne sont pas cryptées, les données du réseau peuvent être volées. Ce didacticiel utilise le certificat SSL gratuit de Let's Encrypt CA. Si vous souhaitez utiliser un SSL plus fiable et plus convivial pour la production, Achetez un certificat SSL auprès d'Alibaba Cloud pouvez.

Let's Encrypt fournit "Certbot", un outil qui facilite la demande et la génération de certificats. Ajoutez le référentiel Certbot à votre système et installez Certbot.

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt update
sudo apt -y install certbot

Pour que Certbot vérifie la propriété d'un domaine, il est important que le domaine pointe vers une instance ECS. Sinon, le certificat de domaine ne sera pas généré et une erreur sera affichée. Utilisez Certbot pour demander un certificat.

sudo certbot certonly --webroot -w /var/www/html -d jenkins.example.com

Lorsque le certificat est généré, vous verrez une sortie similaire à ce qui suit:

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for jenkins.example.com
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/jenkins.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/jenkins.example.com/privkey.pem
   ...

Créez une tâche cron pour un renouvellement automatique avant l'expiration du certificat.

{ sudo crontab -l; echo '36 2 * * * * /usr/bin/certbot renew --post-hook "systemctl reload nginx"; } } | sudo crontab -l.

Vous pouvez vérifier si une tâche cron a été créée en exécutant la commande sudo crontab -l.

aliyun@jenkins:~$ sudo crontab -l
36 2 * * * /usr/bin/certbot renew --post-hook "systemctl reload nginx"

Créez un nouveau bloc de serveur Nginx pour le proxy inverse Jenkins.

sudo nano /etc/nginx/sites-available/jenkins

Entrez les paramètres suivants dans l'éditeur. Assurez-vous de remplacer toutes les occurrences de l'exemple de domaine par le domaine réel.

upstream jenkins {
  keepalive 32;
  server 127.0.0.1:8080;
}
server {
    listen 80;
    server_name jenkins.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443;
    server_name jenkins.example.com;

    root            /var/cache/jenkins/war/;
    ssl_certificate           /etc/letsencrypt/live/jenkins.example.com/fullchain.pem;
    ssl_certificate_key       /etc/letsencrypt/live/jenkins.example.com/privkey.pem;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    gzip  on;
    gzip_http_version 1.1;
    gzip_vary on;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml;
    gzip_buffers 16 8k;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    
    access_log            /var/log/nginx/jenkins.access.log;
    error_log            /var/log/nginx/jenkins.error.log;
    ignore_invalid_headers off;

location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
    rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
    }

location /userContent {
    root /var/lib/jenkins/;
    if (!-f $request_filename){
    rewrite (.*) /$1 last;
    break;
    }
    sendfile on;
    }
    
location @jenkins {
    sendfile off;
    proxy_pass         http://jenkins;
    proxy_redirect     default;
    proxy_http_version 1.1;

    proxy_set_header   Host              $host;
    proxy_set_header   X-Real-IP         $remote_addr;
    proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
    proxy_max_temp_file_size 0;
    client_max_body_size       10m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_request_buffering    off;
    proxy_set_header Connection "";
    }

location / {
    if ($http_user_agent ~* '(iPhone|iPod)') {
    rewrite ^/$ /view/iphone/ redirect;
    }
try_files $uri @jenkins;
    }
}

Activez le fichier de configuration.

sudo ln -s /etc/nginx/sites-available/jenkins /etc/nginx/sites-enabled/jenkins

Vous pouvez rechercher des erreurs dans le fichier de configuration en exécutant sudo nginx -t.

aliyun@jenkins:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Redémarrez le serveur Web Nginx pour que les modifications de configuration prennent effet.

sudo systemctl restart nginx

L'accès au port "8080" n'est plus nécessaire car nous utilisons le proxy inverse Nginx pour accéder à Jenkins. Si vous avez activé l'accès au port "808080" dans le groupe de sécurité du pare-feu ou de l'instance ECS, vous pouvez le supprimer en toute sécurité. Pour configurer le serveur intégré Jenkins afin qu'il n'écoute que les connexions de l'hôte local, modifiez les paramètres dans le fichier de configuration par défaut de Jenkins. Ouvrez le fichier de paramètres.

sudo nano /etc/default/jenkins

Recherchez la ligne suivante à la fin du fichier:

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT”

Modifiez les paramètres comme suit.

HTTP_HOST=127.0.0.1

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --httpListenAddress=$HTTP_HOST"

Enregistrez le fichier et quittez l'éditeur. Exécutez et redémarrez l'instance Jenkins.

sudo systemctl restart jenkins

Le serveur intégré de Jenkins n'accepte désormais que les connexions des hôtes locaux. Seul le proxy Nginx peut y accéder en toute sécurité.

Vous pouvez accéder à votre instance Jenkins à partir de votre navigateur préféré en visitant l'URL https://jenkins.example.com.

Réglage final

Lors de l'installation, Jenkins générera un mot de passe initial. Ce mot de passe initial est requis pour terminer la configuration de Jenkins à partir de votre navigateur. Si vous accédez à votre instance Jenkins depuis votre navigateur, vous verrez que vous demandez un mot de passe administrateur. Imprimez le mot de passe administrateur initial sur le terminal.

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

Vous devriez voir une sortie similaire.

aliyun@jenkins:~$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
84ae7775fec245e69305c6db08389d69

Copiez le mot de passe de votre appareil et collez-le dans votre navigateur.

image.png

Si le mot de passe initial est correctement vérifié, le programme d'installation demandera un plug-in à installer. Les plugins peuvent être facilement gérés depuis l'interface Jenkins, alors sélectionnez l'option Installer les plugins suggérés ici. Cela installera les plug-ins les plus populaires et les plus utiles pour étendre les fonctionnalités de Jenkins.

image.png

À ce stade, SETUP installe le plug-in recommandé. Il sera terminé dans quelques minutes. L'état d'installation de chaque plug-in s'affiche.

image.png

Si le plug-in est correctement installé, le programme d'installation vous demandera de créer un compte administrateur. Entrez les détails du compte de base que Jenkins demandera.

image.png

Enfin, vous verrez un message indiquant que Jenkins est prêt. Accédez à Connexion et connectez-vous avec le compte administrateur que vous avez créé précédemment. Le tableau de bord Jenkins s'affiche.

image.png

Conclusion

C'est la fin. Alibaba Cloud ECS Nous avons installé avec succès un serveur d'automatisation Jenkins sur Ubuntu 16.04. Nous avons également mis en place un proxy inverse Nginx pour assurer la sécurité avec Let's Encrypt SSL. Maintenant que votre instance Jenkins est prête, vous pouvez passer à la création de votre première tâche de build.

[Deuxième moitié du didacticiel](https://community.alibabacloud.com/blog/ci%2Fcd-with-jenkins---part-2%3A-use-jenkins-for-continuous-integration_593720?spm=a2c65.11461447.0. Dans 0.789b4a54a4WRLd), nous allons créer un exemple d'application Java Web en tant que projet Maven. Configurez également Jenkins pour qu'il fonctionne avec JDK, Git et Maven. Enfin, configurez un projet de génération basé sur Jenkin pour l'exemple d'application et exécutez la première génération.

Recommended Posts

Installez la dernière version de Jenkins sur Ubuntu 16
Installez OpenJDK (Java) sur le dernier Ubuntu
Construisez le dernier Samba 4 sur Ubuntu 20.04
Installation sans tête d'Ubuntu 20.10 sur Raspberry Pi
Installez pyqt5 sur ubuntu
Installez Ruby sur Ubuntu 20.04
Installez le dernier pilote matériel d'ELRepo sur CentOS
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Installez ag (le chercheur d'argent) [sur CentOS / Ubuntu / Mac]
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Installez l'agent zabbix (5.0) sur Ubuntu 18.04
Installation du proxy MAV sur Ubuntu 18.04
Installez Java sur WSL Ubuntu 18.04
Installez Jenkins sur CentOS de Docker
Installez Ubuntu Desktop 20.10 sur RaspberryPi4
Installez WordPress 5.5 sur Ubuntu 20.04 LTS
Installez Ubuntu Server 20.04 sur Btrfs
Remarque: installez PostgreSQL 9.5 sur Ubuntu 18.04
Installer en spécifiant la version de Django dans l'environnement Docker
Installez docker et docker-compose sur ubuntu dans les plus brefs délais
L'installation de jenkins 2.60.1-1 0 ou version ultérieure échoue sur Ubuntu 14.04 (avec rancune)
Installez AWS IoT Greengrass sur Ubuntu
Installez JDK et JRE sur Ubuntu 16.10
[Édition Java] Histoire de la sérialisation
Vérifiez la version de Cent OS
Remarque sur le chemin de request.getRequestDispatcher
Comment installer WildFly sur Ubuntu 18.04
Installez SonarQube sur l'instance ECS sur Ubuntu 16.04
Installez ruby sur Ubuntu 20.04 avec rbenv
Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
Afficher le texte en haut de l'image
Samshin sur la valeur du champ caché
Je souhaite installer PHP 7.2 sur Ubuntu 20.04.
Installez le client de messagerie Web Rainloop sur CentOS 8
Résolution du problème de gel dû à une soudaine "erreur EXT4-fs" sur Ubuntu 20.04
Retour sur les bases de Java
Vérifiez la version du logiciel Web standard.
L'histoire de l'installation de raspi-config sur Ubuntu 18.04 et de la modification des paramètres initiaux de GPIO
[Oracle Cloud] Installez le JDK 11 (LTS) gratuit d'Oracle sur une instance virtuelle d'OCI
Comment vérifier la dernière version de io.spring.platform pour l'écriture dans pom.xml de Spring (STS)
Mes pensées sur l'avenir [Version de l'application Gradle ①]