103 lines
4.2 KiB
Groovy
103 lines
4.2 KiB
Groovy
pipeline {
|
|
agent any
|
|
options {
|
|
disableConcurrentBuilds()
|
|
buildDiscarder(logRotator(numToKeepStr: '10'))
|
|
}
|
|
parameters {
|
|
string(
|
|
name: 'CONF_PREFIX', defaultValue: 'production-',
|
|
description: 'Will be appended with the language'
|
|
)
|
|
string(
|
|
name: 'LANGUAGES', defaultValue: 'en fr',
|
|
description: 'Space-separated list of locales to build'
|
|
)
|
|
booleanParam(name: 'SKIP_TESTS', defaultValue: true, description: 'Skip tests')
|
|
string(
|
|
name: 'PUBLISH_URL', defaultValue: 'https://nexus.valuya.be/nexus/repository',
|
|
description: 'Deployment repository url'
|
|
)
|
|
string(
|
|
name: 'PUBLISH_REPO', defaultValue: 'web-snapshots',
|
|
description: 'Deployment repository'
|
|
)
|
|
}
|
|
stages {
|
|
stage ('Install') {
|
|
steps {
|
|
nodejs(nodeJSInstallationName: 'node 10', configId: 'npm-global-config') {
|
|
ansiColor('xterm') {
|
|
sh '''
|
|
rm -rfv dist*
|
|
npm install
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage ('Build') {
|
|
steps {
|
|
withCredentials([usernameColonPassword(credentialsId: 'nexus-basic-auth', variable: 'NEXUS_BASIC_AUTH')]) {
|
|
nodejs(nodeJSInstallationName: 'node 10', configId: 'npm-global-config') { catchError {
|
|
ansiColor('xterm') {
|
|
sh '''
|
|
export DATE="$(date -Iseconds)"
|
|
export COMMIT="$(git rev-parse --short HEAD)"
|
|
echo '{"date":"'$DATE'","commit": "'$COMMIT'"}' > src/assets/buildinfo.json
|
|
|
|
for LANG in $LANGUAGES ; do
|
|
CONF_NAME="${CONF_PREFIX}${LANG}"
|
|
|
|
./node_modules/.bin/ng build \
|
|
-c "$CONF_NAME"
|
|
done
|
|
'''
|
|
}
|
|
}}}
|
|
}
|
|
}
|
|
stage ('Publish') {
|
|
steps {
|
|
withCredentials([usernameColonPassword(credentialsId: 'nexus-basic-auth', variable: 'NEXUS_BASIC_AUTH')]) {
|
|
ansiColor('xterm') {
|
|
nodejs(nodeJSInstallationName: 'node 10', configId: 'npm-global-config') {
|
|
sh '''
|
|
export DATE="$(date -Iseconds)"
|
|
export COMMIT="$(git rev-parse --short HEAD)"
|
|
|
|
for LANG in $LANGUAGES ; do
|
|
export ARCHIVE="charlyghislaindotcom-${COMMIT}-$LANG.tgz"
|
|
|
|
# Compress
|
|
cd dist/${LANG}/
|
|
tar -cvzf ../${ARCHIVE} ./
|
|
cd ../..
|
|
|
|
# Upload archives
|
|
curl -v --user $NEXUS_BASIC_AUTH --upload-file dist/${ARCHIVE} \
|
|
${PUBLISH_URL}/${PUBLISH_REPO}/com/charlyghislain/charlyghislaindotcom/${ARCHIVE}
|
|
|
|
# Create .latest 'links' (branch heads) if required
|
|
if [ "${BRANCH_NAME}" = "master" ] ; then
|
|
export ARCHIVE_LINK="master.${LANG}.latest"
|
|
echo "$ARCHIVE" > ./${ARCHIVE_LINK}
|
|
curl -v --user $NEXUS_BASIC_AUTH --upload-file ./${ARCHIVE_LINK} \
|
|
${PUBLISH_URL}/${PUBLISH_REPO}/com/charlyghislain/charlyghislaindotcom/${ARCHIVE_LINK}
|
|
|
|
elif [ "${BRANCH_NAME}" = "dev" ] ; then
|
|
export ARCHIVE_LINK="dev.${LANG}.latest"
|
|
echo "$ARCHIVE" > ./${ARCHIVE_LINK}
|
|
curl -v --user $NEXUS_BASIC_AUTH --upload-file ./${ARCHIVE_LINK} \
|
|
${PUBLISH_URL}/${PUBLISH_REPO}/com/charlyghislain/charlyghislaindotcom/${ARCHIVE_LINK}
|
|
fi
|
|
done
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|