gpt4 book ai didi

maven - 如何根据 maven pom 版本运行 github-action 条件?

转载 作者:行者123 更新时间:2023-12-04 07:30:58 25 4
gpt4 key购买 nike

我们正在尝试将 CI 从 Jenkins 转移到 Maven 项目的 Github 操作。 Maven 存储库允许一次推送 POM 版本,除非版本以 -SNAPSHOT 结尾。因此,在我们当前的流程中,我们区分推送到 develop 和推送到 main 如果 NOT-SNAPSHOT 结尾,我们只推送给 Maven。

在 Jenkins 中它看起来像这样:

stage("on Merge to develop") {
when {
anyOf {
branch "develop"
}
expression {
return env.POM_VERSION ==~ /.*-SNAPSHOT/
}
not {
changeRequest()
}
}
steps {
echo "======== Merge into Develop ========"
}
}
stage("on publish release (merge to main)") {
when {
anyOf {
branch "master"
branch "main"
}
not {
expression {
return env.POM_VERSION ==~ /.*-SNAPSHOT/
}
}
not {
changeRequest()
}
}
steps {
echo "======== Merge into Master & PUSH ========"
}
}

在 GitHub 操作中,我们知道如何在特定分支上运行操作,但我们如何:

  • 将 POM 版本放入环境(或其他变量)中?
  • 根据 POM 版本有条件地运行该步骤?

当然 - 如果有更好的方法,我们会改造我们的流程

最佳答案

我们想通了:

  • 使用 mvn help:evaluate
  • 将版本导入环境
  • 步骤中的条件使用 if: 指令和 endsWith(...)

一个完整的例子:推送到 master,如果不是快照则部署:

name: Build on master

on:
push:
branches:
- main
- master

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
server-id: JNX
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
- name: Cache Maven packages
uses: actions/cache@v2
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Extract Project version
id: project
run: echo ::set-output name=version::$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
- name: Build with Maven deploy
if: ${{ !endsWith(steps.project.outputs.version, '-SNAPSHOT') }}
run: mvn --batch-mode --update-snapshots clean deploy
env:
MAVEN_USERNAME: ${{secrets.MAVEN_USERNAME}}
MAVEN_PASSWORD: ${{secrets.MAVEN_TOKEN}}

关于maven - 如何根据 maven pom 版本运行 github-action 条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67930876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com