Jenkins+gitlab+docker+harbor容器化自动部署详细流程(jenkins gitlab自动部署)

  本篇文章为你整理了Jenkins+gitlab+docker+harbor容器化自动部署详细流程(jenkins gitlab自动部署)的详细内容,包含有jenkins和docker实现自动化构建部署 jenkins gitlab自动部署 gitlab+jenkins+tomcat自动化部署 docker gitlab-runner Jenkins+gitlab+docker+harbor容器化自动部署详细流程,希望能帮助你了解 Jenkins+gitlab+docker+harbor容器化自动部署详细流程。

   docker pull gitlab/gitlab-ce

   2.运行gitlab镜像:
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --name gitlab --restart always -v /home/local/gitlab_docker/gitlab:/etc/gitlab -v /home/local/gitlab_docker/logs:/var/log/gitlab -v /home/local/gitlab_docker/data:/var/opt/gitlab gitlab/gitlab-ce

   参数说明:

   -d:后台运行

   -p:端口映射,宿主机端口:容器端口

   --name: 给将要运行的容器命名

   --restart always:docker启动的时候,也自行启动

   -v:挂载目录,宿主机目录:容器目录

   gitlab/gitlab-ce:要运行的镜像

   3.修改gitlab.rb配置文件

   vim /home/local/gitlab_docker/gitlab/gitlab.rb

  
内容如下:

  
##改成本机ip
external_url http://192.168.42.227
gitlab_rails[gitlab_ssh_host] = 192.168.42.227

   ##上面映射的端口
gitlab_rails[gitlab_shell_ssh_port] = 8022

   4.进入容器重启配置

   ##进去gitlab容器的命令
docker exec -it gitlab bash

   ##重置gitlab客户端的命令
gitlab-ctl reconfigure

   5.修改http的clone地址加上端口
##进入容器内部
docker exec -it gitlab /bin/bash

   ##修改文件
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

   内容如下:

   ##改成本机ip
host: 192.168.42.227
##clone的端口,上面映射的端口
port: 8090
https: false

   6.重启gitlab,在容器内执行:

   gitlab-ctl restart

   注解:如果使用docker restart gitlab,会自动执行gitlab-ctl reconfigure,配置会被还原,我们自己刚刚改的配置会丢失,慎用docker restart gitlab

  

  四、安装Harbor
1.安装docker-compose
下载地址:https://github.com/docker/compose/releases ,选中docker-compose-linux-x86_64下载

   2 下载完成重命名为:docker-compose,并放到 /usr/local/bin/下

   3 赋予可执行权限:

   sudo chmod +x /usr/local/bin/docker-compose

   4 创建软连接:

   sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

   5 检查安装结果:

   docker-compose --version

   6 下载harbor: https://github.com/goharbor/harbor/releases/download/v2.4.1/harbor-offline-installer-v2.4.1.tgz
 

   并放到目录下:/home/local/

   7 解压文件:

   tar xzvf harbor-offline-installer-v2.4.1.tgz

   8 拷贝配置文件:cp /home/local/harbor/harbor.yml.tmpl /home/local/harbor/harbor.yml

   9 修改http访问地址,禁用https:

   vi /usr/local/harbor/harbor.yml

   内容如下:

   #本机ip
