一站式自动化部署Jenkins+docker部署GitLab
声明:因为很多博客涉及问题解释不全,本博主主要目的就是按照实际生产环境搭配之后,把所有问题汇总收集,原文链接会放出来,若侵权请及时联系作者删除!
一、准备工作
1.1、创建目录和拉取镜像
mkdir -p /home/gitlab/config
mkdir -p /home/gitlab/logs
mkdir -p /home/gitlab/data
mkdir /var/jenkins_home
chown -R 1000:1000 /var/jenkins_home
docker pull gitlab/gitlab-ce
docker pull jenkins/jenkins
注意: 校准服务器时间,时间不对会导致GitLab登录异常。 ntpdate离线安装。
yum –y install ntp
ntpdate ntp1.aliyun.com
时间错位12小时,是安装npt默认纽约时区造成。
rm -rf /etc/localtime
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
systemctl restart ntpd
二、docker部署
2.1、启动容器命令:
GitLab命令:
docker run -d --restart always --hostname wqd.github --name github -p 3380:80 -p 3322:22 -p 3443:443 \
-v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce
Jenkins命令: jenkins 部署问题 and 插件问题。
docker run --name myjenkins -p 8081:8080 -p 50000:50000 --env JAVA_OPTS="-Duser.timezone=GMT+08" \
-v /var/jenkins_home:/var/jenkins_home -d jenkins/jenkins
插件问题替换下载源
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' /var/jenkins_home/updates/default.json
linux部署命令,若需要使用jdk和maven,建议使用,下载jenkins。:
nohup java -jar jenkins.war --httpPort=8008 >jenkins.text &
三、问题整合
3.1、GitLab
1、GitLab设置中文
2、设置ssh
ssh-keygen -t rsa -C "11111111@qq.com"
cat /root/.ssh/id_rsa.pub
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.159
注意:添加sshkey之后还是报错是因为第一次需要输入yes,jenkins无法输入,需要在centos终端先clone中输入yes
git clone git@1docker 172.17.0.4:root/cn.gov.sach.git
3.2、文件脚本
jenkins_70">1、:jenkins配置文件
#!groovy
pipeline{
agent any
environment{
MOUDLE="business"
}
stages{
stage('获取代码'){
steps{
deleteDir()
git branch: 'master', url: 'http://192.168.1.133:3380/root/ncha.git'
}
}
stage('编译+单元测试'){
steps{
echo"start compile"
sh "mvn -U -pl ${MOUDLE} -am clean package -Dmaven.test.skip=true "
}
}
stage('构建镜像'){
steps{
echo"start build"
sh "/root/jenkins-sh/jenkins-build.sh ${MOUDLE} "
}
}
stage('更新镜像'){
steps{
echo"start update"
sh "/root/jenkins-sh/jenkins-deploy.sh ${MOUDLE}"
}
}
}
}
jenkinsbuildsh_112">2、:linux打包脚本jenkins-build.sh
#!/bin/bash
MOUDLE=$1
TIME="`date +%Y%m%d%H`"
IMAGE_NAME=${MOUDLE}:${TIME}
cd /root/.jenkins/jobs/ncha-master/workspacecd
cd ${MOUDLE}
docker build -t 192.168.1.132/ncha/${IMAGE_NAME} .
docker login -u admin -p Harbor12345 192.168.1.132
docker push 192.168.1.132/ncha/${IMAGE_NAME}
jenkinsdeploysh_128">3、:linux部署脚本jenkins-deploy.sh
#!/bin/bash
MOUDLE=$1
TIME="`date +%Y%m%d%H`"
IMAGE_NAME=${MOUDLE}:${TIME}
ssh root@192.168.1.159 << remotessh
docker pull 192.168.1.132/ncha/${IMAGE_NAME}
docker service update --image 192.168.1.132/ncha/${IMAGE_NAME} ncha_${MOUDLE/_/-}
exit
remotessh
4、:dockerFile内容
FROM 192.168.1.144/aaa/jre8:latest
MAINTAINER ncha
COPY target/*.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]