【问题标题】:Is there anyway to sign maven package at github action workflows?无论如何要在 github 操作工作流中签署 maven 包吗?
【发布时间】:2020-02-01 12:05:25
【问题描述】:

我正在运行 GitHub 操作工作流程,并且在尝试运行 maven 安装时出现失败错误。 在我安装 maven 包之前需要我签名。 这是我的工作流程 yml 文件:

name: Github Action

on:
  push:
    branches:
      - master
      - release/*
  schedule:
    - cron: '0 0 * * 0'
jobs:
  build:
    name: Main
    runs-on: ${{ matrix.operating-system }}
    strategy:
        matrix:
          java-version: [1.8]
          operating-system: [ubuntu-latest]
    steps:
      - name: Prepare
        uses: actions/checkout@v1
      - name: Set Up Java Development Kit
        uses: actions/setup-java@v1
        with:
          java-version: ${{ matrix.java-version }}
      - name: Maven build clean, build, test and install
        run: |
          mvn clean
          mvn install
          mvn package --file pom.xml

这就是我得到的:

gpg: directory '/${HOME}/.gnupg' created
gpg: keybox '/${HOME}/.gnupg/pubring.kbx' created
gpg: no default secret key: No secret key
gpg: signing failed: No secret key
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.278 s
[INFO] Finished at: 2019-10-03T06:56:51Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.6:sign (sign-artifacts) on project core: Exit code: 2 -> [Help 1]

有什么方法可以使用 github 操作工作流对我们的包进行签名?

【问题讨论】:

  • 您目前是否在 CI 环境中签名?这是如何运作的?大概 CI 环境需要密钥来签名。我希望您需要将其作为机密添加到您的工作流程所在的 GitHub 存储库中。
  • 是的,我已经使用 env 完成了该操作:${secrets.ENVNAME)
  • 也许这个动作可以帮到你:github.com/samuelmeuli/action-maven-publish
  • 非常感谢您的回复,很高兴有 github 功能的操作,我也使用 github env 完成了它。

标签: maven github continuous-integration github-actions maven-gpg-plugin


【解决方案1】:

您将得到的最常见答案是使用samuelmeuli/action-maven-publish。这个插件有两个问题 - 它将密钥文件写入主目录中的磁盘,并且不允许您最大限度地自定义 Apache Maven 命令行。

相反,您可以使用 GitHub 操作机密和 gpg 命令行来安装 gpg 密钥,使用来自 How to Sign and Release to The Central Repository with GitHub Actions 的说明。

【讨论】:

    【解决方案2】:

    另一种方法是使用Sign Maven Plugin,它旨在用于 CI/CD 系统。

    所有需要的配置都可以通过环境变量来完成。

    Sign Maven Plugin 不使用gpg,因此您不需要任何gpg 初始化步骤。

    你应该定义秘密

    • SIGN_KEY - 装甲 GPG/PGP 密钥 - 这是必需的
    • SIGN_KEY_ID - 十六进制格式的密钥 ID - 可选,将使用来自 SIGN_KEY 的第一个密钥
    • SIGN_KEY_PASS - 用于解密私人签名密钥的密码 - 如果密钥未加密,则可选

    在 GitHub Action 工作流程中,您将机密传递给构建:

     - name: Maven build clean, build, test and install
       run: mvn ...
       env:
          SIGN_KEY: ${{ secrets.SIGN_KEY }}
          SIGN_KEY_ID: ${{ secrets. SIGN_KEY_ID }}
          SIGN_KEY_PASS: ${{ secrets. SIGN_KEY_PASS }}
    
    

    【讨论】:

      猜你喜欢
      • 2020-06-15
      • 1970-01-01
      • 2021-02-27
      • 2021-02-18
      • 1970-01-01
      • 2021-09-10
      • 2022-08-23
      • 2020-03-15
      • 2021-04-17
      相关资源
      最近更新 更多