2016-12-14 21 views
1

Я хотел преобразовать PNG изображений WebP альтернативы в Трэвиса, но Трэвис CI использует довольно старая версия Ubuntu 12.04, поэтому в комплекте ImageMagick был на самом деле не в курсе:Как установить более новый imagemagick с поддержкой webp в контейнере Travis CI?

$ convert -version 
Version: ImageMagick 6.6.9-7 2014-03-06 Q16 http://www.imagemagick.org 
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC 
Features: OpenMP 

Я знаю, что я могу использовать sudo: required использовать travis в виртуальной машине и установить и построить там вещи. Вместо этого я хотел бы использовать контейнерную среду сборки с sudo: false, потому что она намного быстрее.

Если я пытаюсь скомпилировать libwepb или imagemagick Travis дает мне разрешение отказано ошибки, потому что у меня нет разрешения на /usr/local/ папку:

$ make install 
... 
/bin/mkdir -p '/usr/local/include/webp' 
/bin/mkdir: cannot create directory `/usr/local/include/webp': Permission denied 
... 
The command "make install" failed and exited with 2 during . 
+0

Вы пытались указать 'Dist: trusty' в вашей конфигурации? Через некоторое время имеется контейнер Trusty. – joepd

ответ

1

Travis позволяет пользователям изменять $PATH и установить бинарные файлы в $HOME каталог.

Вот полный пример для рубина. Он только компилирует двоичные файлы один раз и кэширует их. Он только устанавливает их снова, если номера версий не совпадают.

language: ruby 
sudo: false 
dist: precise 

cache: 
    directories: 
    - "$HOME/opt" 

addons: 
    apt: 
    packages: 
     - libjpeg-dev 
     - libpng-dev 
     - libgif-dev 
env: 
    global: 
    - IMAGEMAGICK_VERSION: '7.0.3-10' 
    - LIBWEBP_VERSION: '0.5.1' 

# Install newer libwebp and imagemagick 
before_install: 
    # Update PATH so that travis can find newer imagemagick 
    - export PATH=$HOME/opt/bin:$PATH 

    # Checks if Imagemagick is already sufficient version 
    # If not installs it from the sources 
    - convert -version | grep $IMAGEMAGICK_VERSION || { 
    export CORES=$(nproc) && 
    echo "Using $CORES cores for compiling..." && 
    cd /tmp && 
    curl -O https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$LIBWEBP_VERSION.tar.gz && 
    tar xvzf libwebp-$LIBWEBP_VERSION.tar.gz && 
    cd libwebp-* && 
    ./configure --prefix=$HOME/opt && 
    make -j$CORES && 
    make install -j$CORES && 
    cd /tmp && 
    curl -O https://www.imagemagick.org/download/ImageMagick-$IMAGEMAGICK_VERSION.tar.gz && 
    tar xvzf ImageMagick-$IMAGEMAGICK_VERSION.tar.gz && 
    cd ImageMagick-* && 
    ./configure --prefix=$HOME/opt && 
    make -j$CORES && 
    make install -j$CORES && 
    $HOME/opt/bin/magick -version | grep $IMAGEMAGICK_VERSION && 
    cd $TRAVIS_BUILD_DIR; } 

    # Update library paths for programs 
    - export LD_FLAGS=-L$HOME/opt/lib 
    - export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$HOME/opt/lib 
    - export CPATH=$CPATH:$HOME/opt/include 

Кредиты: Я смотрел, как эта библиотека рубин устанавливает libwebp и выяснить, остальное было просто: https://github.com/le0pard/webp-ffi/blob/master/.travis.yml

 Смежные вопросы

  • Нет связанных вопросов^_^