GitHub Actions中PHPUnit执行失败,如何获取mailparse私钥?
问题
我使用GitHub Actions为每个创建的拉取请求(PR)运行PHP CS Fixer和PHPUnit,配置的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
执行时出现如下错误:
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的私钥无关,问题出在php-actions/composer动作构建自定义PHP镜像时,尝试推送镜像到GitHub Packages但缺少权限。以下是两种可行的解决方式:
方式一:跳过自定义镜像构建,手动安装扩展
去掉php_extensions参数,添加单独的步骤安装mailparse和pdo_mysql扩展,修改后的Workflow片段如下:- uses: actions/checkout@v2 - name: 安装PHP扩展 run: | sudo apt-get update sudo apt-get install -y php8.1-mailparse php8.1-mysql sudo docker-php-ext-enable mailparse pdo_mysql - uses: php-actions/composer@v5 with: dev: no args: --profile --ignore-platform-reqs方式二:提供GitHub Packages推送权限
如果需要保留自定义镜像构建,给composer步骤传入GitHub Actions自带的权限令牌即可,修改后的composer步骤如下:- uses: php-actions/composer@v5 with: php_extensions: mailparse pdo_mysql dev: no args: --profile --ignore-platform-reqs secrets: inherit该配置会自动传入
GITHUB_TOKEN,赋予动作推送镜像到GitHub Packages的权限。
内容的提问来源于stack exchange,提问作者William Francis Gomes
相关产品推荐
相关产品推荐

