Add upload-npm role

We need a role for uploading content to npm. The old script assumed a
global npm install - but as this runs on the executor we shouldn't
assume that. Use nvm to install node into the work_dir and use the npm
from that node installation.

Change-Id: I7f7c031ce754838776043325025fe5928cd36135
This commit is contained in:
Monty Taylor 2017-10-09 15:41:20 -05:00
parent ad1ce4fc2f
commit 20f7528a09
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
4 changed files with 71 additions and 0 deletions

View File

@ -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.

View File

@ -0,0 +1 @@
npm_registry_url: "{{ npm_info.registry_url|default('//registry.npmjs.org') }}"

View File

@ -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

View File

@ -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 }}