Skip to content

Commit 0b951d4

Browse files
authored
Merge pull request #1 from wearefine/add_skip_test
Add skip test
2 parents 8404e87 + e711aa5 commit 0b951d4

File tree

7 files changed

+147
-98
lines changed

7 files changed

+147
-98
lines changed

CHANGELOG.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,25 @@
1-
# rails-jenkins-shared-libraries Changelog
1+
# Changelog
2+
All notable changes to this project will be documented in this file.
23

3-
## 1.0.0
4+
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5+
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6+
7+
## [Unreleased] - TBD
8+
9+
## [v1.1.0] - 11-16-2017
10+
### Added
11+
- SKIP_TESTS parameter so you can just deploy code
12+
- More debug output in railsRvm function
13+
14+
### Fixed
15+
- ruby_string being undeclared
16+
- DEBUG not setting the env var when passing in true
17+
18+
### Updated
19+
- railsinstallDeps is now its own function
20+
- railsDeploy is now its own function
21+
- SQL commands now clean old DBs, and Users before adding new ones at the start of the build
22+
23+
## [v1.0.0]
424

525
- EVERYTHING :tada:

Jenkinsfile.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ rails {
1313
DEPLOY_VARS = [string(credentialsId: 'secret-text', variable: 'secret-text'), usernameColonPassword(credentialsId: 'git_access', variable: 'git-login-creds')]
1414
SLACK_CHANNEL = '#deploys'
1515
DEBUG = 'false'
16+
SKIP_TESTS = 'false'
1617
}

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ rails {
5959
DEPLOY_VARS = [string(credentialsId: 'secret-text', variable: 'secret-text'), usernameColonPassword(credentialsId: 'git_access', variable: 'git-login-creds')]
6060
SLACK_CHANNEL = '#deploys'
6161
DEBUG = 'false'
62+
SKIP_TESTS = 'false'
6263
}
6364
```
6465

@@ -81,6 +82,7 @@ rails {
8182
- **DEPLOY_VARS:** Credential strings you wish to have set during deployment only. See [Deploy Vars Configuration](#Deploy Vars Configuration) for more details. [List]
8283
- **SLACK_CHANNEL:** Specify the Slack channel to use for notifications. [String] Default: #puppet
8384
- **DEBUG:** Turn off Slack notifications and turn on more console output. [String] Default: false
85+
- **SKIP_TESTS:** Don't run tests just checkout and deploy [String] Default: false
8486

8587
## Testing Framework Support
8688

vars/rails.groovy

Lines changed: 23 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,20 @@ def call(body) {
5353
config.DEBUG = 'false'
5454
env.DEBUG = 'false'
5555
}
56+
else {
57+
env.DEBUG = 'true'
58+
}
5659
if (!config.NODE_INSTALL_NAME) {
5760
error 'NODE_INSTALL_NAME is required'
5861
}
5962
if (!config.SSH_AGENT_ID) {
6063
error 'SSH_AGENT_ID is required'
6164
}
65+
if (!config.SKIP_TESTS){
66+
config.SKIP_TESTS = 'false'
67+
} else {
68+
env.SKIP_TESTS = config.SKIP_TESTS
69+
}
6270

6371
node {
6472
timestamps {
@@ -79,6 +87,7 @@ def call(body) {
7987
throw e
8088
}
8189

90+
if (config.SKIP_TESTS == 'false') {
8291
getDatabaseConnection(id: 'test_db', type: 'GLOBAL') {
8392
nodejs(nodeJSInstallationName: config.NODE_INSTALL_NAME) {
8493
if (config.DEBUG == 'true') {
@@ -102,6 +111,10 @@ def call(body) {
102111
}
103112
env.MYSQL_DATABASE = db_name
104113

114+
sql connection: 'test_db', sql: "DROP DATABASE IF EXISTS ${env.MYSQL_DATABASE};"
115+
sql connection: 'test_db', sql: "REVOKE ALL PRIVILEGES, GRANT OPTION FROM ${env.MYSQL_USER}@'%';"
116+
sql connection: 'test_db', sql: "DROP USER ${env.MYSQL_USER}@'%';"
117+
105118
sql connection: 'test_db', sql: "CREATE DATABASE IF NOT EXISTS ${env.MYSQL_DATABASE};"
106119
echo "SQL: CREATE DATABASE IF NOT EXISTS ${env.MYSQL_DATABASE};"
107120
sql connection: 'test_db', sql: "GRANT ALL ON ${env.MYSQL_DATABASE}.* TO \'${env.MYSQL_USER}\'@\'%\' IDENTIFIED BY \'${env.MYSQL_PASSWORD}\';"
@@ -116,22 +129,7 @@ def call(body) {
116129
throw e
117130
}
118131

119-
try {
120-
stage('Install Dependancies') {
121-
milestone label: 'Install Dependancies'
122-
retry(2) {
123-
railsRvm('bundle install')
124-
}
125-
currentBuild.result = 'SUCCESS'
126-
}
127-
} catch(Exception e) {
128-
currentBuild.result = 'FAILURE'
129-
sql connection: 'test_db', sql: "DROP DATABASE IF EXISTS ${env.MYSQL_DATABASE};"
130-
if (config.DEBUG == 'false') {
131-
railsSlack(config.SLACK_CHANNEL)
132-
}
133-
throw e
134-
}
132+
railsInstallDeps(config)
135133

136134
try {
137135
stage('Load Schema') {
@@ -143,7 +141,6 @@ def call(body) {
143141
}
144142
} catch(Exception e) {
145143
currentBuild.result = 'FAILURE'
146-
sql connection: 'test_db', sql: "DROP DATABASE IF EXISTS ${env.MYSQL_DATABASE};"
147144
if (config.DEBUG == 'false') {
148145
railsSlack(config.SLACK_CHANNEL)
149146
}
@@ -176,82 +173,13 @@ def call(body) {
176173
} catch(Exception e) {
177174
junit allowEmptyResults: true, keepLongStdio: true, testResults: 'testresults/*.xml'
178175
currentBuild.result = 'FAILURE'
179-
sql connection: 'test_db', sql: "DROP DATABASE IF EXISTS ${env.MYSQL_DATABASE};"
180176
if (config.DEBUG == 'false') {
181177
railsSlack(config.SLACK_CHANNEL)
182178
}
183179
throw e
184180
}
185181

186-
try {
187-
stage('Deploy') {
188-
milestone label: 'Deploy'
189-
sshagent([config.SSH_AGENT_ID]) {
190-
if (config.DEPLOY_VARS) {
191-
withCredentials(config.DEPLOY_VARS) {
192-
if (config.CAP_VERSION == '3'){
193-
if (env.BRANCH_NAME == 'master') {
194-
railsRvm('cap prod deploy')
195-
}
196-
else if(env.BRANCH_NAME == 'stage') {
197-
railsRvm('cap stage deploy')
198-
}
199-
else if(env.BRANCH_NAME == 'dev') {
200-
railsRvm('cap dev deploy')
201-
}
202-
railsOtherBuildEnvs()
203-
}
204-
if (config.CAP_VERSION == '2'){
205-
if (env.BRANCH_NAME == 'master') {
206-
railsRvm('cap deploy -S loc=prod')
207-
}
208-
else if(env.BRANCH_NAME == 'stage') {
209-
railsRvm('cap deploy -S loc=stage -S branch=stage')
210-
}
211-
else if(env.BRANCH_NAME == 'dev') {
212-
railsRvm('cap deploy -S loc=dev -S branch=dev')
213-
}
214-
railsOtherBuildEnvs()
215-
}
216-
}
217-
}
218-
else {
219-
if (config.CAP_VERSION == '3'){
220-
if (env.BRANCH_NAME == 'master') {
221-
railsRvm('cap prod deploy')
222-
}
223-
else if(env.BRANCH_NAME == 'stage') {
224-
railsRvm('cap stage deploy')
225-
}
226-
else if(env.BRANCH_NAME == 'dev') {
227-
railsRvm('cap dev deploy')
228-
}
229-
railsOtherBuildEnvs()
230-
}
231-
if (config.CAP_VERSION == '2'){
232-
if (env.BRANCH_NAME == 'master') {
233-
railsRvm('cap deploy -S loc=prod')
234-
}
235-
else if(env.BRANCH_NAME == 'stage') {
236-
railsRvm('cap deploy -S loc=stage -S branch=stage')
237-
}
238-
else if(env.BRANCH_NAME == 'dev') {
239-
railsRvm('cap deploy -S loc=dev -S branch=dev')
240-
}
241-
railsOtherBuildEnvs()
242-
}
243-
}
244-
}
245-
currentBuild.result = 'SUCCESS'
246-
}
247-
} catch(Exception e) {
248-
currentBuild.result = 'FAILURE'
249-
sql connection: 'test_db', sql: "DROP DATABASE IF EXISTS ${env.MYSQL_DATABASE};"
250-
if (config.DEBUG == 'false') {
251-
railsSlack(config.SLACK_CHANNEL)
252-
}
253-
throw e
254-
}
182+
railsDeploy(config)
255183

256184
try {
257185
stage('Clean Up') {
@@ -273,9 +201,14 @@ def call(body) {
273201
}
274202
} // railsNodejs
275203
} // railsDatabase
276-
} // timestamps
277-
if (config.DEBUG == 'false') {
278-
railsSlack(config.SLACK_CHANNEL)
204+
} // SKIP_TESTS
205+
else {
206+
railsInstallDeps(config)
207+
railsDeploy(config)
279208
}
209+
if (config.DEBUG == 'false') {
210+
railsSlack(config.SLACK_CHANNEL)
211+
}
212+
} // timestamps
280213
} // node
281214
}

vars/railsDeploy.groovy

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/usr/bin/env groovy
2+
3+
def call(Map config) {
4+
try {
5+
stage('Deploy') {
6+
milestone label: 'Deploy'
7+
sshagent([config.SSH_AGENT_ID]) {
8+
if (config.DEPLOY_VARS) {
9+
withCredentials(config.DEPLOY_VARS) {
10+
if (config.CAP_VERSION == '3'){
11+
if (env.BRANCH_NAME == 'master') {
12+
railsRvm('cap prod deploy')
13+
}
14+
else if(env.BRANCH_NAME == 'stage') {
15+
railsRvm('cap stage deploy')
16+
}
17+
else if(env.BRANCH_NAME == 'dev') {
18+
railsRvm('cap dev deploy')
19+
}
20+
railsOtherBuildEnvs()
21+
}
22+
if (config.CAP_VERSION == '2'){
23+
if (env.BRANCH_NAME == 'master') {
24+
railsRvm('cap deploy -S loc=prod')
25+
}
26+
else if(env.BRANCH_NAME == 'stage') {
27+
railsRvm('cap deploy -S loc=stage -S branch=stage')
28+
}
29+
else if(env.BRANCH_NAME == 'dev') {
30+
railsRvm('cap deploy -S loc=dev -S branch=dev')
31+
}
32+
railsOtherBuildEnvs()
33+
}
34+
}
35+
}
36+
else {
37+
if (config.CAP_VERSION == '3'){
38+
if (env.BRANCH_NAME == 'master') {
39+
railsRvm('cap prod deploy')
40+
}
41+
else if(env.BRANCH_NAME == 'stage') {
42+
railsRvm('cap stage deploy')
43+
}
44+
else if(env.BRANCH_NAME == 'dev') {
45+
railsRvm('cap dev deploy')
46+
}
47+
railsOtherBuildEnvs()
48+
}
49+
if (config.CAP_VERSION == '2'){
50+
if (env.BRANCH_NAME == 'master') {
51+
railsRvm('cap deploy -S loc=prod')
52+
}
53+
else if(env.BRANCH_NAME == 'stage') {
54+
railsRvm('cap deploy -S loc=stage -S branch=stage')
55+
}
56+
else if(env.BRANCH_NAME == 'dev') {
57+
railsRvm('cap deploy -S loc=dev -S branch=dev')
58+
}
59+
railsOtherBuildEnvs()
60+
}
61+
}
62+
}
63+
currentBuild.result = 'SUCCESS'
64+
}
65+
} catch(Exception e) {
66+
currentBuild.result = 'FAILURE'
67+
if (config.DEBUG == 'false') {
68+
railsSlack(config.SLACK_CHANNEL)
69+
}
70+
throw e
71+
}
72+
}

vars/railsInstallDeps.groovy

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#!/usr/bin/env groovy
2+
3+
def call(Map config) {
4+
try {
5+
stage('Install Dependancies') {
6+
milestone label: 'Install Dependancies'
7+
retry(2) {
8+
railsRvm('bundle install')
9+
}
10+
currentBuild.result = 'SUCCESS'
11+
}
12+
} catch(Exception e) {
13+
currentBuild.result = 'FAILURE'
14+
if (config.DEBUG == 'false') {
15+
railsSlack(config.SLACK_CHANNEL)
16+
}
17+
throw e
18+
}
19+
}

vars/railsRvm.groovy

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,20 @@
22

33
def call(String commands) {
44
if(env.BRANCH_NAME == 'master'){
5-
ruby_string = "${env.RUBY_VERSION}@${env.RUBY_GEMSET}"
5+
sh "bash -c \"source /usr/local/rvm/scripts/rvm && rvm use --install --create ${env.RUBY_VERSION}@${env.RUBY_GEMSET} && ${commands}\""
66
}
7-
else if(env.BRANCH_NAME == 'stage' | env.BRANCH_NAME == 'dev'){
8-
ruby_string = "${env.RUBY_VERSION}@${env.BRANCH_NAME}-${env.RUBY_GEMSET}"
7+
else if(env.BRANCH_NAME == 'stage' || env.BRANCH_NAME == 'dev'){
8+
sh "bash -c \"source /usr/local/rvm/scripts/rvm && rvm use --install --create ${env.RUBY_VERSION}@${env.BRANCH_NAME}-${env.RUBY_GEMSET} && ${commands}\""
99
}
10-
else if(env.BRANCH_NAME == /PR-.*/) {
11-
ruby_string = "${env.RUBY_VERSION}@pr-${env.RUBY_GEMSET}"
10+
else if (env.BRANCH_NAME == /PR-.*/) {
11+
sh "bash -c \"source /usr/local/rvm/scripts/rvm && rvm use --install --create ${env.RUBY_VERSION}@pr-${env.RUBY_GEMSET} && ${commands}\""
1212
}
1313
if (env.DEBUG == 'true') {
1414
println "*************************"
15+
println "${env.RUBY_VERSION}"
16+
println "${env.RUBY_GEMSET}"
17+
println "${env.BRANCH_NAME}"
1518
println "RVM Commands: ${commands}"
1619
println "*************************"
1720
}
18-
sh "bash -c \"source /usr/local/rvm/scripts/rvm && rvm use --install --create ${ruby_string} && ${commands}\""
1921
}

0 commit comments

Comments
 (0)