From 14f6a3b03f7d5c1a9cc2541176f33fa93a8bc05c Mon Sep 17 00:00:00 2001 From: Jeff Geerling Date: Wed, 8 Feb 2017 21:45:42 -0600 Subject: [PATCH] Update Composer role to latest version. --- provisioning/requirements.yml | 2 +- .../roles/geerlingguy.composer/.travis.yml | 25 ++++++++----------- .../roles/geerlingguy.composer/README.md | 10 +++++++- .../geerlingguy.composer/defaults/main.yml | 4 +++ .../tasks/global-require.yml | 9 ++++--- .../roles/geerlingguy.composer/tasks/main.yml | 5 ++++ .../tasks/project-bin.yml | 6 +++++ .../templates/composer-project.sh.j2 | 1 + .../tests/requirements.yml | 1 + .../roles/geerlingguy.composer/tests/test.yml | 17 ++++++++++++- 10 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 provisioning/roles/geerlingguy.composer/tasks/project-bin.yml create mode 100644 provisioning/roles/geerlingguy.composer/templates/composer-project.sh.j2 diff --git a/provisioning/requirements.yml b/provisioning/requirements.yml index 6920d9ae0..22f6c17d9 100644 --- a/provisioning/requirements.yml +++ b/provisioning/requirements.yml @@ -14,7 +14,7 @@ - src: geerlingguy.blackfire version: 1.0.0 - src: geerlingguy.composer - version: 1.5.0 + version: 1.6.0 - src: geerlingguy.daemonize version: 1.1.1 - src: geerlingguy.drupal-console diff --git a/provisioning/roles/geerlingguy.composer/.travis.yml b/provisioning/roles/geerlingguy.composer/.travis.yml index 04be4ceaf..a31937acd 100644 --- a/provisioning/roles/geerlingguy.composer/.travis.yml +++ b/provisioning/roles/geerlingguy.composer/.travis.yml @@ -1,5 +1,5 @@ --- -sudo: required +services: docker env: - distro: centos7 @@ -11,31 +11,31 @@ env: - distro: ubuntu1604 init: /lib/systemd/systemd run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro" - -services: - - docker + - distro: debian8 + init: /lib/systemd/systemd + run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro" before_install: # Pull container. - - 'sudo docker pull geerlingguy/docker-${distro}-ansible:latest' + - 'docker pull geerlingguy/docker-${distro}-ansible:latest' script: - container_id=$(mktemp) # Run container in detached state. - - 'sudo docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} geerlingguy/docker-${distro}-ansible:latest "${init}" > "${container_id}"' + - 'docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} geerlingguy/docker-${distro}-ansible:latest "${init}" > "${container_id}"' # Install dependencies. - - 'sudo docker exec "$(cat ${container_id})" ansible-galaxy install -r /etc/ansible/roles/role_under_test/tests/requirements.yml' + - 'docker exec "$(cat ${container_id})" ansible-galaxy install -r /etc/ansible/roles/role_under_test/tests/requirements.yml' # Ansible syntax check. - - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check' + - 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml --syntax-check' # Test role. - - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml' + - 'docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml' # Test role idempotence. - idempotence=$(mktemp) - - sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml | tee -a ${idempotence} + - docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/test.yml | tee -a ${idempotence} - > tail ${idempotence} | grep -q 'changed=0.*failed=0' @@ -43,10 +43,7 @@ script: || (echo 'Idempotence test: fail' && exit 1) # Ensure Composer is installed and working. - - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm composer || true' - - # Clean up. - - 'sudo docker stop "$(cat ${container_id})"' + - 'docker exec --tty "$(cat ${container_id})" env TERM=xterm composer || true' notifications: webhooks: https://galaxy.ansible.com/api/v1/notifications/ diff --git a/provisioning/roles/geerlingguy.composer/README.md b/provisioning/roles/geerlingguy.composer/README.md index 0994cbb79..c0cb88fe5 100644 --- a/provisioning/roles/geerlingguy.composer/README.md +++ b/provisioning/roles/geerlingguy.composer/README.md @@ -39,6 +39,14 @@ A list of packages to install globally (using `composer global require`). If you If `true`, and if there are any configured `composer_global_packages`, the `vendor/bin` directory inside `composer_home_path` will be added to the system's default `$PATH` (for all users). + composer_project_path: /path/to/project + +Path to a composer project. + + composer_add_project_to_path: false + +If `true`, and if you have configured a `composer_project_path`, the `vendor/bin` directory inside `composer_project_path` will be added to the system's default `$PATH` (for all users). + composer_github_oauth_token: '' GitHub OAuth token, used to avoid GitHub API rate limiting errors when building and rebuilding applications using Composer. Follow GitHub's directions to [Create a personal access token](https://help.github.com/articles/creating-an-access-token-for-command-line-use/) if you run into these rate limit errors. @@ -65,4 +73,4 @@ MIT / BSD ## Author Information -This role was created in 2014 by [Jeff Geerling](http://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/). +This role was created in 2014 by [Jeff Geerling](https://www.jeffgeerling.com/), author of [Ansible for DevOps](https://www.ansiblefordevops.com/). diff --git a/provisioning/roles/geerlingguy.composer/defaults/main.yml b/provisioning/roles/geerlingguy.composer/defaults/main.yml index a6313ea6b..cf89087e0 100644 --- a/provisioning/roles/geerlingguy.composer/defaults/main.yml +++ b/provisioning/roles/geerlingguy.composer/defaults/main.yml @@ -16,5 +16,9 @@ composer_global_packages: [] composer_add_to_path: true +# Add a project vendor/bin directory to the PATH +composer_add_project_to_path: false +#composer_project_path: /path/to/project/vendor/bin + # GitHub OAuth token (used to help overcome API rate limits). composer_github_oauth_token: '' diff --git a/provisioning/roles/geerlingguy.composer/tasks/global-require.yml b/provisioning/roles/geerlingguy.composer/tasks/global-require.yml index 6f20b4c93..d3f2753f3 100644 --- a/provisioning/roles/geerlingguy.composer/tasks/global-require.yml +++ b/provisioning/roles/geerlingguy.composer/tasks/global-require.yml @@ -1,11 +1,12 @@ --- - name: Install configured globally-required packages. - become: yes - become_user: "{{ composer_home_owner }}" - shell: > - COMPOSER_HOME={{ composer_home_path }} + command: > {{ composer_path }} global require {{ item.name }}:{{ item.release | default('@stable') }} --no-progress creates={{ composer_home_path }}/vendor/{{ item.name }} + environment: + COMPOSER_HOME: "{{ composer_home_path }}" + become: yes + become_user: "{{ composer_home_owner }}" register: composer_global_require_result with_items: "{{ composer_global_packages }}" diff --git a/provisioning/roles/geerlingguy.composer/tasks/main.yml b/provisioning/roles/geerlingguy.composer/tasks/main.yml index 6a65e991f..0a19deb3a 100644 --- a/provisioning/roles/geerlingguy.composer/tasks/main.yml +++ b/provisioning/roles/geerlingguy.composer/tasks/main.yml @@ -42,6 +42,8 @@ state: directory - name: Add GitHub OAuth token for Composer (if configured). + become: yes + become_user: "{{ composer_home_owner }}" template: src: "auth.json.j2" dest: "{{ composer_home_path }}/auth.json" @@ -51,3 +53,6 @@ - include: global-require.yml when: composer_global_packages|length > 0 + +- include: project-bin.yml + when: composer_add_project_to_path diff --git a/provisioning/roles/geerlingguy.composer/tasks/project-bin.yml b/provisioning/roles/geerlingguy.composer/tasks/project-bin.yml new file mode 100644 index 000000000..3f9112e36 --- /dev/null +++ b/provisioning/roles/geerlingguy.composer/tasks/project-bin.yml @@ -0,0 +1,6 @@ +--- +- name: Add composer_project_path bin directory to global $PATH. + template: + src: composer-project.sh.j2 + dest: /etc/profile.d/composer-project.sh + mode: 0644 diff --git a/provisioning/roles/geerlingguy.composer/templates/composer-project.sh.j2 b/provisioning/roles/geerlingguy.composer/templates/composer-project.sh.j2 new file mode 100644 index 000000000..1ca9be7de --- /dev/null +++ b/provisioning/roles/geerlingguy.composer/templates/composer-project.sh.j2 @@ -0,0 +1 @@ +export PATH={{ composer_project_path }}/vendor/bin:$PATH diff --git a/provisioning/roles/geerlingguy.composer/tests/requirements.yml b/provisioning/roles/geerlingguy.composer/tests/requirements.yml index 86d9ed78e..8263a0c90 100644 --- a/provisioning/roles/geerlingguy.composer/tests/requirements.yml +++ b/provisioning/roles/geerlingguy.composer/tests/requirements.yml @@ -1,4 +1,5 @@ --- - src: geerlingguy.repo-remi +- src: geerlingguy.repo-dotdeb - src: geerlingguy.git - src: geerlingguy.php diff --git a/provisioning/roles/geerlingguy.composer/tests/test.yml b/provisioning/roles/geerlingguy.composer/tests/test.yml index 95b5fa7a4..19e8995cc 100644 --- a/provisioning/roles/geerlingguy.composer/tests/test.yml +++ b/provisioning/roles/geerlingguy.composer/tests/test.yml @@ -13,12 +13,27 @@ pre_tasks: - name: Update apt cache. - apt: update_cache=yes + apt: update_cache=yes cache_valid_time=600 when: ansible_distribution == 'Ubuntu' + - name: Set php_packages for PHP 7.0 Debian 8 install. + set_fact: + php_packages: + - php7.0-common + - php7.0-cli + - php7.0-dev + - php7.0-fpm + - libpcre3-dev + - php7.0-opcache + - php7.0-apcu + - php7.0-xml + when: ansible_distribution == 'Debian' + roles: - role: geerlingguy.repo-remi when: ansible_os_family == 'RedHat' and ansible_distribution != 'Fedora' + - role: geerlingguy.repo-dotdeb + when: ansible_distribution == 'Debian' - geerlingguy.git - geerlingguy.php - role_under_test