我正在使用GitHub Actions为创建的每个拉请求运行PHP CS Fixer和PHPUnit。我为PHPUnit实现了这个GitHub操作,我的YML文件如下。
name: PHPUnit Tests
on: [push]
jobs:
build-test:
name: PHPUnit Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: php-actions/composer@v5
with:
php_extensions: mailparse pdo_mysql
dev: no
args: --profile --ignore-platform-reqs
- name: PHPUnit Tests
uses: php-actions/phpunit@v3
with:
php_version: 8.1
我有以下来自PHPUnit Action的错误。
994393dc58e7: Layer already exists
1e74372f6dff: Pushed
php-latest-mailparse-pdo_mysql-build2: digest: sha256:17078db8c8e36a72ce937d8b5f98eb0c0b814b91a2c20e14788039763b722300 size: 2831
Docker tag: docker.pkg.github.com/synega/connect/php-actions_composer_connect:php-latest-mailparse-pdo_mysql-build2
No private keys supplied
Command: composer install --no-dev --no-progress --no-interaction --profile --ignore-platform-reqs
Error: Process completed with exit code 1.
如何/在哪里可以获得mailparse
的私钥?任何帮助都将不胜感激。
需要私钥的不是mailparse
,而是整个项目-私有存储库需要使用SSH身份验证-请参阅composer php操作手册:
要从专用存储库安装,必须使用SSH身份验证。为此生成一个SSH密钥对,并将其添加到您的私有存储库的配置中,最好只有只读权限。例如,在Github上,这可以通过使用部署密钥来实现。
使用Github Secrets将密钥对添加到项目中,并使用ssh_key和ssh_key_pub输入将它们传递到php操作/composer操作中。如果您的私有存储库存储在github.com以外的另一台服务器上,则还需要通过ssh_domain传递域。
示例yaml,展示如何传递机密:
jobs: build: ... - name: Install dependencies uses: php-actions/composer@v6 with: ssh_key: ${{ secrets.ssh_key }} ssh_key_pub: ${{ secrets.ssh_key_pub }}
有一个示例存储库可供参考,网址为https://github.com/php-actions/example-composer使用私人依赖关系。查看它以了解实时工作项目。
Github Secrets文档介绍了如何为Github创建它们。