project-config/jenkins/jobs/javascript.yaml
Michael Krotscheck 597a0b965b Added npm-publish-tarball
This adds an npm job that runs npm-pack, and then renames the
tarballs to match our versioning scheme before uploading them to
the tarball host.

The `npm pack` command commits the current project to the local
npm cache directory, which triggers a full lifecycle run (prepublish,
etc). This generates a tarball with all assets listed in the package's
"files" field, inside the npm cache. This tarball is then copied back
to the working directory.

Since the default naming is not helpful, the job then immediately
renames it before the tarballs are published, using our usual
version names.

This job is then used by ironic-webclient. Note that this commit
removes 'bare-precise' as a node option, because Ubuntu precise does
not package a recent enough version of nodejs for any of this.

Change-Id: Ifb7898f136fafae70b5b0cd2727cc478034667c7
2015-09-22 11:39:48 -07:00

151 lines
4.1 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:
- console-log
- tarball
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}'
- job-group:
name: javascript-jobs
jobs:
- 'gate-{name}-npm-run-{command}':
command: 'lint'
- 'gate-{name}-npm-run-{command}':
command: 'test'