我们成功地使用Github操作发布了我们的Nuget包,最近,我们公司在Nuget组织帐户上发布了另一个包,该包是由另一个团队签名和管理的。因此,我们突然注意到我们的Github发布操作不再有效,因为我们的包没有签名,而且由于Nuget规则,如果一个包是在一个组织下签名的,那么所有未来的发布都必须使用有签名的包。
我们试图找到一种方法来处理Github操作,但是我们无法在网上找到任何示例或教程。
现在,我们回到手动发布包,有人知道如何签署和发布一个包的Github操作吗?该包是开源的,因此必须有一种方法将证书保密,而不是在公共存储库中。
这是我们的行动:
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机密文档对其进行解密,它运行良好。
我在我的本地系统上使用了同样的证书,它运行良好,我使用这个证书发布了几个版本的包。
发布于 2022-01-27 11:49:46
我们发现了这个问题,看起来PFX文件在Linux上不起作用。
因此,我们决定在Windows上运行这个操作,但是没有内置的解密证书的工具,我们使用AES开发了自己的工具。
它是一个轻量级的.NET加密/解密工具,可以对本地系统上的证书文件进行加密,然后使用该工具对加密的文件进行解密。
它使用AES,Github:https://github.com/afhacker/FileEncrypt/
我们能够成功地在Nuget上发布软件包,现在一切都很好!
如果您遇到类似的问题,请查看FileEncrypt自述文件。
https://stackoverflow.com/questions/70861985
复制相似问题