一、环境配置:**
System
:CentOS 7GitLab Version
:beginor/gitlab-ce:11.0.1-ce.0JenKins Version
:官网最新 jenkins.warJDK Version
: 1.8Maven Version
: 3.6.1
二、Dokcer:
-
安装需要的库
-
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
-
添加docker的源
-
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
-
安装Docker
-
sudo yum install docker-ce
-
-
启动docker服务和开机自启
-
sudo systemctl start docker sudo systemctl enable docker
-
-
Docker Installed End
三、Gitlab:
-
创建映射文件夹(可自定义,待会儿自己修改命令相关的参数)
-
mkdir -p /data/gitlab/etc mkdir -p /data/gitlab/log mkdir -p /data/gitlab/data
-
-
安装并启动GitLab
-
参数解析:
--detach 表示后台运行 --publish 表示容器类与宿机映射和端口 --name 表示容器的名字 --restart 重启策略:退出容器是重启容器
-
构建容器命令
docker run \ --detach \ --publish 998:22 \ --publish 8443:443 \ --publish 80:80 \ --name gitlab \ --restart unless-stopped \ -v /data/gitlab/etc:/etc/gitlab \ -v /data/gitlab/log:/var/log/gitlab \ -v /data/gitlab/data:/var/opt/gitlab \ beginor/gitlab-ce:11.0.1-ce.0
-
在命令的最后的一行为镜像的名称(
beginor/gitlab-ce:11.0.1-ce.0
)或者ID(需要先docker pull 镜像
,后通过docker images
,可以获取到镜像的ID),运行上面的命令即可安装并启动gitlab(这样他会先检查本地有没有此镜像,没有就会先pull,然后再带参数run)。docker ps: 查看正在运行的容器 docker ps -a:查看所有创建的容器
-
四、Jenkins:
-
下载相关的包:
Jenkins.war包(这儿是用java启动,你也可以通过docker)、maven、jdk
-
运行参数:
-
java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8088 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
-
参数解析:
java -Djava.awt.headless=true #解释:https://www.cnblogs.com/wudi-dudu/p/7871405.html -DJENKINS_HOME=/var/lib/jenkins #定义Jenkins的根目录 -jar /usr/lib/jenkins/jenkins.war #war包位置,根据你的实际情况填写参数 --logfile=/var/log/jenkins/jenkins.log #Jenkins的日志输出 --webroot=/var/cache/jenkins/war #Jenkins缓存路径 --httpPort=8088 #Jenkins的端口(看自己的端口情况修改) --debug=5 # --handlerCountMax=100 # --handlerCountMaxIdle=20 #
-
-
访问 http://ip:httpPort 即可开始
Jenkins
之旅:- 首先去提示的路径复制密码到 Input 框;
- 然后选择推荐插件,这儿可能有点慢,看各自的网速;
- 安装完后即可创建账户;
- Jenkins搭建结束。
五、实现从Gitlab自动拉取代码并部署:
-
登录界面
-
登录后的界面(新的没有任何的任务)
-
新建工作空间
-
创建任务
-
通用配置
-
这儿配置两个参数:第一个参数 Discard old builds
-
第二个参数 This project is parameterized
-
-
源码管理(我们用gitlab,这儿需要自己现在Gitlab中去创建项目和获取项目地址)
-
构建触发器(构建方式有好多种,具体看实际情况,日程表可以直接copy)
可参考SCDN
:【Poll SCM】 -
构建环境:不用设置,跳过
-
构建:因为启动项目的方式有很多种方案,所以这儿可以使用骨灰级的方式(shell)
-
ps:本次演示的是在搭建的Jenkins的服务器中,启动项目,如果你需要将项目到第三方服务器是上启动,就得在第三方服务器的路径下写启动脚本(start.sh),这是一种解决方案,但不是绝对的。
-
添加构建方式:
Execute shell
-
#$:这儿是在引用刚刚在 This project is parameterized 配置的参数 case $test_dev in deploy) #当选择的是 deploy 就执行下面呢的命令,注意绝对路径 /usr/local/maven/bin/mvn clean package --settings /usr/local/maven/conf/settings.xml -Dmaven.test.skip=true ;; rollback) #当选择的是这个即是回滚 echo "${version}" rm -rf target #${JENKINS_HOME}此参数是Jenkins默认的俄路径,自己和自己的核对改成对应的路径 cp -R ${JENKINS_HOME}/jobs/你的任务名/builds/${version}/archive/target . pwd && ls ;; *) exit ;; esac jenkinsjarpath=${JENKINS_HOME}/workspace/你的任务名 #如test_dev jarpath=/data/test/target #这是你要启动项目的路径(将jar包复制到此目录) cp ${jenkinsjarpath}/target/test.jar /data/test/ #将jar包复制到jarpath sh /data/test/start.sh ${port} #执行jarpath的shell脚本(类容为启动jar包的命令) echo "Start Run......"
-
start.sh
#!/bash/bin jarName=test.jar function shutDown(){ #获取上一次的构建的项目pid pid=`ps -ef|grep ${jarName}|grep -v grep|awk '{print $2}'` kill -9 ${pid} #干掉 echo "shut down" #打印信息 } function startUp(){ #2:是打印错误到屏幕,&: 打印到后台 nohup java -jar test.jar --server.port=$1 >> ./logs.log 2>&1 & #$1是运用上面参数${port} echo "start up" } #先关闭上一个项目 shutDown() #启动新构建的项目 startUp()
-
-
构建后操作
-
-
回到开始:
-
现在你可以是实现自动Gitlab+jenkins 构建项目了。
-
Shell 脚本方面可以参考下 【菜鸟教程】