协同设计仅在GitHubActions中失败,在MacOS终端和Jenkins中成功



我正在尝试设置一个 GitHub 操作工作流,以使用自托管运行器在 MacOS(10.15.7) 系统上执行构建。我的生成操作工作流,包括代码登录,如下所示

runs-on:  [self-macos]
steps:
- uses: actions/checkout@master
- name: Build and Codesign
env: 
KEYCHAIN_PASSWD: ${{ secrets.KEYCHAIN_PASSWD }}
KEYCHAIN_PATH: ${{ secrets.KEYCHAIN_PATH }}
DEVELOPER_ID: ${{ secrets.DEVELOPER_ID }}
run: |
security list-keychain -d user -s $KEYCHAIN_PATH
security unlock-keychain -p $KEYCHAIN_PASSWD $KEYCHAIN_PATH
./resources/compileExternalClasses.sh

当前代码签名部分失败,仅在操作上出现以下错误。

+ codesign -f -s '***' -v /Users/devadmin/actions-runner/_work/linux-driver/linux-driver/framework.app
error: The specified item could not be found in the keychain.
- script failed with code : 1
Running install script failed with exit code 1
build fail.
Error: Process completed with exit code 255.

在具有相同GitHub操作工作区源代码Mac runner系统终端上,buildcode signing工作没有任何问题。

即使通过Jenkins相同的源代码也可以正常工作。

已经在我们的Mac服务器端安装了证书,并且在下面的Key-chain部分下已激活。

Trust - When using this certificate - Use System Defaults
Access Control - Allow all applications to access this item

由于上述问题仅在 github 操作构建中发生。请让我知道我在行动方面缺少什么?

在"s"参数中指定的项目在钥匙串中不可用。

对于 GitHub,您必须先将证书导入钥匙串。

最简单的方法是使用:

uses: apple-actions/import-codesign-certs@v1
with: 
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}

有关如何创建适当机密的完整说明在这里。

请记住,对于自托管运行器,您必须在每次运行后清理它:

- name: Clean up keychain and provisioning profile
if: ${{ always() }}
run: |
security delete-keychain $RUNNER_TEMP/app-signing.keychain-db
rm ~/Library/MobileDevice/Provisioning Profiles/build_pp.mobileprovision

借助此链接

已将Apple开发人员证书从loginkeychian复制到system列表中,现在我的问题已解决。

最新更新