diff --git a/doc/source/js-roles.rst b/doc/source/js-roles.rst index 595262a2d..bae72e7cf 100644 --- a/doc/source/js-roles.rst +++ b/doc/source/js-roles.rst @@ -2,6 +2,7 @@ Javascript Roles ================ .. zuul:autorole:: ensure-javascript-packages +.. zuul:autorole:: ensure-nodejs .. zuul:autorole:: fetch-javascript-content-tarball .. zuul:autorole:: fetch-javascript-output .. zuul:autorole:: fetch-javascript-tarball diff --git a/playbooks/javascript/pre.yaml b/playbooks/javascript/pre.yaml index 46b467645..8935d8a01 100644 --- a/playbooks/javascript/pre.yaml +++ b/playbooks/javascript/pre.yaml @@ -1,5 +1,5 @@ - hosts: all roles: - - install-nodejs + - ensure-nodejs - install-yarn - ensure-javascript-packages diff --git a/playbooks/markdownlint/pre.yaml b/playbooks/markdownlint/pre.yaml index c8180f945..968fc1cd6 100644 --- a/playbooks/markdownlint/pre.yaml +++ b/playbooks/markdownlint/pre.yaml @@ -1,5 +1,5 @@ - name: Ensure Markdownlint is installed via NPM hosts: all roles: - - install-nodejs + - ensure-nodejs - ensure-markdownlint diff --git a/roles/ensure-nodejs/README.rst b/roles/ensure-nodejs/README.rst new file mode 100644 index 000000000..09f7e0679 --- /dev/null +++ b/roles/ensure-nodejs/README.rst @@ -0,0 +1,6 @@ +Install NodeJS from nodesource + +**Role Variables** + +.. zuul:rolevar:: node_version + :default: 6 diff --git a/roles/ensure-nodejs/defaults/main.yaml b/roles/ensure-nodejs/defaults/main.yaml new file mode 100644 index 000000000..f53b7ceef --- /dev/null +++ b/roles/ensure-nodejs/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +node_version: 6 diff --git a/roles/ensure-nodejs/files/00-nodesource.pref b/roles/ensure-nodejs/files/00-nodesource.pref new file mode 100644 index 000000000..c83050692 --- /dev/null +++ b/roles/ensure-nodejs/files/00-nodesource.pref @@ -0,0 +1,3 @@ +Package: nodejs +Pin: origin deb.nodesource.com +Pin-Priority: 900 diff --git a/roles/ensure-nodejs/tasks/main.yaml b/roles/ensure-nodejs/tasks/main.yaml new file mode 100644 index 000000000..553099f0c --- /dev/null +++ b/roles/ensure-nodejs/tasks/main.yaml @@ -0,0 +1,60 @@ +- name: Update apt cache + apt: + update_cache: yes + become: yes + +- name: Install prereqs + package: + name: apt-transport-https + state: present + become: yes + +- name: Pin nodejs installs to nodesource + copy: + src: 00-nodesource.pref + dest: /etc/apt/preferences.d/00-nodesource.pref + become: yes + +- name: Add nodesource repository key + apt_key: + url: "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" + become: yes + +- name: Add nodesource apt source repository + apt_repository: + repo: "deb-src https://deb.nodesource.com/node_{{ node_version }}.x {{ ansible_distribution_release }} main" + state: present + become: yes + +- name: Add nodesource apt repository + apt_repository: + repo: "deb https://deb.nodesource.com/node_{{ node_version }}.x {{ ansible_distribution_release }} main" + state: present + update_cache: yes + become: yes + +# Use template so that we can easily update this in the future to be able to +# use a mirror location. +- name: Pin NodeJS to nodesource apt repository + become: yes + template: + dest: /etc/apt/preferences.d/nodejs.pref + group: root + mode: 0644 + owner: root + src: nodejs.pref.j2 + +- name: Install NodeJS from nodesource + package: + name: nodejs + state: latest + become: yes + tags: + # Ignore ANSIBLE0010: We really want latest version + - skip_ansible_lint + +- name: Output node version + command: node --version + +- name: Output npm version + command: npm --version diff --git a/roles/ensure-nodejs/templates/nodejs.pref.j2 b/roles/ensure-nodejs/templates/nodejs.pref.j2 new file mode 100644 index 000000000..c83050692 --- /dev/null +++ b/roles/ensure-nodejs/templates/nodejs.pref.j2 @@ -0,0 +1,3 @@ +Package: nodejs +Pin: origin deb.nodesource.com +Pin-Priority: 900 diff --git a/roles/install-nodejs/README.rst b/roles/install-nodejs/README.rst index 09f7e0679..402880d62 100644 --- a/roles/install-nodejs/README.rst +++ b/roles/install-nodejs/README.rst @@ -1,6 +1 @@ -Install NodeJS from nodesource - -**Role Variables** - -.. zuul:rolevar:: node_version - :default: 6 +.. warning:: Deprecated, use ensure-nodejs instead. diff --git a/roles/install-nodejs/tasks/main.yaml b/roles/install-nodejs/tasks/main.yaml index 553099f0c..4a0b1d107 100644 --- a/roles/install-nodejs/tasks/main.yaml +++ b/roles/install-nodejs/tasks/main.yaml @@ -1,60 +1,3 @@ -- name: Update apt cache - apt: - update_cache: yes - become: yes - -- name: Install prereqs - package: - name: apt-transport-https - state: present - become: yes - -- name: Pin nodejs installs to nodesource - copy: - src: 00-nodesource.pref - dest: /etc/apt/preferences.d/00-nodesource.pref - become: yes - -- name: Add nodesource repository key - apt_key: - url: "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" - become: yes - -- name: Add nodesource apt source repository - apt_repository: - repo: "deb-src https://deb.nodesource.com/node_{{ node_version }}.x {{ ansible_distribution_release }} main" - state: present - become: yes - -- name: Add nodesource apt repository - apt_repository: - repo: "deb https://deb.nodesource.com/node_{{ node_version }}.x {{ ansible_distribution_release }} main" - state: present - update_cache: yes - become: yes - -# Use template so that we can easily update this in the future to be able to -# use a mirror location. -- name: Pin NodeJS to nodesource apt repository - become: yes - template: - dest: /etc/apt/preferences.d/nodejs.pref - group: root - mode: 0644 - owner: root - src: nodejs.pref.j2 - -- name: Install NodeJS from nodesource - package: - name: nodejs - state: latest - become: yes - tags: - # Ignore ANSIBLE0010: We really want latest version - - skip_ansible_lint - -- name: Output node version - command: node --version - -- name: Output npm version - command: npm --version +- name: Include ensure-nodejs. + include_role: + name: ensure-nodejs diff --git a/zuul-tests.d/js-roles-jobs.yaml b/zuul-tests.d/js-roles-jobs.yaml index 72e0f7432..0f7624c31 100644 --- a/zuul-tests.d/js-roles-jobs.yaml +++ b/zuul-tests.d/js-roles-jobs.yaml @@ -1,11 +1,11 @@ - job: - name: zuul-jobs-test-install-nodejs - description: Test the install-nodejs role + name: zuul-jobs-test-ensure-nodejs + description: Test the ensure-nodejs role files: - - roles/install-nodejs/.* + - roles/ensure-nodejs/.* run: test-playbooks/simple-role-test.yaml vars: - role_name: install-nodejs + role_name: ensure-nodejs - job: @@ -35,7 +35,7 @@ - project: check: jobs: &id001 - - zuul-jobs-test-install-nodejs + - zuul-jobs-test-ensure-nodejs - zuul-jobs-test-fetch-javascript-tarball - zuul-jobs-test-fetch-javascript-tarball-synchronize gate: