Composer php Github操作-编写器因';sh:git:未找到';?

Composer php Github操作-编写器因';sh:git:未找到';?,composer-php,github-actions,Composer Php,Github Actions,我有一个wordpress插件,我使用composer来定义我的依赖库和github操作,以构建可安装的包。我计划将vendors文件夹发布到github中的“build”分支,以便安装整个应用程序 我的文件包含此内容并在本地工作 { "name" : "emeraldjava/bhaa_wordpress_plugin", "description" : "bhaa_wordpress_plugin", "type" : "wordpress-plugin", "require": {

我有一个wordpress插件,我使用composer来定义我的依赖库和github操作,以构建可安装的包。我计划将vendors文件夹发布到github中的“build”分支,以便安装整个应用程序

我的文件包含此内容并在本地工作

{
"name" : "emeraldjava/bhaa_wordpress_plugin",
"description" : "bhaa_wordpress_plugin",
"type" : "wordpress-plugin",
"require": {
    "scribu/scb-framework": "dev-master",
    "scribu/lib-posts-to-posts": "dev-master",
    "mustache/mustache": "2.12.0",
    "league/csv": "^9.1",
    "michelf/php-markdown": "^1.8"
},
我的github操作文件使用“”在docker容器中安装composer env

jobs:
build:

runs-on: ubuntu-latest

steps:
  - name: Checkout
    uses: actions/checkout@v1
  - name: Composer install
    uses: MilesChou/composer-action/7.3@master
    with:
      args: install --no-dev
  - uses: docker://php:7.3-alpine
  - uses: docker://alpine/git:latest
从构建日志中,我可以看到这些composer工件的zip文件已经下载到缓存中

36/38:  https://codeload.github.com/scribu/wp-scb-framework/legacy.zip/95b23ac342fce16bf5eb8d939ac5a361b94b104b
37/38:  https://codeload.github.com/sebastianbergmann/phpunit/legacy.zip/a7834993ddbf4b0ed2c3b2dc1f3b1d093ef910a9
38/38:  https://codeload.github.com/scribu/wp-lib-posts-to-posts/legacy.zip/a695438e455587fa228e993d05b4431cde99af1b
Finished: success: 38, skipped: 0, failure: 0, total: 38
生成失败,出现此“sh:git:not found”错误

Package operations: 5 installs, 0 updates, 0 removals
- Installing scribu/scb-framework (dev-master 95b23ac): Cloning 95b23ac342
    Failed to download scribu/scb-framework from source: Failed to clone https://github.com/scribu/wp-scb-framework.git, git was not found, check that it is installed and in your PATH env.

sh: git: not found

    Now trying to download from dist
- Installing scribu/scb-framework (dev-master 95b23ac): Loading from cache
- Installing scribu/lib-posts-to-posts (dev-master a695438): Cloning a695438e45
    Failed to download scribu/lib-posts-to-posts from source: Failed to clone https://github.com/scribu/wp-lib-posts-to-posts.git, git was not found, check that it is installed and in your PATH env.

sh: git: not found

    Now trying to download from dist
- Installing scribu/lib-posts-to-posts (dev-master a695438): Loading from cache
- Installing mustache/mustache (v2.12.0): Loading from cache
- Installing michelf/php-markdown (1.8.0): Loading from cache
- Installing league/csv (9.4.1): Loading from cache
我假设我需要确保docker容器安装了git,但是composer能够访问legacy.zip文件似乎有些奇怪,那么为什么在这个阶段需要git呢

编辑1 我猜这里的快速修复方法是复制的,正如下面的答案所述


为了完整起见,假设我不能调用“composer——preferred dist”,我如何确保docker容器有git可用?

默认情况下,composer将dist(zip文件)用于标记的发布,将source(git克隆)用于分支。由于您的依赖项的目标是
master
分支,Composer会首先尝试克隆存储库。您可以使用
--preference dist
开关来覆盖此行为:

with:
  args: install --prefer-dist --no-dev
--首选dist
:与
--首选源代码相反,如果可能,Composer将从
dist
安装。这可以大大加快构建时的安装速度 通常不运行更新的服务器和其他用例 供应商。如果您愿意,它也是一种规避git问题的方法 没有正确的设置


默认情况下,Composer使用dist(zip文件)作为标记版本,使用source(git克隆)作为分支。由于您的依赖项的目标是
master
分支,Composer会首先尝试克隆存储库。您可以使用
--preference dist
开关来覆盖此行为:

with:
  args: install --prefer-dist --no-dev
--首选dist
:与
--首选源代码相反,如果可能,Composer将从
dist
安装。这可以大大加快构建时的安装速度 通常不运行更新的服务器和其他用例 供应商。如果您愿意,它也是一种规避git问题的方法 没有正确的设置