Jenkins+Docker+Gitlab+Maven搭建持续集成环境
Gitlab docker下载安装配置
一、安装配置docker服务
# yum -y install git docker 安装git docker 服务
# systemctl start docker 启动docker服务
# systemctl enable docker docker服务开机自动开启
# docker search gitlab 搜索gitlab容器镜像
# docker pull docker.io/gitlab/gitlab-ce 下载gitlab 容器镜像
# docker tag docker.io/gitlab/gitlab-ce gitlab/gitlab-ce:v1 更改容器名称
# docker images 查看下载的容器镜像
# hostnamectl set-hostname gitlab.mengqi.com 设置主机名称
在linux下:
#vim /etc/hosts
192.168.2.41 gitlab
在windows下:
#cd C:WindowsSystem32driversetchosts
192.168.2.41 gitlab
# mkdir -p /opt/gitlab/config /opt/gitlab/logs /opt/gitlab/data
# docker run -d --hostname ${HostName} -p 10443:443 -p 18080:80 -p 10022:22 --name gitlab --restart always --volume /opt/gitlab/config:/etc/gitlab --volume /opt/gitlab/logs:/var/log/gitlab --volume /opt/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:v1 启动gitlab docker容器
指定了三个端口,22表示ssh端口,80表示http端口,443表示https端口,分别映射到宿主机上的10022、18080和10443端口,我们还通过--volume指定目录映射,其中
/etc/gitlab表示gitlab的配置目录,映射到宿主机的/opt/gitlab/config目录.
/var/log/gitlab表示gitlab的日志目录,映射到宿主机的/opt/gitlab/logs目录.
/var/opt/gitlab表示gitlab的数据目录,映射到宿主机的/opt/gitlab/data目录.
页面访问的网址是http://gitlab.mengqi.com:18080 账户root密码admin1234
接下来新建一个空的项目hello,其中hello为项目名称,可设置可见性级别:
Private表示私有项目,授予具体权限的用户才能访问.
Internal表示内部项目,可登陆的用户都能克隆项目.
Public表示公开项目,没有任何权限的用户都能克隆项目.
接着我们需要做的就是将本地java代码推送至gitlab中.
Git global setup 设置全局git
git config --global user.name "Administrator"
git config --global user.email "13486157333m@sina.cn"
Create a new repository
git clone http://gitlab.mengqi.com/root/hello.git
cd hello
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder
cd existing_folder
git init
git remote add origin http://gitlab.mengqi.com/root/hello.git
git add .
git commit -m "Initial commit"
git push -u origin master
Existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin http://gitlab.mengqi.com/root/hello.git
git push -u origin --all
git push -u origin --tags
#docker search Jenkins 查询jenkins docker容器
# docker pull docker.io/jenkinsci/jenkins 下载jenkins
# docker tag docker.io/jenkinsci/jenkins jenkins/jenkins:v1修改镜像名称
Gitlab与Jenkins部署在同一台机器上
# mkdir /opt/Jenkins jenkins配置文件目录
# docker run -d -p 28080:8080 -p 50000:50000 --name jenkins --link gitlab:${HostName} -u root -v /opt/jenkins:/var/jenkins_home jenkins/jenkins:v1
Jenkins部署单独部署
# docker run -d -p 28080:8080 -p 50000:50000 --name jenkins --hostname jenkins --restart always -u root -v /opt/jenkins:/var/jenkins_home jenkins/jenkins:v1
Jenkins地址http://192.168.2.41:28080/
# docker exec ${docker_ID} cat /var/jenkins_home/secrets/initialAdminPassword 或者 # cat /opt/jenkins/secrets/initialAdminPassword
账号admin1 密码admin1234
初始界面
Maven项目,系统管理-插件管理-可安装搜索Maven Integration 、Git Parameter 、 Gitlab Hook
通过配置令牌远程触发项目构建;要启用Token(令牌)远程触发项目构建首先要保证Jenkins服务安装了“Build Authorization Token Root “”插件,并且配置了Jenkins的身份验证。
安装maven插件
创建maven项目
1.进入到项目构建
2.添加jenkins秘钥连接
上面填写的是gitlab的用户名密码验证,添加完后需要选中它
3.配置pom.xml文件 clean package -q -Dmaven.test.skip=true
构建目录 jar包 /opt/jenkins/workspace/${项目名称}/target
根据制作的dockerfile制作镜像例
# touch dockerfile
编辑dockerfile
# vim dockerfile
FROM docker/java:v1
MAINTAINER hetao
ADD ./eureka-1.0.1.jar /app/eureka-1.0.1.jar
ENTRYPOINT ["java","-jar","/app/eureka-1.0.1.jar"]
EXPOSE 19000
# docker build -t ${DockerName} .
gitlab备份迁移
因为是容器迁移所以需要迁移容器镜像
# docker save gitlab/gitlab-ce:latest > ./gitlab_ce_10.3.0.tar.gz
导入
# docker load -i gitlab_ce_10.3.0.tar.gz
备份gitlab.rb配置文件
/etc/gitlab/gitlab.rb 配置文件须备份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 邮件配置备份
/var/opt/gitlab/backups 备份文件位置
查看源gitalb容器挂载目录
# docker inspect 容器ID | grep Mounts -A 20
备份时需要保持gitlab处于正常运行状态,直接执行
# gitlab-rake gitlab:backup:create
远程拷贝至迁移目的机器
# scp -r /srv/gitlab/data/backups/1530156812_2018_06_28_10.8.4_gitlab_backup.tar root@192.168.88.47:/opt/data/gitlab/backups
gitlab恢复、停止相关数据连接服务
# gitlab-ctl stop unicorn
# gitlab-ctl stop sidekiq
# chmod 777 /opt/data/gitlab/backups
# gitlab-rake gitlab:backup:restore BACKUP=1530156812_2018_06_28_10.8.4
# gitlab-ctl start