project-config/jenkins/jobs/javascript.yaml
Clark Boylan 845b4d0718 Run npm upload job on relase slave
We need to be explicit that we want the npm upload job to run on the
release slave otherwise gearman will attempt to run it on the default
slave label which will fail because that job won't be registered.

To do this rename the job so that it matches existing convention which
makes the regex easier to read/write. Then update the reuseable slave
regex to include the job which will force it to run on release slave
without offlining the slave.

Change-Id: I26355680f2d8fc3fa5f514370d1586deb701c21c
2015-10-07 15:56:50 -07:00

171 lines
4.5 KiB
YAML

# Executes a command registered inside of package.json. For more information on
# how this works, see https://docs.npmjs.com/cli/run-script. This build assumes
# that whatever is being run under the hood, it will pipe its output to the
# ./reports directory in the projects' root directory. This output is
# subsequently copied to static.openstack.org (the clickthrough target from
# gerrit).
- job-template:
name: 'gate-{name}-npm-run-{command}'
wrappers:
- build-timeout:
timeout: 40
- timestamps
builders:
- npm-install
- xvfb-install
- chrome-install
- firefox-install
- revoke-sudo
- xvfb-start
- gerrit-git-prep
- npm-run:
command: '{command}'
- assert-no-extra-files
publishers:
- console-log
- coverage-log
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: 'reports/**'
keep-hierarchy: true
copy-after-failure: true
node: '{node}'
# Builds and uploads a tarball using NPM.
- job-template:
name: '{name}-npm-publish-tarball'
builders:
- npm-install
- revoke-sudo
- gerrit-git-prep
# This will build ./{name}-{version}.tgz, where {version} is read from
# package.json.
- npm-run:
command: 'pack'
- shell: |
#!/bin/bash -xe
/usr/local/jenkins/slave_scripts/version-properties.sh
source version.properties
# Move the autogenerated versioned tarball to the one we like.
mkdir -p dist
cp {name}-*.tgz dist/{name}-$PROJECT_VER.tar.gz
cp {name}-*.tgz dist/{name}-latest.tar.gz
publishers:
- tarball:
project: '{name}'
site: '{tarball-site}'
- console-log
node: '{node}'
# Builds a draft application and uploads it to docs-draft. To use this build,
# your Gruntfile must declare a target named "build:draft"
- job-template:
name: 'gate-{name}-js-draft'
wrappers:
- build-timeout:
timeout: 40
- timestamps
builders:
- npm-install
- revoke-sudo
- gerrit-git-prep
- js-build:
command: 'build:draft'
envlist: 'grunt'
project: '{name}'
- assert-no-extra-files
publishers:
- console-log
- coverage-log
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: 'reports/**'
keep-hierarchy: true
copy-after-failure: true
# We're uploading the compiled app as a pre-release sanity check,
# much like we do with docs builds.
- target: 'docs-draft/$LOG_PATH'
source: 'dist/**'
keep-hierarchy: true
copy-after-failure: false
node: '{node}'
# Builds a release tarball
- job-template:
name: '{name}-js-release-{branch-designator}'
builders:
- npm-install
- revoke-sudo
- gerrit-git-prep
- js-build:
command: 'build'
envlist: 'grunt'
- shell: |
#!/bin/bash -xe
/usr/local/jenkins/slave_scripts/version-properties.sh
source version.properties
# Clean/create a tarball directory
rm -rf tarballs
mkdir -p tarballs
# Create an archive tarball.
tar -czf {name}-$PROJECT_VER.tar.gz dist/
cp {name}-$PROJECT_VER.tar.gz tarballs/{name}-latest.tar.gz
mv {name}-$PROJECT_VER.tar.gz tarballs/
publishers:
- console-log
- coverage-log
- scp:
site: 'static.openstack.org'
files:
- target: 'logs/$LOG_PATH'
source: 'reports/**'
keep-hierarchy: true
copy-after-failure: true
- target: 'tarballs/{name}/'
source: 'tarballs/*.tar.gz'
keep-hierarchy: false
copy-after-failure: false
node: '{node}'
# Uploads a release tarball to npm.
- job-template:
name: '{name}-npm-upload'
node: release
builders:
- shell: |
/usr/local/jenkins/slave_scripts/npm-tarball-upload.sh {name} {tarball-site}
publishers:
- console-log
- job-group:
name: javascript-jobs
jobs:
- 'gate-{name}-npm-run-{command}':
command: 'lint'
- 'gate-{name}-npm-run-{command}':
command: 'test'
- job-group:
name: publish-to-npm
jobs:
- '{name}-npm-publish-tarball'
- '{name}-npm-upload'