如何为 Wordpress 插件配置 circleci

How to configure circleci for Wordpress plugin

My project is a Wordpress plugin. I'm using circleci 用于持续集成。

我正在尝试设置我的 circle.yml 文件,以便我可以 运行 我的 phpunit 测试。我正在按照 this example 在 CI 环境中安装 Wordpress 等。以下是对我不起作用的方法:

## Customize test commands
test:

  pre:
    # download wordpress for wp-cli to use
    - curl -s https://wordpress.org/latest.tar.gz > /tmp/wordpress.tar.gz
    - tar --strip-components=1 -zxmf /tmp/wordpress.tar.gz -C /tmp/wordpress
    - curl -s https://raw.github.com/markoheijnen/wp-mysqli/master/db.php > /tmp/wordpress/wp-content/db.php

    # Create DB. No password is required for the MySQL user `ubuntu`
    - mysql -u ubuntu -e "create database wordpress"

    # Download WordPress into `wordpress` directory
    - ./vendor/wp-cli/wp-cli/bin/wp core download --allow-root --path=wordpress

    # Generate `wp-config.php` file
    - ./vendor/wp-cli/wp-cli/bin/wp core config --allow-root --dbname=wordpress --dbuser=ubuntu --dbhost=localhost --path=wordpress

    # Install WordPress
    - ./vendor/wp-cli/wp-cli/bin/wp core install --allow-root --admin_name=admin --admin_password=admin --admin_email=admin@example.com --url=http://wp-github-pipeline.dev:8080 --title=WordPress --path=wordpress

    # Clone Pipeline plugin from GitHub
    - git clone git@github.com:TransitScreen/wp-github-pipeline.git wordpress/wp-content/plugins/wp-github-pipeline

    #install dependencies
    - cd wordpress/wp-content/plugins/wp-github-pipeline
    - composer install

    # And use WP-CLI to activate it
    # ERROR HAPPENS HERE!!
    - ./vendor/wp-cli/wp-cli/bin/wp plugin activate wp-github-pipeline --path=wordpress

  override:
    - phpunit # use PHPunit for testing

这是上面评论中提到的错误:

PHP Fatal error:  Cannot redeclare cli\render() (previously declared in phar:///home/ubuntu/wp-github-pipeline/wp-cli.phar/vendor/wp-cli/php-cli-tools/lib/cli/cli.php:26) in /home/ubuntu/wp-github-pipeline/vendor/wp-cli/php-cli-tools/lib/cli/cli.php on line 28

Fatal error: Cannot redeclare cli\render() (previously declared in phar:///home/ubuntu/wp-github-pipeline/wp-cli.phar/vendor/wp-cli/php-cli-tools/lib/cli/cli.php:26) in /home/ubuntu/wp-github-pipeline/vendor/wp-cli/php-cli-tools/lib/cli/cli.php on line 28 ./wp-cli.phar plugin activate wp-github-pipeline --path=wordpress r

这是我最终得到的结果,改编自 this

## Customize the test machine
machine:
  timezone:
      America/New_York # Set the timezone

    # Version of ruby to use
  php:
    version:
      5.6.5

  environment:
    WP_VERSION: latest
    CIRCLE_ENV: test
    WP_MULTISITE: 0 
    WP_CORE_DIR: /home/ubuntu/wordpress-develop 
    WP_TESTS_DIR: /home/ubuntu/wordpress-develop/tests/phpunit 
    plugin_loc: /home/ubuntu/$CIRCLE_PROJECT_REPONAME 
    plugin_slug: $CIRCLE_PROJECT_REPONAME 
    plugin_dir: /home/ubuntu/wordpress-develop/src/wp-content/plugins/$plugin_slug 
    plugin_tests_dir: /home/ubuntu/wordpress-develop/src/wp-content/plugins/$plugin_slug/tests



## Customize dependencies
dependencies:
  pre:
    #enable xdebug.  LINE 1/2 to uncomment if you want to run a code coverage report.
    # - sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/conf.d/xdebug.ini
    #setup WP install
    - git clone git://develop.git.wordpress.org/ $WP_CORE_DIR;
    - cd $WP_CORE_DIR && cp wp-tests-config-sample.php wp-tests-config.php && sed -i "s/youremptytestdbnamehere/wordpress_test/" wp-tests-config.php && sed -i "s/yourusernamehere/root/" wp-tests-config.php && sed -i "s/yourpasswordhere//" wp-tests-config.php;
    # move plugin into tests/src
    - mv $plugin_loc $plugin_dir;
    # set up database
    - mysql -e 'CREATE DATABASE wordpress_test;' -uroot;
    # setup phpunit
    - wget https://phar.phpunit.de/phpunit.phar && chmod +x phpunit.phar && mv phpunit.phar /home/ubuntu/.phpenv/shims/phpunit

  override:
    - touch composer.json
    - ls

## tests override
test:
  override:
    # comment out the below line to run a code coverage report.
    - cd $plugin_tests_dir; cd ..; pwd; composer install; ls; phpunit
    ## LINE 2/2 to uncomment if you want to run a code coverage report.
    # - cd $plugin_tests_dir; phpunit --coverage-html $CIRCLE_ARTIFACTS