集成GitLab的Webhooks
Jenkins创建项目

选择流水线项目

配置token并复制url

Gitlab项目集成里面配置webhooks

在url地方粘贴jenkins提供的url:http://192.168.3.29:8888/job/user-edge-service/build?token=lj3fi2jif23232

配置Jenkins全局安全配置

去掉CSRF

测试WebHooks集成返回HTPT 201则为集成成功


集成GitLab项目
在刚构建的Jenkins项目中配置如下脚本测试是否能正确拉去代码
#!groovy
pipeline{
agent any
environment{
REPOSITORY="ssh://git@gitlab.mooc.com:2222/ouwen/microservice.git"
}
stages{
stage('获取代码'){
steps{
echo "start fetch code from git:ssh://git@gitlab.mooc.com:2222/ouwen/microservice.git"
deleteDir()
git 'ssh://git@gitlab.mooc.com:2222/ouwen/microservice.git'
}
}
}
}
构建项目

备注:在Jenkins应用所做服务器配置hosts
配置ssh key

在jenkins服务器配置访问gitlab的ssh key
#先看看是不是已经有啦,如果有内容就直接copy贴过去就行啦
$ cat ~/.ssh/id_rsa.pub
#如果上一步没有这个文件 我们就创建一个,运行下面命令(邮箱改成自己的哦),一路回车就好了
$ ssh-keygen -t rsa -C "youremail@example.com"
$ cat ~/.ssh/id_rsa.pub

Gitlab配置ssh key



再次尝试立即构建依然抱错

备注:Jenkins所做服务器手动尝试clone下项目后再去jenkins构建项目就可以了!
编译+测试
#!groovy
pipeline{
agent any
environment{
REPOSITORY='ssh://git@gitlab.mooc.com:2222/ouwen/microservice.git'
MODULE='user-edge-service'
}
stages{
stage('获取代码'){
steps{
echo "start fetch code from git:${REPOSITORY}"
deleteDir()
git "${REPOSITORY}"
}
}
stage('代码静态检查'){
steps{
echo "start code check"
}
}
stage('编译+测试'){
steps{
echo "start compile"
sh "mvn -U -pl ${MODULE} -am clean"
}
}
}
}
说明mvn -U -pl -am 参数
-U 全部更新
-pl 构建指定模块
-am 构建当前模块依赖的模块
重新构建项目,注意这里使用maven构建和单元测试所以jenkins所在服务环境需要安装maven
下载地址
http://maven.apache.org/download.cgi
版本 [apache-maven-3.3.9 -bin.tar.gz]
tar -xvf apache-maven-3.3.9-bin.tar.gz
mv apache-maven-3.3.9 /usr/local/apache-maven
文件存放好之后,设置环境变量,打开etc/profile,在文件中加入下边的代码:
写入环境变量
vi /etc/profile
最后一行加入
这个前提是安装了java1.8
export JAVA_HOME=/usr/local/jdk1.8
export MAVEN_HOME=/usr/local/apache-maven
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$PATH
再执行
source /etc/profile
注意:这里配置了maven环境后在jenkins上立即构建项目依然找不到mvn命令,这里需要重启一下jenkins即可。
构建镜像+push到仓库
#!groovy
pipeline{
agent any
environment{
REPOSITORY='ssh://git@gitlab.mooc.com:2222/ouwen/microservice.git'
MODULE='user-edge-service'
SCRIPT_PATH="/root/build/"
}
stages{
stage('获取代码'){
steps{
echo "start fetch code from git:${REPOSITORY}"
deleteDir()
git "${REPOSITORY}"
}
}
stage('代码静态检查'){
steps{
echo "start code check"
}
}
stage('编译+测试'){
steps{
echo "start compile"
sh "mvn -U -pl ${MODULE} -am clean package"
}
}
stage('构建镜像+镜像推送'){
steps{
echo "start build images and push images"
sh "${SCRIPT_PATH}build-images.sh ${MODULE}"
}
}
}
}
脚本
/root/build/build-images.sh
#!/bin/bash
MODULE=$1
TIME=`date "+%Y%m%d%H%M"`
GIT_REVISION=`git log -1 --pretty=format:"%h"`
IMAGE_NAME=harbor.ouwen.com/micro-service/${MODULE}:${TIME}_${GIT_REVISION}
cd ${MODULE}
docker build -t ${IMAGE_NAME} .
echo `ls`
cd -
echo `pwd`
docker push ${IMAGE_NAME}
echo "{IMAGE_NAME}" > IMAGE_NAME
更新脚本执行权限
chmod 775 build-images.sh
Jenkins构建项目
错误:需要push jdk镜像到自己仓库

错误:配置文件的默认路径:/etc/docker/daemon.json
{
"registry-mirrors": ["http://harbor.test.com"], #镜像加速地址
"insecure-registries": ["harbor.ouwen.com"], # Docker如果需要从非SSL源管理镜像,这里加上
}
部分参数(registry-mirrors、insecure-registries ...)修改,只要reconfigure(systemctl reload docker) 就生效:
这部分参数详细列表:[https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file)
注意:上面的方法如果不生效可以试试下面方法
1.修改配置文件:/usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current \
--insecure-registry harbor.ouwen.com \
2.systemctl daemon-reload
3.service docker restart
4.删除掉 /etc/docker/damon.json中的--insecure-registry配置
5.配置/etc/sysconfig/docker
添加OPTIONS='--insecure-registry registry:5000'

错误:需要的jenkins上登录镜像仓库

镜像可以完整上传到仓库

网友评论