软件工程-gitlab+jenkins+docker 实现CICD

本文档详述了如何在服务器上安装和配置gitlab、jenkins以及docker,以建立一套完整的持续集成和持续部署(CICD)流程。首先,通过yum命令安装gitlab并设置自启动、邮件通知和外部URL。接着,安装jenkins,调整端口、配置JDK、下载插件,并修改更新源。然后,安装docker并启动。最后,在gitlab中创建项目,推送代码,并在jenkins中配置构建触发器和脚本,实现自动构建和部署。

什么是CICD?

CI-持续集成 

CD-持续交付

CD-持续部署

下面我们来看下如何用 gitlab+jenkins+docker 实现CICD

一 安装 gitlab

1.安装ssh

yum install -y curl policycoreutils-pythonopenssh-server

2.将SSH服务设置成开机自启动,安装命令:sudo systemctl enable sshd  

3.启动SSH服务,安装命令:sudo systemctl start sshd

4.关闭防火墙

5.安装Postfix以发送通知邮件,安装命令:sudo yum install postfix

6.将postfix服务设置成开机自启动,安装命令:sudo systemctl enable postfix

7.启动postfix,安装命令:sudo systemctl start postfix

8.添加gitlab 清华yum源

创建 /etc/yum.repos.d/gitlab-ce.repo 文件,内容为

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

再执行

sudo yum makecache
sudo yum install gitlab-ce

编辑/etc/gitlab/gitlab.rb文件,external_url ‘http://locahost’ 改成自己的ip地址


##! address from AWS. For more details, see:
##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
external_url 'http://192.168.116.130:8000'

9.生效配置并启动gitlab

gitlab-ctl reconfigure


[root@localhost ~]# gitlab-ctl start
ok: run: alertmanager: (pid 1739) 0s
ok: run: gitaly: (pid 1726) 0s
ok: run: gitlab-exporter: (pid 1745) 0s
ok: run: gitlab-workhorse: (pid 1728) 0s
ok: run: grafana: (pid 1743) 0s
ok: run: logrotate: (pid 1711) 0s
ok: run: nginx: (pid 1752) 0s
ok: run: node-exporter: (pid 1751) 0s
ok: run: postgres-exporter: (pid 1741) 0s
ok: run: postgresql: (pid 1750) 0s
ok: run: prometheus: (pid 1732) 0s
ok: run: puma: (pid 1735) 0s
ok: run: redis: (pid 1725) 0s
ok: run: redis-exporter: (pid 1730) 0s
ok: run: sidekiq: (pid 1748) 0s

10.设置管理员账号

gitlab-rails console -e production

Loading production environment (Rails 6.1.3.2)
irb(main):001:0> u=User.find(1)
=> #<User id:1 @root>
irb(main):002:0> u.password='test12345678'
=> "test12345678"
irb(main):003:0> u.save
Enqueued ActionMailer::MailDeliveryJob (Job ID: 63665a45-e611-428c-9903-8ac8fb1fccb9) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", {:args=>[#<GlobalID:0x00007fcc207de238 @uri=#<URI::GID gid://gitlab/User/1>>]}
=> true
irb(main):004:0> exit

11.登陆gitlab

二. 安装jenkins

1.安装jdk 并配置环境变量(不细说)

2.yum 安装jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
  sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

 yum install epel-release # repository that provides 'daemonize'
  yum install java-11-openjdk-devel
  yum install jenkins

3.配置jenkins

设置端口号

vi /etc/sysconfig/jenkins
## Type:        integer(0:65535)
## Default:     8080
## ServiceRestart: jenkins
#
# Port Jenkins is listening on.
# Set to -1 to disable
#
JENKINS_PORT="8088"

设置jdk 路径

