From efc8402cbdae64a8d71add1e427a888795402c37 Mon Sep 17 00:00:00 2001 From: Michael Krotscheck Date: Thu, 2 Jul 2015 15:43:32 -0700 Subject: [PATCH] Added NPM Publishing credentials to pypi slave. This patch adds an .npmrc file for the jenkins user on our pypi slave. Note that actually publishing to npm will only work on trusty or later. This patch requires a manual step, where a member of infra-root registers the openstackci user on npm, and injects the password into hiera. Note that npm credentials require a user, password, and URL, some of which are specified in site.pp. Change-Id: I13fa91500a7b189e5fb6e915968727e8c1f2a1f4 --- manifests/site.pp | 3 +++ .../openstack_project/manifests/release_slave.pp | 16 ++++++++++++++++ modules/openstack_project/templates/npmrc.erb | 12 ++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 modules/openstack_project/templates/npmrc.erb diff --git a/manifests/site.pp b/manifests/site.pp index f547764cc5..73639fede9 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -725,6 +725,9 @@ node 'release.slave.openstack.org' { mavencentral_password => hiera('mavencentral_org_password', 'XXX'), puppet_forge_username => hiera('puppet_forge_username', 'username'), puppet_forge_password => hiera('puppet_forge_password', 'XXX'), + npm_username => 'openstackci', + npm_userpassword => hiera('npm_user_password', 'XXX'), + npm_userurl => 'https://openstack.org', } } diff --git a/modules/openstack_project/manifests/release_slave.pp b/modules/openstack_project/manifests/release_slave.pp index 1eb0646504..0f59b29ff2 100644 --- a/modules/openstack_project/manifests/release_slave.pp +++ b/modules/openstack_project/manifests/release_slave.pp @@ -28,6 +28,9 @@ class openstack_project::release_slave ( $jenkins_gitfullname = 'OpenStack Jenkins', $jenkins_gitemail = 'jenkins@openstack.org', $project_config_repo = 'https://git.openstack.org/openstack-infra/project-config', + $npm_username, + $npm_userpassword, + $npm_userurl, ) { class { 'openstack_project::slave': ssh_key => $jenkins_ssh_public_key, @@ -50,6 +53,10 @@ class openstack_project::release_slave ( require => Class['pip'], } + package { ['nodejs', 'nodejs-legacy', 'npm']: + ensure => latest + } + file { '/home/jenkins/.pypirc': ensure => present, owner => 'jenkins', @@ -59,6 +66,15 @@ class openstack_project::release_slave ( require => File['/home/jenkins'], } + file { '/home/jenkins/.npmrc': + ensure => present, + owner => 'jenkins', + group => 'jenkins', + mode => '0600', + content => template('openstack_project/npmrc.erb'), + require => File['/home/jenkins'], + } + file { '/home/jenkins/.jenkinsci-curl': ensure => present, owner => 'jenkins', diff --git a/modules/openstack_project/templates/npmrc.erb b/modules/openstack_project/templates/npmrc.erb new file mode 100644 index 0000000000..9b267d8ad2 --- /dev/null +++ b/modules/openstack_project/templates/npmrc.erb @@ -0,0 +1,12 @@ +<% + require 'base64' +%> +init.author.name=<%= jenkins_gitfullname %> +init.author.email=<%= jenkins_gitemail %> +init.author.url=<%= npm_userurl %> +tag-version-prefix= +sign-git-tag=true + +//registry.npmjs.org/:username=<%= npm_username %> +//registry.npmjs.org/:_password=<%= Base64.encode64(npm_userpassword) %> +//registry.npmjs.org/:email=<%= jenkins_gitemail %>