jenkins部署应用(docker版本)-创新互联
一、安装
1.docker镜像运行jenkins
- 安装详细步骤参考官方文档https://jenkins.io/zh/doc/book/installing/
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
- docker提示没有开启转发解决方法
vim /usr/lib/sysctl.d/00-system.conf
net.ipv4.ip_forward=1 #新添加
重启network
创新互联建站专注于企业成都全网营销、网站重做改版、墨玉网站定制设计、自适应品牌网站建设、H5页面制作、商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为墨玉等各大城市提供网站开发制作服务。- 浏览器访问8080端口
如果界面提示Jenkins正在启动,请稍后...或者提示
Please wait while Jenkins is getting ready to work...
解决方法:
需要你进入jenkins的工作目录,打开 hudson.model.UpdateCenter.xml 把 http://updates.jenkins-ci.org/update-center.json 改成 http://mirror.xmission.com/jenkins/updates/update-center.json
- Jenkins对离线和插件安装慢解决方法
cd /var/jenkins_home/updates/
sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && \
sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
- 时间不一致问题解决办法
Docker 容器时间跟主机时间保持同步
docker cp /usr/share/zoneinfo/Asia/Shanghai jenkins02:/etc/localtime
Jenkins系统上的时间不正确问题
很简单,点击系统管理,选择执行脚本命令:
打开 【系统管理】->【脚本命令行】运行下面的命令
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
2.docker运行gitlab
- 先创建需要挂载的三个目录:配置 (etc) 、 日志 (log) 、数据 (data)
mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
- 运行gitlab
docker container run -it \
-p 8090:80 -p 8443:443 -p 8022:22 \
--restart unless-stopped \
-v /mnt/gitlab/etc:/etc/gitlab \
-v /mnt/gitlab/log:/var/log/gitlab \
-v /mnt/gitlab/data:/var/opt/gitlab \
--name gitlab gitlab/gitlab-ce:latest
- 进入容器 修改配置
把external_url改成部署机器的域名或者IP地址
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.100.107'
gitlab_rails['gitlab_ssh_host'] = '192.168.100.107'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
gitlab_rails['gitlab_shell_git_timeout'] = 800
重启容器
docker restart gitlab
修改克隆时的端口,默认是80,但我们映射成了8090,因此需要修改
每次重启容器 都需要执行者一步
进入容器执行
root@6129313605ed:/# cd /var/opt/gitlab/gitlab-rails/etc/
vim gitlab.yml
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.100.107
port: 8090 #此处修改为8090
https: false
gitlab-ctl restart #重启
- 常用的几个Gitlab命令
# 重新应用gitlab的配置
gitlab-ctl reconfigure
# 重启gitlab服务
gitlab-ctl restart
# 查看gitlab运行状态
gitlab-ctl status
#停止gitlab服务
gitlab-ctl stop
# 查看gitlab运行日志
gitlab-ctl tail
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sideki
二、jenkins应用
1.jenkins权限管理
- 安装插件:
- 启用插件
此时再点击系统管理,会多出一项:Manage and Assign Roles
- 创建一个用户:deva
点击
- 使用Manage and Assign Roles 管理分配用户
管理用户
分配用户
这样 deva用户 就只能看到dev- 的job了,并且 只有执行job的权限。
2.jenkins执行脚本
- 在节点上写一个测试脚本,并给脚本赋予执行权限
[root@vm2 ~]# cat test.sh
#!/bin/bash
echo lingxd
echo $1
- 创建自由风格job
参数化构建
点击构建 选择参数
3.pipeline 初探
- 创建job
- 配置
脚本内容
node {
stage('Code PUll'){
echo "Code PUll"
git credentialsId: 'ee5eb9ea-39a9-48c3-9b02-0b6985ed092a', url: 'http://192.168.100.117:8090/root/bk.git'
}
stage('Code Build'){
echo "code build"
sh '/root/mvn/apache-maven-3.6.3/bin/mvn clean compile'
}
stage('Unit Test'){
echo "unit test"
}
stage('是否部署'){
input '部署测试环境'
}
stage('Deploy Test ENV'){
sh '/root/test.sh 123'
}
}
4.Jenkins和gitlab集成自动触发
- jenkins插件管理安装GitLab Plugin插件
- 去gitlab生成token
- 系统管理-->系统配置 配置gitlab
- 创建pipeline 类型job
- 登录gitlab配置项目集成,添加webhook
先点击进入你要配置的项目,找到设置,点击集成
上面要填的url和token,看上一步骤
如果创建webhook失败,提示不可以本地网络认证,需要在设置里面设置下。
这样 就实现了dev分支只要有代码提交,就会自动触发jenkins的job
文章题目:jenkins部署应用(docker版本)-创新互联
网址分享:http://hbruida.cn/article/dodces.html