LoginSignup
1
3

More than 5 years have passed since last update.

CircleCI1.0でphp-imagickをインストールしようとしてハマった話

Last updated at Posted at 2018-05-22

ローカルでテストはとおっていたけれどもCircleCI(1.0)でテストが通らない。
調べてみるとimagickのクラスが見つからないというエラーが出ている。
あ、CircleCIにもImageMagickをインストールしないといけないのか、じゃあインストールするか、と軽い気持ちでCircleCIをいじってたら思っていたよりハマってしまったので備忘録としてメモ。

imagickのインストール

テスト実行前に以下のコマンドを実行させます。

sudo apt-get update
sudo apt-get -y install imagemagick
yes | pecl install -f imagick
echo "extension = imagick.so" >> /opt/circleci/php/$(phpenv global)/etc/php.ini

imagemagickをインストール後、peclでimagickをインストールし、PHPで利用できるようにphp.iniを設定ファイルを追加します。

設定ファイル

最終的なcircle.ymlは以下のようになりました。
テスト実行前にimagickのセットアップを正しく行うことにより、
imagickに依存するテストも動作するようになります。

circle.yml
machine:
  timezone: Asia/Tokyo
  php:
    version: 7.1.9
  environment:
    DB_HOST_TESTING: 127.0.0.1
    DB_DATABASE_TESTING: circle_test
    DB_USERNAME_TESTING: ubuntu
    DB_PASSWORD_TESTING: ''

database:
  override:
    - php path/to/artisan migrate --env=testing --database=testing
    - php path/to/artisan db:seed --env=testing --database=testing

dependencies:
  cache_directories:
    - path/to/.composer/cache
  pre:
    - composer config -g github-oauth.github.com $GITHUB_OAUTH_TOKEN
    - echo "memory_limit = 2048M" > /opt/circleci/php/$(phpenv global)/etc/conf.d/memory.ini 
  override:
# ここから重要
    - sudo apt-get update
    - sudo apt-get -y install imagemagick
    - yes | pecl install -f imagick
    - echo "extension = imagick.so" >> /opt/circleci/php/$(phpenv global)/etc/php.ini
# ここまで重要
    - composer install --dev --no-interaction --working-dir=path/to
    - composer dump-autoload --optimize --working-dir=path/to
test:
  override:
    - path/to/vendor/bin/phpunit -c path/to/phpunit.xml

CircleCI(1.0)でimagickに依存するプログラムがあった場合参考になれば幸いです:smiley:

参考

PHP 7, Imagemagick and CircleCI

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3