diff --git a/roles/install-javascript-packages/README.rst b/roles/install-javascript-packages/README.rst index 96bb947ac..529c9dfcb 100644 --- a/roles/install-javascript-packages/README.rst +++ b/roles/install-javascript-packages/README.rst @@ -6,3 +6,9 @@ Install javascript dependencies needed for a project :default: {{ zuul.project.src_dir }} The directory to work in. + +.. zuul:rolevar:: tox_constraints_file + + Path to a pip constraints file. Will set the + ``UPPER_CONSTRAINTS_FILE`` environment variable. Useful if npm + ``postinstall`` runs tox. diff --git a/roles/install-javascript-packages/defaults/main.yaml b/roles/install-javascript-packages/defaults/main.yaml index 9739eb171..79e5a2e91 100644 --- a/roles/install-javascript-packages/defaults/main.yaml +++ b/roles/install-javascript-packages/defaults/main.yaml @@ -1 +1,3 @@ +npm_environment: + DISPLAY: ':99' zuul_work_dir: "{{ zuul.project.src_dir }}" diff --git a/roles/install-javascript-packages/tasks/main.yaml b/roles/install-javascript-packages/tasks/main.yaml index 3c56b89f9..70f3443f8 100644 --- a/roles/install-javascript-packages/tasks/main.yaml +++ b/roles/install-javascript-packages/tasks/main.yaml @@ -1,3 +1,25 @@ +- name: Check to see if the constraints file exists + stat: + path: "{{ tox_constraints_file }}" + get_checksum: false + get_mime: false + get_md5: false + register: stat_results + when: tox_constraints_file is defined + +- name: Fail if constraints file is missing + when: tox_constraints_file is defined and not stat_results.stat.exists + fail: + msg: tox_constraints_file is defined but was not found + +- name: Record file location + set_fact: + tox_constraints_env: + TOX_CONSTRAINTS_FILE: "{{ tox_constraints_file }}" + # Backward compatibility, to be removed + UPPER_CONSTRAINTS_FILE: "{{ tox_constraints_file }}" + when: tox_constraints_file is defined + - name: Check for yarn.lock file stat: path: "{{ zuul_work_dir }}/yarn.lock" @@ -16,8 +38,7 @@ - name: Install npm dependencies command: npm install --verbose - environment: - DISPLAY: ':99' + environment: "{{ npm_environment|combine(tox_constraints_env|default({})) }}" args: chdir: "{{ zuul_work_dir }}" when: not yarn_lock.stat.exists