gitlab+jenkins+docker+maven 自动构建项目

docker安装gitlab、jenkins百度有很多。

配置服务器ssh

1、利用命令ssh-keygen -t rsa -P "",连续按三个回车,生成密钥对

gitlab+jenkins+docker+maven 自动构建项目_第1张图片

2、指定目录下查看已经生成好的密钥和公钥

gitlab+jenkins+docker+maven 自动构建项目_第2张图片

3、利用命令cat id_rsa.pub >> authorized_keys将公钥加入到授权列表

4、给予文件authroized_keys以可读可写的权限

5、配置完毕,检验正确性

配置Jenkins

#打开jenkins页面
#添加插件:系统管理 - 插件管理 
#需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter

#添加完插件重启jenkins,开始添加要部署代码的主机,注意一定是要能够ssh登陆的用户。
#添加主机:系统管理 - 系统设置 找到Publish over SSH

Gitlab+Jenkins实现自动部署


#添加完主机之后,新建一个项目,开始配置构建操作

Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署

Exec command修改

cd  /cc/test
chmod 777 ./build.sh
./build.sh
Gitlab+Jenkins实现自动部署


#配置gitlab,当有代码提交时,触发jenkins的部署操作

Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署
Gitlab+Jenkins实现自动部署项目配置

项目路径

gitlab+jenkins+docker+maven 自动构建项目_第3张图片

pom.xml加入插件

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
            
                com.spotify
                docker-maven-plugin
                1.0.0
                
                    ${project.artifactId}-${project.version}
                    ${project.basedir}/docker
                    
                        
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                        
                    
                
            
            

            
                org.apache.maven.plugins
                maven-surefire-plugin
                
                    true
                
            
        
    

Dockerfile

FROM openjdk:8-jdk-alpine
#将jdk镜像作为基础镜像
MAINTAINER cc <[email protected]>
#作者信息
VOLUME /tmp
VOLUME ~/
#VOLUME是挂载 将/tmp挂载到宿主机 ~/目录也就是用户目录 这个目录笔者用来放工程日志
ADD demo-0.0.1.jar /demo.jar
#将mvn 构建后的jar包放在容器根目录下
RUN sh -c 'touch /demo.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /demo.jar"]
CMD /usr/sbin/sshd -D

build.sh

#!/bin/bash
source /etc/profile

#project build variable
#you can change this code for your project
###START###
#应用名称
APPNAME=demo
#应用端口
APPPORT=9876
#容器端口
INPORT=9876
#宿主机映射端口
OUTPORT=9876
#挂载宿主机目录
HOSTPATH=/cc/logs
#被挂载的容器目录  挂载日志文件
CONTAINNERPATH=/logs/test
#容器名称
CONTAINNERNAME=demo-0.0.1
#镜像名称
MYIMAGE=demo-0.0.1
###END###

#don't change this code
###START###
#cd ../
mvn clean
mvn install
#cd -
# stop all container
docker stop ${CONTAINNERNAME}
# remove all container
docker rm ${CONTAINNERNAME}
# remove old images
docker rmi ${MYIMAGE}
# build jar and image
#mvn package -e -X docker:build -DskipTest
mvn package docker:build

# running container
docker run -it -dp ${OUTPORT}:${INPORT} -v ${HOSTPATH}:${CONTAINNERPATH} --name ${CONTAINNERNAME} ${MYIMAGE} /bin/bash
# push image 推送镜像到阿里私有仓库
#images_id=$(docker images | grep "$MYIMAGE" | awk "{print \$3}")
#echo '================开始推送镜像================'
#echo "镜像id=$images_id ................"
#sudo docker login [email protected] --password=cnmcn registry.cn-qingdao.aliyuncs.com
#sudo docker tag demo-0.0.1 registry.cn-qingdao.aliyuncs.com/chenchun/test:latest
#sudo docker push registry.cn-qingdao.aliyuncs.com/chenchun/test:latest
#echo '================结束推送镜像================'
###END###

 

你可能感兴趣的:(学习,gitlab,jenkins,docker,maven)