Files
2022-03-23 05:44:42 +01:00

73 lines
2.3 KiB
Groovy

@Library('jenkins-common') _
utils.initProperties()
def appName = 'vendor-scheduler'
def databaseName = 'vendor-scheduler'
def databaseHost = 'localhost'
def databasePort = '5432'
def databasePool = '10'
def databaseUser = 'postgres'
def databasePass = 'vaequ7Luah2gup7aaz3U'
testEnv = [
"DATABASE_NAME=${databaseName}",
"DATABASE_HOST=${databaseHost}",
"DATABASE_PORT=${databasePort}",
"DATABASE_POOL=${databasePool}",
"DATABASE_USERNAME=${databaseUser}",
"DATABASE_PASSWORD=${databasePass}",
"APP_NAME=${appName}",
"LOG_LEVEL=debug",
"RAILS_MAX_THREADS=5",
"PORT=5090",
"SECRET_KEY_BASE=abc123",
"TMPDIR=/tmp"
]
utils.onNode(nodeLabel: 'ubuntu-ruby-255') {
String version = utils.stagesGitCheckout()
stage('Save version') {
writeFile file: 'VERSION', text: version
}
stage('Run tests') {
withEnv(testEnv) {
sh '''
apt-get update
apt-get -y install postgresql-client libcurl3
gem install bundler --version=`sed -e '$!d' Gemfile.lock | xargs` --no-ri --no-rdoc
bundle install --path vendor --without production --with test development
docker run --rm --name postgres-${APP_NAME} -p${DATABASE_PORT}:5432 -e POSTGRES_PASSWORD=${DATABASE_PASSWORD} -d postgres:11
bundle exec rake db:create db:schema:load db:migrate RAILS_ENV=test
bundle exec rspec
docker stop postgres-${APP_NAME}
'''.stripIndent()
}
ruby.publishCoberturaReports()
}
//ruby.stagesRunCheckstyle() // TODO: reenable when we move to Ruby 2.2/later
stage('Create artifact for S3') {
withEnv([
"appName=${appName}",
"version=${version}"
]) {
sh '''
mkdir ${appName}-synced
rsync -av --exclude 'vendor' --exclude ${appName}-synced --exclude '.git' --include '*/' --include '*' . ${appName}-synced/
mv ${appName}-synced ${appName}
zip -r ${appName}-${version}.zip ${appName} -x '.git/*'
'''.stripIndent()
}
}
withAWS(credentials:'aws-s3') {
utils.stagesUploadArtifactToS3(includePathPattern:"${appName}*.zip", "${appName}", 'vle')
}
}