java - Maven项目如何配置gitlab ci + nexus release

标签 java maven gitlab-ci gitlab-ci-runner

您好,我开始将 gitlab ci 用于我的 CI 和 CD。我正在使用 Nexus 来存储我的 jar 和 war 。

gitlab配置

stages:
    - build
    - package


services:
    - name: mongo:3.2.4
      alias: mongodb


variables:
    mongodb_hosts: "mongodb"

build_maven:
    image: maven:3-jdk-8
    stage: build
    script:
        - echo $pwd
        - "./docker/wait-for-it.sh mongodb:27107 -t 30 -- git checkout master && mvn -B -Dresume=false release:prepare release:perform"

    artifacts:
        paths:
            - target/*.jar
    only:
        - master

这工作正常,但它触发了构建循环方式。因为我正在使用 maven 发布插件来发布 maven 人工制品。

发布插件更改快照并再次提交回gitlab。在那段时间 git lab 再次触发构建,所以它是因为循环触发。

如何正确处理?我喜欢实现以下目标。

当它构建主分支时,我喜欢将最终版本发布到nexus 并像发布插件一样自动增加pom 文件中的版本。

最佳答案

我有以下发布 Artifact 的工作:

Release Maven:
  stage: release
  image: maven:3-jdk-8
  script:
    - git checkout master
    - git reset --hard "origin/master"
    # Gitlab clones as HTTPS and there's no plan to support SSH
    # The SSH key needed is built into the custom Maven image
    - git remote set-url origin $SSH_GIT_URL
    - mvn --batch-mode clean release:prepare release:perform -Dresume=false -DautoVersionSubmodules=true -DdryRun=false -Dmaven.test.skip=true -DskipITs -DscmCommentPrefix="[ci skip]"

这里的主要属性是 -DscmCommentPrefix="[ci skip]" - 这会创建一个带有前缀的提交消息,防止 gitlab-ci 启动一个新的管道

关于java - Maven项目如何配置gitlab ci + nexus release,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770980/

相关文章:

java - 在 XSD 的限制中指定多个模式

java - 如何让一个Web Maven项目以优化的方式依赖于另一个Web Maven

eclipse - 为什么当 Maven 构建工作良好但将 Spark Jar 添加为外部 Jar 时会出现编译错误 “object Apache is not a member of package org”

gitlab - 如何使用标签设置作业工件永不过期 Gitlab CI

gitlab - 如何使一个阶段依赖于另一个阶段?

java - java类设计指南

java - 在java中使用memcached

java - 无法使用接口(interface)的 getter 方法

java - 一个ear文件中有多个相同的jar文件

qt - 将 gitLab-CI 用于 Qt 项目