hostname: 192.168.42.227
http:
port: 8080

   #https 注解https下面的所属配置

   10 执行安装:sudo /home/local/harbor/install.sh

   11 启动、关闭:在harbor目录下执行命令:

   启动:

   docker-compose up -d

   关闭:

   docker-compose down

   12 web(ip:8080)默认账号密码:admin Harbor12345

  

  五、为docker设置harbor私服

   1 将harbor私服的http地址配置到docker的不安全的register中,修改配置文件:

   vim /etc/docker/daemon.json,

   追加一行(和上一行用逗号隔开并回车):"insecure-registries": ["192.168.42.227:8080"]

   2 重启docker:

   systemctl daemon-reload systemctl restart docker

   3 docker登录(会显示登录成功):

   docker login -u admin -p Harbor12345 http://192.168.42.227:8080

   4上传镜像到私服

   在harbor私服新建一个项目名A,

   按照命名规则创建一个镜像:

   docker tag 本机镜像:tag harbor私服地址:端口/项目名A/文件夹:tag

   例如:把本机java镜像上传到私服 test_public 目录下

   docker tag java:8192.168.42.227:8080/test_public/image_test:v1

   5 上传到私服:docker push 私服地址/项目名/文件夹:Tags

   登录:

   docker login -u admin -p Harbor12345 http://192.168.42.227:8080

   上传:

   docker push192.168.42.227:8080/test_public/image_test:v1

   6拉取私服镜像:docker pull 私服地址/项目名/文件夹:Tags

   docker pull 192.168.42.227:8080/test_public/image_test:v1

  

  六、安装jenkins:

   (建议不要用docker安装,因为用docker安装Jenkins写pipeline脚本时,就用不了宿主机的插件及命令)

   1 依次执行以下命令

   sudo wget -O /etc/yum.repos.d/jenkins.repo \ https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
sudo dnf upgrade
sudo dnf install java-11-openjdk
sudo dnf install jenkins

   2 修改jenkins用户
vi /etc/sysconfig/jenkins

   JENKINS_USER="jenkins" 改成 JENKINS_USER="root"

   3 配置

   重新加载配置:
sudo systemctl daemon-reload

   设置开机启动、关闭(先直接跳过该操作)

   启动:

   sudo systemctl enable jenkins

   关闭:

   sudo systemctl disable jenkins

   4 启动

   systemctl start jenkins

  
5 如果在上一步启动成功了,可忽略此步。

   如果配置无误,启动还是报错,可以换个启动方法(本人就是这样启动成功的)

   先关闭Jenkins,即使启动失败,也不代表是关闭的:

   systemctl stop jenkins

   注:如关闭不成功就重启Liunx,确认已经关闭了jenkins

   进入目录:

   cd/etc/init.d/

   启动:

   ./jenkins start

  

   关闭命令是:./jenkins stop

   6 web访问,根据界面提示获取密码
cat /var/lib/jenkins/secrets/initialAdminPassword

   7 安装社区推荐的插件

   8 等待安装完成,进入Jenkins主页

  七、配置Jenkins

   1 下载maven:https://maven.apache.org/download.cgi 下载apache-maven-3.8.6-bin.tar.gz

   2 放到 /home/local 目录下,并进行解压

   tar xzvfapache-maven-3.8.6-bin.tar.gz

   3 修改配置源:

   mirror
id nexus-aliyun /id
mirrorOf central /mirrorOf
url http://maven.aliyun.com/nexus/content/groups/public/ /url
/mirror

   4修改环境变量(追加以下内容):vim /etc/profile

   export PATH=${PATH}:/home/local/apache-maven-3.8.6/bin

   5重载环境变量

   source /etc/profile

   6Dashboard - Manage Jenkins - Global Tool Configuration

   Maven 配置:将centos中maven目录拷贝进去

   注解:在构建调用mvn报权限,执行命令:chmod a+x /目录/apache-maven-3.2.2/bin/mvn

  

   JDK配置:将centos的JDK目录拷贝进去,可以通过命令:cat /etc/profile 查看java的目录

  

  

   Git配置:

   先在centos安装git:

   yum install git -y

  

  

  

   Maven配置:

  

  

  

   保存,其他插件配置忽略。

  

  八、安装插件:Git Parameter

   1.Dashboard - Manage Jenkins - 插件管理 处输入Git Parameter进行安装,安装完成重启Jenkins

   该插件用于在Jenkins拉取gitlab代码时,可以选择拉取不同分支的代码

  九、配置一个自动部署的项目

   1.新建一个item,输入项目名称,选择中pipeline(流水线,如果没有该选项,就去安装该插件,并重启),点击确定保存

  

  

  

   2 配置《丢弃旧构建》策略:

  

  

  

  

  

   3 配置项目参数:新增 String Parameter,用于在构建项目时,可输入一个字符参数Tag,在写pipeline script时,可以通过${Tag}来引用

   4 再新添一个项目参数:Git Parameter(刚刚安装Git Parameter插件才有该选项),用于在构建时可选择不同的分支拉取代码进行构建,在写pipeline脚本时通过 ${branch} 引用该值。

   注意:分支过滤:.* 是默认值,故${branch}=origin/main ,我改成了:origin.*/(.*) ${branch}=main,在pipeline脚本里取值${branch}拉取代码就不会报错了。其他配置默认值

  

  

   5 编写pipeline脚本:

  

  

   拉取gitlab代码的脚本,可以通过点击《流水线语法》进行自动生产:

  

  

  

   无Credentials,点击添加:输入gitlab用户名和密码,点击保存即可

  

   然后选中该凭证,点击生成流水线脚本,把脚本拷贝到pipeline脚本里:

  

   例如:

  

