首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用Github操作发布时签名nuget包

如何在使用Github操作发布时签名nuget包
EN

Stack Overflow用户
提问于 2022-01-26 10:29:07
回答 1查看 268关注 0票数 0

我们成功地使用Github操作发布了我们的Nuget包,最近,我们公司在Nuget组织帐户上发布了另一个包,该包是由另一个团队签名和管理的。因此,我们突然注意到我们的Github发布操作不再有效,因为我们的包没有签名,而且由于Nuget规则,如果一个包是在一个组织下签名的,那么所有未来的发布都必须使用有签名的包。

我们试图找到一种方法来处理Github操作,但是我们无法在网上找到任何示例或教程。

现在,我们回到手动发布包,有人知道如何签署和发布一个包的Github操作吗?该包是开源的,因此必须有一种方法将证书保密,而不是在公共存储库中。

这是我们的行动:

代码语言:javascript
复制
name: Publish Nuget Package When Pre-Released

on:
  release:
    types: [prereleased]

jobs:
  build:
    runs-on: ubuntu-latest

    env:
      BUILD_CONFIG: 'Release'
      PROJECT: 'src/OpenAPI.Net/OpenAPI.Net.csproj'

    steps:
    - uses: actions/checkout@v2

    - name: Setup NuGet
      uses: NuGet/setup-nuget@v1.0.5
      with:
        nuget-api-key: ${{secrets.NUGET_API_KEY}}
        nuget-version: 'latest'

    - name: Restore dependencies
      run: nuget restore $PROJECT

    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: '6.0.x'

    - name: Build
      run: dotnet build $PROJECT --configuration $BUILD_CONFIG --no-restore
    
    - name: Set Execution Permission For decrypt_certificate.sh
      run: chmod +x ./decrypt_certificate.sh

    - name: Decrypt Certificate
      run: ./decrypt_certificate.sh
      env:
          CERTIFICATE_GPG_PASSPHRASE: ${{secrets.CERTIFICATE_GPG_PASSPHRASE}}

    - name: Importing Certificate
      run: sudo cp $HOME/secrets/certificate.pfx /usr/share/ca-certificates/certificate.pfx ; sudo dpkg-reconfigure ca-certificates ; sudo update-ca-certificates ; git config --global http.sslCAInfo /usr/share/ca-certificates/certificate.pfx

    - name: Sign Package
      run: nuget sign **\*.nupkg -CertificatePath $HOME/secrets/certificate.pfx -Timestamper http://timestamp.digicert.com/ -CertificatePassword ${{secrets.CERTIFICATE_PASSWORD}} -NonInteractive

    - name: Publish Package
      run: nuget push **\*.nupkg -Source 'https://api.nuget.org/v3/index.json'

    - name: Publish Symbols
      run: nuget push **\*.snupkg -Source 'https://api.nuget.org/v3/index.json'

它在标志包步骤中失败,出现以下错误:

NU3018: PartialChain: PartialChain

警告: NU3018: RevocationStatusUnknown: RevocationStatusUnknown

警告: NU3018: OfflineRevocation: OfflineRevocation

NU3018:证书链验证失败。

错误:使用退出代码1完成的过程。

我们使用GPG对证书文件进行加密,然后根据Github机密文档对其进行解密,它运行良好。

我在我的本地系统上使用了同样的证书,它运行良好,我使用这个证书发布了几个版本的包。

EN

回答 1

Stack Overflow用户

发布于 2022-01-27 11:49:46

我们发现了这个问题,看起来PFX文件在Linux上不起作用。

因此,我们决定在Windows上运行这个操作,但是没有内置的解密证书的工具,我们使用AES开发了自己的工具。

它是一个轻量级的.NET加密/解密工具,可以对本地系统上的证书文件进行加密,然后使用该工具对加密的文件进行解密。

它使用AES,Github:https://github.com/afhacker/FileEncrypt/

我们能够成功地在Nuget上发布软件包,现在一切都很好!

如果您遇到类似的问题,请查看FileEncrypt自述文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70861985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档