symfony 使用gitlab-ci的PHP无法找到srcApp_KernelDevDebugContainer.xml,因为它在gitignore中?

qcbq4gxm  于 2022-12-13  发布在  Git
关注(0)|答案(2)|浏览(123)

这是我的phpstan neon

parameters:
  checkMissingIterableValueType: false
  checkGenericClassInNonGenericObjectType: false
  symfony:
        container_xml_path: '%rootDir%/../../../var/cache/dev/srcApp_KernelDevDebugContainer.xml'
  bootstrap: '%rootDir%/../../../vendor/autoload.php'

这是我的gitlab-ci片段

commit:
  stage: analysis
  variables:
    APP_ENV: dev
  cache:
    untracked: true
    paths:
     - Source/var/cache/dev/
  before_script:
    - cd Source
    - cp .env.example .env
    - composer install --no-interaction --optimize-autoloader --classmap-authoritative
  script:
    - composer commit
  only:
    - merge_requests

我得到以下错误:

In XmlServiceMapFactory.php line 29:

   [PHPStan\Symfony\XmlContainerNotExistsException]                             
   Container /builds/Mehlichmeyer/heracles-mvp-symfony/Source/vendor/phpstan/p  
   hpstan/../../../var/cache/dev/srcApp_KernelDevDebugContainer.xml does not e  
   xist

问题是我的gitlab-ci容器没有srcApp_KernelDevDebugContainer.xml,因为它在我的.gitignore(/var/ is)中。

epfja78i

epfja78i1#

要得到这个文件,你必须为激活了调试的开发环境生成该高速缓存。我想这可以在“before_script”部分完成:

before_script:
    - cd Source
    - cp .env.example .env
    - composer install --no-interaction --optimize-autoloader --classmap-authoritative
    - php bin/console cache:warmup --env=dev

您的.env文件必须具有调试标志:

###> symfony/framework-bundle ###
APP_ENV=dev
APP_DEBUG=1
APP_SECRET=APP_SECRET
###< symfony/framework-bundle ###

我不知道gitlab-ci,但我用github-actions做了这个,它工作得很好。

nlejzf6q

nlejzf6q2#

好吧,所以我终于找到了问题。我把我的Symfony从4. x更新到5. x,我不得不调整我的phpstan. neon

container_xml_path: '%rootDir%/../../../var/cache/dev/App_KernelDevDebugContainer.xml'

在本地,这不会抛出错误,因为我没有运行bin/console cache:clear,所以旧的container_xml_path工作正常。

相关问题