尽管我按照作曲家文档的说法安装,但未找到 Bitbucket Pipeline Composer

问题描述 投票:0回答:1

在我的项目中,我尝试打包我的应用程序:

image: php:8.1

pipelines:
  default:
    - step:
        caches:
          - composer
        script:
          - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          - php composer-setup.php --install-dir=/usr/local/bin --filename=composer
          - php -r "unlink('composer-setup.php');"
          - chmod +x /usr/local/bin/composer
    - step:
        caches:
          - composer
        script:
          - export PATH=/usr/local/bin:$PATH
          - composer install
          - ./vendor/bin/phpunit
    
    - step:
        caches:
          - composer
        script:
          - export PATH=/usr/local/bin:$PATH
          - composer install --no-dev
          - apt-get update && apt-get install -y zip
          - export FILE=release-$(date +"%Y%m%d%H%M%S").zip 
          - zip ${FILE} ./lib/*.php ./vendor/* composer.json composer.lock index.php config.php ./utils/*.php
          - curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"${FILE}"
        artifacts:
          - release-$(date +"%Y%m%d%H%M%S").zip


但在步骤中:

   - step:
        caches:
          - composer
        script:
          - export PATH=/usr/local/bin:$PATH
          - composer install
          - ./vendor/bin/phpunit

我收到错误:

bash: composer: command not found

你知道为什么吗?似乎由于某种原因,在每个步骤之间安装的作曲家没有共享。

php composer-php bitbucket-pipelines
1个回答
0
投票

caches: composer
并不意味着composer本身是共享的,而是意味着composer的缓存是共享的。每个步骤都在其自己的独立容器中运行,因此如果您要在每个步骤中使用 Composer,则必须在每个步骤中安装 Composer。在您的示例中,您的第一步什么都不做——它只是启动一个容器,安装作曲家,然后扔掉该容器。您可以有两个步骤,一个用于测试,一个用于构建 zip,每个步骤都安装并运行 Composer:

pipelines:
  default:
    - step:
        caches:
          - composer
        script:
          - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          - php composer-setup.php --install-dir=/usr/local/bin --filename=composer
          - php -r "unlink('composer-setup.php');"
          - chmod +x /usr/local/bin/composer
          - export PATH=/usr/local/bin:$PATH
          - composer install
          - ./vendor/bin/phpunit
    - step:
        caches:
          - composer
        script:
          - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
          - php composer-setup.php --install-dir=/usr/local/bin --filename=composer
          - php -r "unlink('composer-setup.php');"
          - chmod +x /usr/local/bin/composer
          - export PATH=/usr/local/bin:$PATH
          - composer install --no-dev
          - apt-get update
          - apt-get install -y zip
          - export FILE=release-$(date +"%Y%m%d%H%M%S").zip 
          - zip ${FILE} ...
          - curl ...
        artifacts:
          - release-$(date +"%Y%m%d%H%M%S").zip

或者,您可以基于

php:8.1
构建自己的自定义映像,并已安装 Composer 和 zip - 然后在管道配置中引用它。

image: my_custom_image_with_composer_and_zip_already_in_it:8.1

pipelines:
  default:
    - step:
        caches:
          - composer
        script:
          - composer install
          - ./vendor/bin/phpunit
    - step:
        caches:
          - composer
        script:
          - composer install --no-dev
          - export FILE=release-$(date +"%Y%m%d%H%M%S").zip 
          - zip ${FILE} ...
          - curl ...
        artifacts:
          - release-$(date +"%Y%m%d%H%M%S").zip
© www.soinside.com 2019 - 2024. All rights reserved.