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

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

配置服务器ssh

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

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实现自动部署项目配置

项目路径

pom.xml加入插件

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- tag::plugin[] -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${project.artifactId}-${project.version}</imageName>
                    <dockerDirectory>${project.basedir}/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- end::plugin[] -->

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

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###

猜你喜欢

转载自blog.csdn.net/papima/article/details/87350325