1 部署 gitlab
docker run -d --name gitlab -p 8443:443 -p 80:80 -p 9998:22 -v $PWD/config:/etc/gitlab -v $PWD/logs:/var/log/gitlab -v $PWD/data:/var/opt/gitlab -v /etc/localtime:/etc/localtime lizhenliang/gitlab-ce-zh:latest
访问地址: http://ip
用户名 root 密码 刚设置的
2 创建项目 提交测试代码
gitlab 创建一个仓库地址
# 克隆仓库地址
git clone http://10.0.0.70/root/java-demo.git
# 解压测试代码
#提交代码
3 部署 Harbor
https://www.cnblogs.com/augustyang/p/11912688.html
4 jenkins 安装
# 安装jdk
# tar zxvf jdk-8u45-linux-x64.tar.gz
ln -s /usr/local/jdk1.8.0_45/ /usr/local/jdk
#安装maven
# tar zxf apache-maven-3.5.0-bin.tar.gz
ln -s /usr/local/apache-maven-3.5.0/ /usr/local/maven
docker run -d --name jenkins -p 80:8080 -p 50000:50000 -u root -v /opt/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /usr/local/apache-maven-3.5.0:/usr/local/maven -v /usr/local/jdk1.8.0_45:/usr/local/jdk -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins:lts
#使用/root/.ssh中私钥访问gitlab
ssh-keygen -t rsa
cat .ssh/id_rsa.pub
#安装 git pipeline 插件
# 配置国内镜像地址
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
5 jenkins 发布
① Pipline 脚本
#!/usr/bin/env groovy def registry = "10.0.0.60" def project = "dev" def app_name = "java-demo" def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}" def git_address = "http://10.0.0.70/root/java-demo.git" def docker_registry_auth = "5f86fdc6-dc2f-4cd5-9740-a7bbf6b9b1f9" def git_auth = "db953d02-d4f3-4acc-837b-ee580e71901b" pipeline { agent any stages { stage('拉取代码'){ steps { checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]]) } } stage('代码编译'){ steps { sh """ JAVA_HOME=/usr/local/jdk PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH mvn clean package -Dmaven.test.skip=true """ } } stage('构建镜像'){ steps { withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) { sh """ echo ' FROM ${registry}/library/tomcat:v1 LABEL maitainer lizhenliang RUN rm -rf /usr/local/tomcat/webapps/* ADD target/*.war /usr/local/tomcat/webapps/ROOT.war ' > Dockerfile docker build -t ${image_name} . docker login -u ${username} -p '${password}' ${registry} docker push ${image_name} """ } } } stage('部署到Docker'){ steps { sh """ REPOSITORY=${image_name} docker rm -f tomcat-java-demo |true docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name} """ } } } }
添加选择的 This project is parameterized --> String parameter
② 添加凭据
1 添加拉取git代码凭据,并获取id替换到上面git_auth变量值。
2 添加拉取harbor镜像凭据,并获取id替换到上面docker_registry_auth变量值。