arrière-plan
GitLab
Il s'agit d'un puissant système de contrôle de version et d'une plate-forme de collaboration. Enregistrez les GitLab
enregistrements d'installation et d'utilisation du travail réel.
Lorsque vous utilisez GitLab
, il est installé CentOS7
directement sous forme de package sur , et n'est utilisé que comme outil d'hébergement de code .rpm
14.10.4
GitLab
Dans la chaîne de pré - recherche CI/CD
et d'assemblage ultérieure, Docker
la méthode d'installation est adoptée, version :16.2.3-jh
; introduite GitLab Runner
, version :16.2.0
.
Environnement système
[root@gitlab1 opt]# uname -a
Linux gitlab1 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@gitlab1 opt]# cat /proc/version
Linux version 3.10.0-1127.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 31 23:36:51 UTC 2020
[root@gitlab1 opt]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
[root@gitlab2 ~]# docker -v
Docker version 20.10.18, build b40c2f6
Installer GitLab via RPM
Adresse de téléchargement, miroir Tsinghua : https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
[root@gitlab1 local]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.10.4-ce.0.el7.x86_64.rpm
错误: 无法验证 mirrors.tuna.tsinghua.edu.cn 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书:
颁发的证书已经过期。
解决:将https修改为http
[root@gitlab1 local]# rpm -ivh gitlab-ce-14.10.4-ce.0.el7.x86_64.rpm
警告:gitlab-ce-14.10.4-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
错误:依赖检测失败:
policycoreutils-python 被 gitlab-ce-14.10.4-ce.0.el7.x86_64 需要
解决:yum install -y curl policycoreutils-python openssh-server
[root@gitlab1 local]# rpm -ivh gitlab-ce-14.10.4-ce.0.el7.x86_64.rpm
警告:gitlab-ce-14.10.4-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:gitlab-ce-14.10.4-ce.0.el7 ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
sudo gitlab-ctl reconfigure
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=14-10
# 编辑配置,设置访问地址
[root@gitlab1 local]# vi /etc/gitlab/gitlab.rb
external_url 'http://gitlab1'
# 重新配置生效
[root@gitlab1 local]# gitlab-ctl reconfigure
Running handlers:
Running handlers complete
Chef Infra Client finished, 606/1618 resources updated in 05 minutes 34 seconds
Warnings:
Rehashing of trusted certificates present in `/etc/gitlab/trusted-certs` failed. If on a FIPS-enabled machine, ensure `c_rehash` binary is available in $PATH.
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.
NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
gitlab Reconfigured!
Note:
- Comment vérifier les informations de version ? Pour afficher la version dans le backend GitLab : ajoutez l'aide après le nom/l'adresse IP du domaine de déploiement.
- Si vous modifiez les informations de configuration telles que l'IP ou le port, veillez à recharger la configuration après chaque modification : gitlab-ctl reconfigure.
[root@gitlab1 local]# cat /etc/gitlab/initial_root_password | grep Mot de passe
Utilisez un navigateur pour accéder à l'adresse configurée et entrez votre nom d'utilisateur et votre mot de passe.
GitLab
Commandes courantes
- gitlab-ctl start : démarrez gitlab,
- gitlab-ctl stop : arrêtez gitlab.
- Statut gitlab-ctl : Afficher le statut de gitlab
- gitlab-ctl restart : redémarrer le service
En tant qu'entrepôt de code, GitLab
son utilisation comprend les aspects suivants :
- Créer un groupe
- Créer un projet
- Ajouter une clé SSH
- cloner
- Enregistrement de l'utilisateur
- Avis d'utilisateur
- Rejoindre le groupe
De cette façon, si vous souhaitez utiliser CI/CD
la fonction, vous devez l'installer GitLab Runner
(mais il n'est pas recommandé d'utiliser cette méthode d'installation directe. Dans la production réelle, plus de personnes utilisent Docker
et Kubernetes
). Elle est divisée en deux étapes : l'installation et l'enregistrement. Adresse de téléchargement : https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7/
Note:
- L'inscription à GitLab Runner est divisée en deux étapes : obtenir le jeton de coureur et s'inscrire
- GitLab Runner est divisé en type partagé, type de groupe et type de projet, situés à différents emplacements.
- Il existe deux manières de s'inscrire : interactive et non interactive.
Installation de Docker à l'aide de GitLab
Ouvrez une nouvelle machine virtuelle et utilisez Docker
la méthode pour installer et exécuter GitLab
et GitLab Runner
.
[root@gitlab2 ~]# cd /opt/
[root@gitlab2 opt]# mkdir gitlab
[root@gitlab2 opt]# export GITLAB_HOME=/opt/gitlab
Selon la documentation officielle, GitLab Runner
la commande à installer et à exécuter est la suivante :
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest
Lors de l'exécution réelle, les paramètres ont été simplifiés, le nom d'hôte a été défini et le numéro de port mappé a été modifié.
docker run -d \
-h gitlab2 \
-p 80:80 -p 222:22 \
--name gitlab \
--restart always \
-v $GITLAB_HOME/config:/etc/gitlab \
-v $GITLAB_HOME/logs:/var/log/gitlab \
-v $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest
Remarque : remplacez le port 22 de l'hôte par 222, sinon une erreur sera signalée :Error starting userland proxy: listen tcp4 0.0.0.0:22: bind: address already in use.
Visitez JiFox GitLab URL
et connectez-vous en utilisant le nom d'utilisateur root
et le mot de passe de la commande suivante :
[root@gitlab2 ~]# docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
Password: zIrC8HPFfuxVmGSyx27nRbgTRwLaoiIhu+a2edEySMw=
Docker
Pour gérer GitLab
le service via .
docker start gitlab
docker stop gitlab
docker restart gitlab
docker rm gitlab
Installez et enregistrez gitlab-runner en mode Docker
Installer GitLab Runner
En fonction de GitLab
la version de , la version de est spécifiée GitLab Runner
.
docker run -d --name gitlab-runner --restart always \
-v /opt/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:v16.2.0
# 查看安装的GitLab Runner的版本信息
[root@gitlab2 ~]# docker exec -it gitlab-runner gitlab-runner --version
Version: 16.2.0
Git revision: 782e15da
Git branch: 16-2-stable
GO version: go1.20.5
Built: 2023-07-21T22:52:42+0000
OS/Arch: linux/amd64
Enregistrer GitLab Runner
Ensuite, créez le groupe, créez le projet, clonez-le et enregistrez-en un pour le projet Runner
.
Créer un nouveau groupe ——> Créer un nouveau projet ——> git clone http://gitlab2/iot/test.git
# 注册为`Shell`类型的执行器。
docker run --rm -v /opt/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v16.2.0 \
register \
--non-interactive \
--executor "shell" \
--url "http://192.168.44.149" \
--registration-token "GR1348941NNVnhpcsLqgBbL-1JxPT" \
--description "shell-runner" \
--tag-list "shell,test" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected"
Problèmes rencontrés lors de l'inscription :
- ERREUR : enregistrement du coureur… erreur coureur = GR1348941NNVnhpcs status = uniquement le schéma http ou https pris en charge
La raison en est que j'ai --url
écrit la valeur sous forme de nom d'hôte, qui doit être écrit sous HTTP
la forme d'un lien d'adresse.
- ERREUR : enregistrement du coureur… échec du coureur = GR1348941NNVnhpcs status = impossible d'exécuter le POST sur http://gitlab2/api/v4/runners : publication « http://gitlab2/api/v4/runners » : composez TCP : recherchez gitlab2 sur 192.168.44.2:53 : aucun hôte de ce type
La raison en est que j'ai --url
écrit la valeur en tant que nom d'hôte et que le nom d'hôte n'a pas pu être enregistré avec succès dans le conteneur. Ensuite, je l'ai remplacé par IP
l'adresse et l'enregistrement a réussi. Voici l'effet d'un enregistrement réussi.
[root@gitlab2 ~]# docker run --rm -v /opt/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v16.2.0 \
> register \
> --non-interactive \
> --executor "shell" \
> --url "http://192.168.44.149" \
> --registration-token "GR1348941NNVnhpcsLqgBbL-1JxPT" \
> --description "shell-runner" \
> --tag-list "shell,test" \
> --run-untagged="true" \
> --locked="false" \
> --access-level="not_protected"
Runtime platform arch=amd64 os=linux pid=7 revision=782e15da version=16.2.0
Running in system-mode.
WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens. For more information, see https://gitlab.com/gitlab-org/gitlab/-/issues/380872
Registering runner... succeeded runner=GR1348941NNVnhpcs
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Configuration (with the authentication token) was saved in "/etc/gitlab-runner/config.toml"
CI/CD
Afin d'expérimenter les GitLab Runner
fonctions CI/CD
suivantes, simulons le processus de pipeline réel avec une configuration de construction et de déploiement de services back-end, et créons un nouveau fichier dans le répertoire racine du projet créé : (Après la soumission, le projet démarrera automatiquement .gitlab-ci.yml
le exécution du pipeline).
stages:
- build
- deploy
build:
stage: build
tags:
- shell
only:
- master
script:
- echo "mvn clean"
- echo "mvn package"
deploy:
stage: deploy
tags:
- test
only:
- master
script:
- echo "java -jar x.jar"
CI/CD
Problèmes rencontrés au cours du processus :
- Une fois le fichier de configuration ci-dessus ajouté et soumis pour la première fois, le pipeline n'a pas été déclenché. .
GitLab
Il s'avère que la branche principale de la nouvelle version que j'ai utilisée master
est passée de à main
, .gitlab-ci.yml
modifiez simplement le nom de la branche dans .
- Le pipeline a échoué, journal des tâches : fatal : impossible d'accéder à "http://gitlab2/iot/test.git/" : impossible de résoudre l'hôte : gitlab2
On a l'impression que Docker
le conteneur ne peut pas obtenir le nom d'hôte de l'hôte. Lorsque vous entrez dans gitlab-runner
le conteneur où se trouve l'hôte, ping
l'hôte ip
est accessible, mais le nom d'hôte est bloqué. Le moyen le plus simple consiste à config.toml
l'ajouter dans le fichier clone_url = "http://192.168.44.149"
et IP
à extraire le code. de la manière.
# 没有自带ping命令,自行安装
root@249b6b18ffa8:/# apt update
root@249b6b18ffa8:/# apt install -y iputils-ping
# 修改配置,增加clone_url配置,跟url并列
[root@gitlab2 ~]# vi /opt/gitlab-runner/config/config.toml
clone_url = "http://192.168.44.149"
# 重启gitlab-runner所在容器
[root@gitlab2 ~]# docker restart gitlab-runner
gitlab-runner
Après avoir modifié la configuration ci-dessus, démarrez-en une manuellement Pipeline
et l'exécution est réussie.
# 进入容器
[root@gitlab2 ~]# docker exec -it gitlab-runner /bin/bash
# 列出所有的runner
root@249b6b18ffa8:/# gitlab-runner list
Runtime platform arch=amd64 os=linux pid=27 revision=782e15da version=16.2.0
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
shell-runner Executor=shell Token=XQEENnyfzyEVs8-2iDB9 URL=http://192.168.44.149
# 查看runner的状态
root@249b6b18ffa8:/# gitlab-runner verify
Runtime platform arch=amd64 os=linux pid=37 revision=782e15da version=16.2.0
Running in system-mode.
Verifying runner... is alive runner=XQEENnyf
Note:
- CI Lint peut être utilisé pour vérifier la syntaxe de .gitlab-ci.yml ;
- Un pipeline contient plusieurs tâches et chaque tâche contient au moins un script.
- Après modification de l'IP du serveur, le conteneur Docker n'est plus accessible depuis l'extérieur du serveur
# 服务器IP更改之后,linux数据包转发配置net.ipv4.ip_forward会变为0,即关闭状态。
[root@gitlab2 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
# 重启docker,docker会默认将net.ipv4.ip_forward值临时改为1(再次新增或更改IP之后会失效)
[root@gitlab2 ~]# systemctl restart docker
Résumé
Ce qui précède est le GitLab
processus d'installation et d'utilisation, ainsi que la première expérience de CI/CD. GitLab
Il s'agit d'une plate-forme de collaboration riche en fonctionnalités, facile à utiliser, sûre et fiable qui peut aider les équipes à mieux gérer et développer des projets.
- Flux de travail intégré :
GitLab
fournit un flux de travail intégré, comprenant l'hébergement de code, le suivi des problèmes, l'intégration et le déploiement continus et d'autres fonctions. Cela permet aux membres de l'équipe de collaborer au développement et à la gestion de projets sur la même plateforme. - Hébergement de code :
GitLab
fournit de puissantes fonctions d'hébergement de code et prend en charge le système de contrôle de version distribué Git. Les membres de l'équipe peuvent facilement partager et gérer le code pour le contrôle de version et le développement collaboratif. - Suivi des problèmes :
GitLab
fournit une fonctionnalité de suivi des problèmes pour aider les membres de l'équipe à enregistrer et à résoudre les problèmes du projet. Grâce au suivi des problèmes, les membres de l'équipe peuvent mieux collaborer et suivre l'avancement du projet. - Intégration et déploiement continus :
GitLab
fournit de puissantes capacités d'intégration et de déploiement continus pour automatiser la création, les tests et le déploiement du code. Cela peut grandement améliorer l’efficacité du développement et la qualité du code. - Sécurité :
GitLab
fournit des fonctionnalités de sécurité puissantes, notamment le contrôle d'accès, la gestion des autorisations et la révision du code. Cela aide les équipes à sécuriser le code et les informations sensibles.
Référence
Si vous avez des questions ou si des bugs sont détectés, n'hésitez pas à me contacter.
Vos commentaires et suggestions sont les bienvenus!