node {

 

   stage(Preparation) {

   checkout([$class: GitSCM, branches: [[name: */${branch}]], extensions: [], userRemoteConfigs: [[credentialsId: ecf3bed1-f362-4884-b285-fb42ab2d9816, url: http://192.168.42.227:8090/root/springboot.git]]])

   echo 拉取代码成功

  

 

   然后,将springboot项目用maven进行打包成jar(跳过了测试),脚本如下:

  

node {

 

   stage(Preparation) {

   checkout([$class: GitSCM, branches: [[name: */${branch}]], extensions: [], userRemoteConfigs: [[credentialsId: ecf3bed1-f362-4884-b285-fb42ab2d9816, url: http://192.168.42.227:8090/root/springboot.git]]])

   echo 拉取代码成功

   stage (maven build){

   sh /home/local/apache-maven-3.8.6/bin/mvn clean package -DskipTests

   echo 构建成功

  

 

   最后将jar打包成镜像,并上传到harbor私服的脚本:点击流水线语法,自动生成harbor凭证脚本:

  

  

   输入如下图,点击《添加》

  

   输入账号密码,点击添加:

  

  

  

   点击生成流水线脚本,拷贝脚本:

  

  

  

   然后在 //some block 写自己的脚本,例如:

  

 node {

 

   stage(Preparation) {

   checkout([$class: GitSCM, branches: [[name: */${branch}]], extensions: [], userRemoteConfigs: [[credentialsId: ecf3bed1-f362-4884-b285-fb42ab2d9816, url: http://192.168.42.227:8090/root/springboot.git]]])

   echo 拉取代码成功

   stage (maven build){

   sh /home/local/apache-maven-3.8.6/bin/mvn clean package -DskipTests

   echo 构建成功

   stage (docker build){

   withCredentials([usernamePassword(credentialsId: 1a5a43b8-4c27-47f6-95ef-af578568aa3e, passwordVariable: password, usernameVariable: username)]) {

   sh

   REPOSITORY=192.168.42.227:8080/test_public/image_test:${Tag}

   docker build -f Dockerfile -t $REPOSITORY .

   docker login -u ${username} -p ${password} http://192.168.42.227:8080

   docker push $REPOSITORY

   docker images grep image_test awk {print $3}xargs docker rmi

   echo 镜像上传成功

  

 

  

  说明:

  

批量删除REPOSITORY包含”image_test“的镜像

 

  

docker images grep image_test awk {print $3}xargs docker rmi

 

  十、部署项目

   1 首次构建的时候,可能不会显示分支branch,是空的,首次构建拉取代码成功了,就可以显示branch了,前提要保证:branch即使是空的,默认值是存在的分支,在git的流水线自动生成pipeline脚本时,配置好默认的分支

  

  结束,谢谢!

  

  以上就是Jenkins+gitlab+docker+harbor容器化自动部署详细流程(jenkins gitlab自动部署)的详细内容,想要了解更多 Jenkins+gitlab+docker+harbor容器化自动部署详细流程的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: