• Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置


    说明

    本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况.

    dockerfile-maven-plugin构建镜像配置

     <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.4.10</version>
                    <executions>
                        <execution>
                            <id>default</id>
                            <goals>
                                <goal>build</goal>
                                <goal>push</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <!--<username>***</username>
                        <password>*******</password>-->
                        <repository>${docker.repository}/${docker.image.prefix}/${project.artifactId}</repository>
                        <tag>latest</tag>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        </buildArgs>
                        <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                    </configuration>
                </plugin>
    参数说明
    ${docker.repository} 镜像仓库地址
    ${docker.image.prefix} 镜像库前缀/区分项目分类
    ${project.artifactId} 包Id/唯一镜像名
    1  <properties>
    2         <java.version>8</java.version>
    3         <docker.image.prefix>yourprefix</docker.image.prefix>
    4         <docker.repository>yourrepositoryurl</docker.repository>
    5     </properties>
    镜像仓库配置

     jenkins中的maven配置setting.xml-设置登录harbor的地址和账户密码

    上一步中push镜像的时候需要

    文件位置:/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/mvn3.6.3/conf

     新增Server节点

    <server>
        <id>yourrepositoryurl</id>
        <username>admin</username>
        <password>*******</password>
    </server> 
    View Code
     

    dockerfile配置

    FROM openjdk:8u181-jdk-alpine
    ARG workdir=/app
    VOLUME ${workdir}
    WORKDIR ${workdir}
    ARG JAR_FILE
    COPY ${JAR_FILE} app.jar
    EXPOSE 8080
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

    系统设置-全局工具配置 jdk maven

     jenkins新建一个job 使用maven构建

    连接git

    插件version number生成构建版本号

    ${BUILD_DATE_FORMATTED,"yyyyMMdd"}.${BUILDS_TODAY}
    View Code

     执行maven构建命令

    clean package -Dmaven.test.skip=true -P dev
    View Code

     使用版本号tag新的镜像并push到harbor上

     执行脚本push镜像到私有registry报没有权限的错

     

    解决方法:需要login私有registry(在Jenkins容器内执行login命令)

    执行成功后会在root/.docker文件夹下生成config.json文件(含有login私有registry的凭证)

     ssh指定服务器pull镜像并run - 插件Publish Over SSH




    greedy丶L
  • 相关阅读:
    常见Oracle HINT的用法
    2011年的每一天是周几?
    TOM上关于JOIN跟+号的讨论
    关于index_ffs使用索引的一点问题.
    数据库中分组字符串相加
    国服3.3.5:死亡骑士全系DPS饰品收益评分
    WLK狂暴战怎么玩
    3.3萨满手册
    关于clob类型在函数中的处理。
    pivot_clause [Oracle SQL]
  • 原文地址:https://www.cnblogs.com/GreedyL/p/12073888.html
Copyright © 2020-2023  润新知