我正在尝试设置一个 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
系统终端上,build
和code 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开发人员证书从login
keychian复制到system
列表中,现在我的问题已解决。