在我们的项目中,我们使用 maven 作为构建工具,使用 GitHub actions 作为构建代理,使用 Jfrog 作为部署 jar 文件的工件。我们有快照版本和发布版本(使用 pom 中版本标记中的“SNAPSHOT”进行标识)。目前,我们使用maven部署插件将构建的工件部署到Jfrog,并且存储库的详细信息在maven设置中使用maven配置文件中的以下标签进行配置:
运行 Maven 部署时,部署插件会构建项目并根据工件的版本(是否有“SNAPSHOT”)将其部署到工件和相应的存储库。在浏览了一些文档和博客后,如下所示:
https://jfrog.com/blog/dont-let-maven-deploy-plugin-trip-you
我们认为最好使用 jfrog artifactory 插件来实现这一点,这样我们就可以捕获构建信息和其他信息。由于我们使用的是 GitHub actions,我找不到用于 GitHub actions 的神器插件(找到了一个用于 Jenkins 和其他一些但不是用于 GitHub actions 的插件),我也不想将该插件添加到我的 pom 文件中并在那里配置存储库详细信息,因为它将在 pom.xml 中绑定存储库详细信息。另外,我想将部署逻辑与 pom 分离并将其移动到 CI 服务器,以便开发人员可以隐藏这些详细信息(maven 部署插件在某种程度上执行此操作,因为所有工件配置都发生在 Maven 设置文件中)
artifactory插件可以在pom中配置如下:
参考自https://www.jfrog.com/confluence/display/JFROG/Maven+Artifactory+Plugin
然后我发现我们可以在 GitHub actions 中使用 Jfrog CLI 来部署工件,但我找不到如何配置 CLI 以使用快照和发布存储库,这样我就不必手动决定将它们上传到哪里使用存储库名称。有人可以指导我如何在 CLI 中实现这一目标吗?
我参考了 GitHub 和 jfrog 的以下链接:
所以,我终于设法弄清楚如何使用 github actions 来完成此操作。
在我的 actions.yml 文件中,我添加了一个新步骤,该步骤利用 github actions 市场中的“jfrog/setup-jfrog-cli”操作,其链接如下。它向您展示了如何配置操作。
https://github.com/marketplace/actions/setup-jfrog-cli
我在此操作中配置了artifactory 平台url 以及用户名和访问令牌。
创建了一个新操作,它将使用“jf maven”目标构建我的代码。在使用 jfrog CLI 使用 maven 之前,需要使用“jf mvn-config”命令对其进行配置,您可以在此处指定要使用的版本和快照存储库。以下是我用于相同目的的代码片段。请注意,这些是 github actions pipeline 作业中的步骤,而不是完整的构建 yml 文件'
- name: Setup jfrog
uses: jfrog/setup-jfrog-cli@v3
with:
version: latest
env:
JF_URL: "https://artifactory.com" #be mindful not to add the path /artifactory here as it will cause authentication issue
JF_USER: ${{ secrets.ARTIFACT_USER_ID }}
JF_ACCESS_TOKEN: ${{ secrets.ARTIFACT_TOKEN }} # You have an option of giving password as well
- name: maven build
run: |
jf mvn-config --repo-deploy-releases=${ARTIFACTORY_RELEASE} --repo-deploy-snapshots=${ARTIFACTORY_SNAPSHOT} # mention the names of your release and snapshot repos within the jfrog artifacory
jf mvn deploy
jf rt bp # (optional, deploy build info, use --dry-run flag to see the build info in console without committing it)
还有许多其他可选参数可用于丰富和配置构建,可以在以下链接中找到
https://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory#CLIforJFrogArtifactory-RunningMavenBuilds https://www.jfrog.com/confluence/display/JFROG/QuickStart+Guide%3A+Maven+and+Gradle https://www.jfrog.com/confluence/display/CLI/CLI+for+JFrog+Artifactory#CLIforJFrogArtifactory-BuildIntegration