diff --git a/roles/upload-npm/README.rst b/roles/upload-npm/README.rst new file mode 100644 index 000000000..2b0f00f0d --- /dev/null +++ b/roles/upload-npm/README.rst @@ -0,0 +1,39 @@ +Upload javascript packages to npm + +**Role Variables** + +.. zuul:rolevar:: npm_info + + Complex argument which contains the information about the npm + server as well as the authentication information needed. + It is expected that this argument comes from a `Secret`. + This role expects to be run on the executor. + + .. zuul:rolevar:: username + + Username to use to log in to npm. + + .. zuul:rolevar:: password + + Password to use to log in to npm. + + .. zuul:rolevar:: email + + Email associated with the npm account. + + .. zuul:rolevar:: author_name + + npm author name. + + .. zuul:rolevar:: author_url + + npm author url. + + .. zuul:rolevar:: author_email + + npm author email. + + .. zuul:rolevar:: registry_url + :default: //registry.npmjs.org + + URL of npm registry server. diff --git a/roles/upload-npm/defaults/main.yaml b/roles/upload-npm/defaults/main.yaml new file mode 100644 index 000000000..49998a283 --- /dev/null +++ b/roles/upload-npm/defaults/main.yaml @@ -0,0 +1 @@ +npm_registry_url: "{{ npm_info.registry_url|default('//registry.npmjs.org') }}" diff --git a/roles/upload-npm/tasks/main.yaml b/roles/upload-npm/tasks/main.yaml new file mode 100644 index 000000000..8d8d26377 --- /dev/null +++ b/roles/upload-npm/tasks/main.yaml @@ -0,0 +1,21 @@ +# This is not optimized, but allows for getting a version of node in the +# home dir. +- name: Create .npmrc configuration file + template: + dest: "~/.npmrc" + mode: 0400 + src: .npmrc.j2 + +- name: Install NVM + git: + repo: 'https://github.com/creationix/nvm' + dest: '~/.nvm' + version: v0.33.5 + +- name: Upload tarball to npm + shell: + executable: /bin/bash + cmd: | + nvm install node + nvm use node + npm publish --ignore-scripts {{ zuul.executor.work_dir }}/artifacts/{{ zuul.project.short_name }}-{{ project_ver }}.tar.gz diff --git a/roles/upload-npm/templates/.npmrc.j2 b/roles/upload-npm/templates/.npmrc.j2 new file mode 100644 index 000000000..01ed2e2da --- /dev/null +++ b/roles/upload-npm/templates/.npmrc.j2 @@ -0,0 +1,10 @@ +init.author.name={{ npm_info.author_name }} +init.author.email={{ npm_info.author_email }} +init.author.url={{ npm_info.author_url }} +tag-version-prefix= +sign-git-tag=true + +//registry.npmjs.org/:username={{ npm_info.username }} +//registry.npmjs.org/:_password={{ npm_info.password }} + +//registry.npmjs.org/:email={{ npm_info.author_email }}