vi /etc/init.d/jenkins
# Search usable Java as /usr/bin/java might not point to minimal version required by Jenkins.
# see http://www.nabble.com/guinea-pigs-wanted-----Hudson-RPM-for-RedHat-Linux-td25673707.html
candidates="
/etc/alternatives/java
/usr/lib/jvm/java-1.8.0/bin/java
/usr/lib/jvm/jre-1.8.0/bin/java
/usr/lib/jvm/java-11.0/bin/java
/usr/lib/jvm/jre-11.0/bin/java
/usr/lib/jvm/java-11-openjdk-amd64
/usr/local/jdk1.8.0_301/bin/java

4. 启动jenkins

service jenkins start

5.首次访问输入默认密码

 查看默认密码

cat /var/lib/jenkins/secrets/initialAdminPassword 

6.登录

 7. 插件下载镜像地址修改为 http://mirror.xmission.com/jenkins/updates/update-center.json

重启生效

8.如果还是无法下载插件可以按下面两步修改

1、修改 jenkins 数据目录中的hudson.model.UpdateCenter.xml值为:

sed -i ‘s/https://updates.jenkins.io/update-center.json/https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json/g’ /root/.jenkins/hudson.model.UpdateCenter.xml

2、修改updates文件夹中的 default.json文件

sed -i ‘s/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g’ /root/.jenkins/updates/default.json

sed -i ‘s/http://www.google.com/http://www.baidu.com/g’ /root/.jenkins/updates/default.json

9.将jenkins账户改成root权限

vim /etc/sysconfig/jenkins 将jenkins_user 改为root 重启生效

## Type:        string
## Default:     "jenkins"
## ServiceRestart: jenkins
#
# Unix user account that runs the Jenkins daemon
# Be careful when you change this, as you need to update
# permissions of $JENKINS_HOME and /var/log/jenkins.
#
JENKINS_USER="root"

三 .安装docker

sudo yum install docker-ce
[root@centos1 updates]# docker -v
Docker version 20.10.8, build 3967b7d

四. gitlab创建工程

push 本地项目到gitlab

五. 配置jenkins

1.新建一个工程

2.配置项目

1.源码管理

 2. 添加凭证

设置触发器

 生成token

设置 gitlab的webhooks

构建

编写构建后shell脚本

六. 提交代码到git触发构建部署

