Ошибка композитора в Jenkins - PullRequest
0 голосов
/ 15 мая 2018

Я пытался настроить систему сборки для PHP, и у меня следующий конвейер Jenkins.

pipeline {
    agent { docker { image 'my-custom-image' } }
    stages {
        stage('Build') {
            steps {
                sh 'composer config --global --auth http-basic.repo.packagist.com token mytokencode'
            }
        }
    }
}

Здесь он извлекает образ докера, но при выполнении команды composer выдает следующую ошибку:

Cannot create cache directory /.composer/cache/repo/https---repo.packagist.com-domain/, or directory is not writable. Proceeding without cache
Cannot create cache directory /.composer/cache/files/, or directory is not writable. Proceeding without cache


  [ErrorException]                                                                         
  touch(): Unable to create file /.composer/config.json because No such file or directory  

, и сборка завершается неудачей.Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Я смог использовать кэш компоновщика с помощью , создав том между моей машиной Jenkins и образом Docker.Вы можете попытаться воспроизвести:

В своем сценарии конвейера создайте том, используя аргумент:

agent {
  docker {
    image 'my-custom-image'
    args '-v $HOME/.composer/cache:/usr/local/share/composer/cache'
  }
}

Проверьте, куда указывает директория $ HOME , этоможет отличаться в зависимости от того, как вы установили Jenkins.Я использую его как пакет apt в Ubuntu 16. Для меня это указывает на / var / lib / jenkins

Внутри вашего каталога $ HOME, папка с именем ".composer"нужен с правильными разрешениями, чтобы докер мог его использовать.Я настроил его с помощью chmod -R 775 .

0 голосов
/ 06 сентября 2018

Вы можете установить переменную среды COMPOSER_HOME в фактический каталог, в котором Composer сохранит все данные кеша.Что-то вроде:

pipeline {
    agent { docker { image 'my-custom-image' } }
    stages {
        stage('Build') {
            steps {
                sh 'COMPOSER_HOME=$(pwd) composer config --global --auth http-basic.repo.packagist.com token mytokencode'
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...