Jenkins结合Gitlab,实现镜像构建及推送

docker-compose

jenkins的docker-compose目录为为/home/jenkins,这个后面写脚本的时候需要对应上

复制代码
version: '3'
services:
  docker_jenkins:
    restart: always
    image: jenkins/jenkins:lts
    container_name: docker_jenkins
    privileged: true 
    ports:
      - '8080:8080'
      - '50000:50000'
    volumes:
      - ./data/:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
      - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7

授权目录

  1. chmod 777 ./data -R
  2. chmod 777 /var/run/docker.sock (设置宿主机可执行,因为进入jenkins容器还会使用宿主机docker)

安装插件

  1. 搜索安装Git相关插件
  2. 搜索安装Gitlab相关插件
  3. 搜索安装Docker相关插件


凭据管理

  1. Gitlab 用户名密码
  2. 推送到阿里云镜像容器,docker login 的用户名密码

设置时区

复制代码
System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')


点击运行

创建流水线



将jenkins生成的webhook地址复制到gitlab中

流水线脚本

下面脚本的/home/jenkins目录,需要指定为宿主机的挂载目录

需要修改credentialsId为自己的gitlab凭证、以及推送到镜像仓库的凭证

需要修改url为项目实际gitlab地址

java项目

复制代码
node('built-in') { 



	 stage('Git Clone') {
        checkout([$class: 'GitSCM', branches: [[name: "origin/${env.gitlabSourceBranch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'ld-git', url: 'http://gitlab地址/asterism-back/aip-base.git']]])
	}

	
	stage('DockerPush-ld') {     

		globalDockerRegistry="registry.cn-hangzhou.aliyuncs.com" 
		credentials = "ledison7"
		imageStore="https://registry.cn-hangzhou.aliyuncs.com"
		tenantCode="fireworks" 
		docker.withRegistry(imageStore,credentials) {
		    sh encoding: 'UTF-8', label: 'Maven 缓存构建',script:'''
				docker run -i --rm  -v /home/jenkins/mavenRespo:/var/jenkins_home/mavenRespo  -v /home/jenkins/data/workspace/${JOB_NAME}:/usr/src/mymaven -w /usr/src/mymaven  maven:3.6.3  mvn clean package -DskipTests -s ./go_settings.xml
				sleep 1
		        '''
		
			commitId = "${env.gitlabMergeRequestLastCommit}".substring(0,8)
			imageTag = "registry.cn-hangzhou.aliyuncs.com/fireworks/aip-base:latest"
			sh encoding: 'UTF-8', label: '镜像构建',script:' docker build -t  '+imageTag+' -f Dockerfile . '
			sh encoding: 'UTF-8', label: '镜像推送',script:' docker push '+imageTag 
			sh encoding: 'UTF-8', label: '镜像清理',script:' docker rmi '+imageTag
		} 
	}

	
}

java项目Dockerfile

复制代码
FROM openjdk:8

LABEL maintainer="363192641@qq.com"

COPY aip-base-core/target/*.jar /aip-base.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

EXPOSE 8181

ENTRYPOINT java  -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap $JAVA_OPTS -jar  /aip-base.jar --spring.profiles.active=prod
相关推荐
TTBIGDATA30 分钟前
【Ambari Plus】10.HBase 安装
大数据·运维·hadoop·ambari·hdp·cdh·bigtop
想你依然心痛1 小时前
持续集成在嵌入式开发中的实践:GitLab CI与交叉编译——自动化构建、固件生成
ci/cd·自动化·gitlab
艾伦_耶格宇1 小时前
【ELK】-2 ELK的搭建
运维·elk
xcLeigh1 小时前
KES运维自动化与脚本体系实战
运维·数据库·自动化·脚本·数据迁移·kes
潘正翔1 小时前
docker基础_镜像使用
linux·运维·服务器·docker·容器·centos·devops
勉灬之1 小时前
利用双网卡服务器搭建 Verdaccio 中转,解决内网 npm 依赖下载问题
运维·服务器·npm
江湖有缘2 小时前
Lunalytics部署指南:使用Docker快速搭建私有监控面板
运维·docker·容器
DB哥讲数据库2 小时前
rocky linux安装教程:VMware虚拟机图文讲解部署Rocky Linux 9(附镜像包)
linux·运维·服务器
未*望2 小时前
【Linux入坑(二)—全志T133开发板适配USB-电容屏触摸屏驱动(多点触控) 】
linux·运维·服务器
分布式存储与RustFS2 小时前
RustFS保姆级教程:Docker快速部署兼容S3的本地对象存储
运维·docker·容器·rustfs部署教程·本地搭建s3对象存储·rustfs网页控制台使用·awscli连接rustfs