<think>好的,我现在需要帮助用户配置一个包含CI/CD、DockerJenkins的全流程开发与部署环境。用户可能已经了解了一些基础概念,但需要具体的步骤指导。首先,我应该结合用户提供的引用内容,整理出一个清晰的教程,确保每个步骤都正确无误,并且符合最佳实践。 首先,用户提供的引用中有关于如何创建自定义Jenkins镜像的内容,比如安装docker-ce-cli和BlueOcean插件[^1]。这应该是配置Jenkins环境的重要步骤。我需要先指导用户如何构建这个自定义镜像,使用Dockerfile,并运行容器。同时,引用[2]提到启动Jenkins容器时的各种参数,包括端口映射、卷挂载等,这些都需要详细说明,确保用户正确挂载必要的目录和文件,比如docker.sock和docker二进制文件,以便Jenkins容器能够执行Docker命令。 接下来,引用[3]和[4]涉及到Jenkins中的配置,比如安装插件、配置JDK、创建Pipeline任务等。用户可能需要知道如何在Jenkins中安装必要的插件,例如Git、Pipeline、Docker等,以及如何配置JDK环境。此外,配置GitLab的Webhook来自动触发构建也是关键步骤,需要详细说明。 我需要将整个流程分为几个主要步骤:环境准备、Jenkins部署、Pipeline配置、自动化触发、应用部署。每个步骤下再细分具体操作,比如构建镜像、运行容器、初始化Jenkins、安装插件、创建凭证、编写Jenkinsfile、配置GitLab Webhook等。同时,用户可能需要示例代码,比如Dockerfile和Jenkinsfile的内容,确保他们能够复制粘贴并调整以适应自己的项目。 另外,需要注意权限问题,比如在Docker容器中以root用户运行,或者处理挂载卷的权限,避免出现权限错误。例如,引用[2]中使用了--user root来提升权限,挂载docker.sock和docker二进制文件,这些都是为了让Jenkins容器能够与宿主机的Docker守护进程通信,执行构建和部署操作。 用户可能遇到的常见问题包括:Jenkins容器无法访问Docker、Pipeline脚本权限不足、GitLab Webhook配置错误等。在教程中应该提前指出这些潜在问题,并提供解决方案,比如检查挂载是否正确,确保插件已安装,测试Webhook的连通性等。 最后,需要生成相关问题,帮助用户进一步学习,比如性能优化、多环境配置、安全性措施等,这些能引导用户深入理解CI/CD流程的各个方面。</think>### CI/CD全流程配置教程(Docker+Jenkins--- #### 一、环境准备 1. **安装Docker** ```bash curl -fsSL https://get.docker.com | bash -s docker systemctl enable docker && systemctl start docker ``` 2. **创建自定义Jenkins镜像** 新建`Dockerfile`,添加以下内容(安装docker-cli和BlueOcean插件)[^1]: ```dockerfile FROM jenkins/jenkins:2.346.1-jdk11 USER root RUN apt-get update && apt-get install -y lsb-release RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \ https://download.docker.com/linux/debian/gpg RUN echo "deb [arch=$(dpkg --print-architecture) \ signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \ https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list RUN apt-get update && apt-get install -y docker-ce-cli USER jenkins RUN jenkins-plugin-cli --plugins "blueocean:1.25.5 docker-workflow:1.28" ``` 构建镜像: ```bash docker build -t my-jenkins:2.346.1 . ``` --- #### 二、部署Jenkins容器 使用以下命令启动容器[^2]: ```bash docker run -d --name jenkins \ -p 8080:8080 -p 50000:50000 \ --user root \ -v /data/jenkins:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/usr/bin/docker \ --privileged=true \ my-jenkins:2.346.1 ``` **关键参数说明**: - `-v /var/run/docker.sock`: 允许容器内执行宿主机Docker命令 - `--privileged=true`: 提升容器权限 - `-v $(which docker)`: 挂载宿主机Docker客户端 --- #### 三、初始化Jenkins配置 1. **访问控制台** 浏览器打开`http://服务器IP:8080`,输入初始密码(通过`docker logs jenkins`查看)。 2. **安装推荐插件** 选择"Install suggested plugins",包括Git、Pipeline、Docker等核心插件。 3. **配置JDK和Docker路径** - 进入 **Manage Jenkins > Global Tool Configuration** - 添加JDK路径(若宿主机已安装)[^3] - Docker路径填写`/usr/bin/docker` --- #### 四、配置Pipeline流水线 1. **创建凭证** - 在 **Credentials > System** 中添加Git仓库的SSH密钥或账号密码。 2. **新建Pipeline任务** - 任务类型选择 **Pipeline** - 在 **Pipeline** 选项卡中选择`Pipeline script from SCM`,配置Git仓库地址和凭证。 3. **编写Jenkinsfile示例** 在代码仓库根目录创建`Jenkinsfile`: ```groovy pipeline { agent any stages { stage('Build') { steps { sh 'docker build -t myapp:${BUILD_ID} .' } } stage('Test') { steps { sh 'docker run myapp:${BUILD_ID} npm test' } } stage('Deploy') { steps { sh 'docker tag myapp:${BUILD_ID} myapp:latest' sh 'docker-compose up -d' } } } } ``` --- #### 五、自动化触发配置(GitLab Webhook)[^4] 1. **GitLab设置** - 进入项目 **Settings > Webhooks** - URL填写`http://Jenkins-IP:8080/project/<任务名称>` - 触发事件选择`Push events` 2. **Jenkins配置** - 安装 **GitLab Plugin** - 在任务设置中启用 **Build when a change is pushed to GitLab** --- #### 六、部署验证 1. **查看流水线日志** 在BlueOcean界面(`http://IP:8080/blue`)可视化跟踪构建过程。 2. **检查运行容器** ```bash docker ps | grep myapp ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值