docker部署jenkins并自动拉取gitlab代码打包镜像发布项目

本文详细介绍了如何在Docker中部署Jenkins,并进行前端项目的自动化部署,包括配置Jenkins与Gitlab的权限、私钥与部署密钥,以及在构建过程中遇到的权限、脚本错误等问题的解决方案。此外,还提供了jenkins容器的启动命令和构建项目的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章主要是记录自己学习docker部署jenkins、以及踩的一些坑,分为三个部分

一、docker部署jenkins

二、jenkins自动化部署前端项目

三、以及遇到的一些坑

docker部署gitlab可以参考这篇文章:docker部署gitlabgitlab-ce版本14.0.5-ce.0 root账号密码设置问题

一、docker部署jenkins

sudo docker run -d  \
--name jenkins_test10 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/usr/bin/docker \
--privileged=true \
-p 8090:8080 \
-p 50010:50000 \
jenkins/jenkins:lts

 命令执行完后

1、通过docker logs ‘jenkins容器id’ 获取登录密码;

2、在浏览器中输入ip地址进入jenkins的初始页面

3、选择安装推荐插件,安装插件

4、设置新的用户名和密码,也可以不设置

然后jenkins就已经部署完毕了

二、jenkins自动化部署前端项目

jenkins自动化部署项目需要几个步骤

1、配置jenkins的gitlab权限

2、配置jenkins的私钥与gitlab的部署公钥

3、配置jenkins的构建项目

1、配置jenkins的gitlab权限

        a、在gitlab创建一个应用,填写应用名称和重定向地址,地址的规则是:jenkinsde地址+/securityRealm/finishLogin

 

 再勾选api这个选项,提交,然后就会创建出一个应用

  

 

        b、进入jenkins安装 Gitlab Authentication 插件重启之后,进入:系统管理 => 全局安全配置  

 配置完后点击底部的保存按钮保存配置信息

2、配置jenkins的私钥与gitlab的部署密钥

a、配置gitlab部署密钥 

 

 然后进入项目,选择设置中的仓库,展开 Deploy keys 选项,将部署密钥启用

 b、配置jenkins的全局凭据

 

类型可以选择使用gitlab的账号密码方式,也可以使用ssh key的私钥 

3、配置jenkins的构建项目 

a、配置jenkins的源码

 

 b、安装build with params 插件,然后选择参数化构建过程,选择点击添加参数 => 选择字符参数

 

 

c、 在构建中选择执行shell脚本,构建脚本如下图所示

 

 配置完后,点击底部的保存按钮进行保存

然后点击 build with parameters选项 ,填写构建的参数后,点击开始构建

 三、以及遇到的一些坑

 在构建的时候可能会遇到一些问题,比如

1、docker: command not found 

        原因:jenkins获取不到docker的环境信息

        解决方法: 在执行部署jenkins的命令中加入这条命令:-v /var/run/docker.sock:/var/run/docker.sock // 这是将宿主机的docker环境变量映射

2、dial unix /var/run/docker.sock: connect: permission denied

        原因:jenkins的权限问题

        解决方法:a、将当前用户添加到docker组去:

sudo gpasswd -a $USER docker

                        b、在docker部署jenkins时,加上 sudo ,提升权限

                        c、 临时设置,可以快速解决问题,但是docker重启后需要重新设置

cd /var/run
sudo chmod 666 docker.sock

 3、Build step 'Execute shell' marked build as failure

        解决方法:在shell脚本第一行添加 “#!/bin/bash” 脚本解释器

#!/bin/bash

 4、docker的卸载,然后重新部署jenkins后,原来的数据还存在

        原因:虽然jenkins是已经被卸载来,但是它的数据卷并没有被删除,所以原来的数据还是会存在

        解决方法:

                a、首先,关停并删除 jenkins容器

docker stop 容器id

docker rm 容器id

                b、查看数据卷

docker volume ls

                c、删除数据卷

docker volume rm jenkins_home
### 配置Jenkins实现从GitLab自动代码、构建Docker镜像部署 #### 创建增强版Jenkins镜像 为了使Jenkins能够顺利执行所需的任务,创建一个带有必要工具的自定义Jenkins镜像是第一步。这包括但不限于安装`git`以及配置好`jdk`和`maven`环境。 ```dockerfile FROM jenkins/jenkins:lts-jdk17 USER root RUN apt-get update && \ apt-get install -y git libncurses5 USER jenkins ``` 此部分通过继承官方提供的LTS版本Jenkins镜像在其基础上增加了对Git的支持以及其他可能必需的基础包[^2]。 #### Jenkins全局工具配置 进入Jenkins管理界面,在`Global Tool Configuration`选项下完成对于开发环境中所需的各类工具如JDK, Maven等的具体路径设定工作。确保这些工具能够在后续的构建过程中被正确调用[^4]。 #### 新建自由风格项目Jenkins主页点击“New Item”,选择“Freestyle project”。命名该项目后继续前进至配置页面: - **源码管理**:指定仓库URL指向GitLab中的目标项目地址;认证方式可选用SSH Key或Personal Access Token来授权访问私有库。 - **构建触发器**:勾选允许远程触发(`Build when a change is pushed to GitLab`)以便每次提交新改动时都能激活流水线作业。 - **构建环境**:如果之前已经定制化了Jenkins镜像,则无需特别处理;反之则需考虑如何让当前节点具备编译能力(比如挂载宿主机上的Maven目录)。 - 添加执行Shell命令阶段用于切换到合适的工作区; - 调用Maven进行项目打包操作; - 编写脚本以生成Dockerfile文件,该文件描述了怎样基于应用程序制作对应的容器映像; - 使用`docker build . -t your-image-name:tag`指令依据上述Dockerfile创建新的镜像; - 推送最新版本的镜像到注册表中去,例如`docker push registry.example.com/your-repo/your-image-name:latest`。 - **Post-build Actions**:可以选择性的添加一些清理动作或是通知机制告知相关人员本次构建的结果状态。 #### 测试验证 最后一步就是实际运行一次完整的CI/CD流程看是否一切正常运作。可以通过浏览器直接打开服务端口查看应用是否成功上线,也可以借助API接口或者其他监控手段确认部署情况良好[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值