Skip to content

Commit

Permalink
👷 Update jenkins with pg sidecar
Browse files Browse the repository at this point in the history
  • Loading branch information
dankolbman committed Jan 31, 2018
1 parent 8de9d82 commit ebc2afb
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 56 deletions.
108 changes: 58 additions & 50 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,20 @@ pipeline {
checkout scm
}
}
stage('Test') {
stage('Test') {
steps {
slackSend (color: '#ddaa00', message: ":construction_worker: TESTING STARTED: Branch '${env.BRANCH} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
slackSend (color: '#ddaa00', message: ":construction_worker: TESTING STARTED: '[${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
sh '''
docker stop dataservice-pg
docker rm dataservice-pg
docker run --name dataservice-pg -p 5432:5432 -d postgres:9.5
sleep 10
docker exec dataservice-pg psql -U postgres -c "CREATE DATABASE test;"
PATH=$WORKSPACE/venv/bin:/usr/local/bin:$PATH
if [ ! -d "venv" ]; then
virtualenv -p python3 venv
virtualenv -p python3 venv
fi
virtualenv -p python3 venv
. venv/bin/activate
which python
which pip
Expand All @@ -27,68 +33,70 @@ pipeline {
python -m pip install -e .
export FLASK_APP=manage
python -m flask test
docker stop dataservice-pg
docker rm dataservice-pg
'''
slackSend (color: '#41aa58', message: ":white_check_mark: TESTING COMPLETED: Branch '${env.BRANCH} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
slackSend (color: '#41aa58', message: ":white_check_mark: TESTING COMPLETED: '[${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage('Build') {
steps {
sh '''
passwd=`aws ecr get-login --region us-east-1 | awk '{ print \$6 }'`
docker login -u AWS -p \$passwd 538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest
docker build -t 538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest .
'''
}
}
stage('Publish') {
steps {
sh '''
docker push 538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest
'''
slackSend (color: '#41aa58', message: ":arrow_up: PUSHED IMAGE: Branch '${env.BRANCH} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage('Deploy Dev') {
when {
}
stage('Build') {
steps {
sh '''
passwd=`aws ecr get-login --region us-east-1 | awk '{ print \$6 }'`
docker login -u AWS -p \$passwd 538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest
docker build -t 538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest .
'''
}
}
stage('Publish') {
steps {
sh '''
docker push 538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest
'''
slackSend (color: '#41aa58', message: ":arrow_up: PUSHED IMAGE: '[${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage('Deploy Dev') {
when {
expression {
return env.BRANCH_NAME != 'master';
}
}
steps {
slackSend (color: '#005e99', message: "DEPLOYING TO DEVELOPMENT: '[${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
sh '''
rm -rf aws-ecs-service-*
git clone git@github.com:kids-first/aws-ecs-service-type-1.git
cd aws-ecs-service-type-1/
echo "Setting up backend"
echo 'key = "dev/kf-dev-pi-dataservice-us-east-1-RSF"' >> dev.conf
terraform init -backend=true -backend-config=dev.conf
terraform validate -var 'image=538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest' -var 'application=dataservice-api' -var 'service_name="kf-api-dataservice"' -var 'owner="jenkins"' -var-file=dev.tfvar
terraform apply --auto-approve -var 'image=538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest' -var 'application=dataservice-api' -var 'service_name="kf-api-dataservice"' -var 'owner="jenkins"' -var-file=dev.tfvar
'''
slackSend (color: '#41aa58', message: "DEPLOYED TO DEVELOPMENT: '[${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage('Deploy QA') {
when {
expression {
return env.BRANCH_NAME != 'master';
return env.BRANCH_NAME == 'master';
}
}
steps {
slackSend (color: '#005e99', message: "DEPLOYING TO DEVELOPMENT: Branch '${env.BRANCH} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
slackSend (color: '#005e99', message: "DEPLOYING TO QA: '[${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
sh '''
rm -rf aws-ecs-service-*
git clone git@github.com:kids-first/aws-ecs-service-type-1.git
cd aws-ecs-service-type-1/
echo "Setting up backend"
echo 'key = "dev/kf-dev-pi-dataservice-us-east-1-RSF"' >> dev.conf
echo 'key = "dev/kf-dev-api-dataservice-us-east-1-RSF"' >> dev.conf
terraform init -backend=true -backend-config=dev.conf
terraform validate -var 'image=538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest' -var 'application=dataservice-api' -var 'service_name="kf-api-dataservice"' -var 'owner="jenkins"' -var-file=dev.tfvar
terraform validate -var 'image=538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest' -var 'application=dataservice-api' -var 'service_name="kf-dataservice-api"' -var 'owner="jenkins"' -var-file=dev.tfvar
terraform apply --auto-approve -var 'image=538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest' -var 'application=dataservice-api' -var 'service_name="kf-api-dataservice"' -var 'owner="jenkins"' -var-file=dev.tfvar
'''
slackSend (color: '#41aa58', message: "DEPLOYED TO DEVELOPMENT: Branch '${env.BRANCH} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
slackSend (color: '#41aa58', message: "DEPLOYED TO QA: '[${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
stage('Deploy QA') {
when {
expression {
return env.BRANCH_NAME == 'master';
}
}
steps {
slackSend (color: '#005e99', message: "DEPLOYING TO QA: Branch '${env.BRANCH} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
sh '''
rm -rf aws-ecs-service-*
git clone git@github.com:kids-first/aws-ecs-service-type-1.git
cd aws-ecs-service-type-1/
echo "Setting up backend"
echo 'key = "dev/kf-dev-api-dataservice-us-east-1-RSF"' >> dev.conf
terraform init -backend=true -backend-config=dev.conf
terraform validate -var 'image=538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest' -var 'application=dataservice-api' -var 'service_name="kf-dataservice-api"' -var 'owner="jenkins"' -var-file=dev.tfvar
terraform apply --auto-approve -var 'image=538745987955.dkr.ecr.us-east-1.amazonaws.com/kf-api-dataservice:latest' -var 'application=dataservice-api' -var 'service_name="kf-api-dataservice"' -var 'owner="jenkins"' -var-file=dev.tfvar
'''
slackSend (color: '#41aa58', message: "DEPLOYED TO QA: Branch '${env.BRANCH} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})")
}
}
}
}
1 change: 1 addition & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ def init_app(app):
class DevelopmentConfig(Config):
DEBUG = True
SSL_DISABLE = True
SQLALCHEMY_DATABASE_URI = 'postgres://postgres@localhost:5432/dev'
SQLALCHEMY_TRACK_MODIFICATIONS = True


Expand Down
1 change: 0 additions & 1 deletion dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@ pytest==3.3.1
pytest-cache==1.0
pytest-cov==2.5.1
pytest-pep8==1.0.6
-e git+git@github.com:Alexis-benoist/eralchemy.git#egg=eralchemy
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ flask-marshmallow==0.8.0
marshmallow==2.15.0
marshmallow-sqlalchemy==0.13.2
psycopg2==2.7.3.2
-e git+git@github.com:dankolbman/hvac.git#egg=hvac
-e git+https://github.com:dankolbman/hvac.git#egg=hvac
10 changes: 6 additions & 4 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ def test_status_codes(self, client, endpoint, method, status_code):
call_func = getattr(client, method.lower())
resp = call_func(endpoint)
assert resp.status_code == status_code
assert json.loads(resp.data)['_status']['code'] == status_code
resp = resp.data.decode('utf-8')
assert json.loads(resp)['_status']['code'] == status_code

@pytest.mark.parametrize('endpoint,method,status_message', [
('/', 'GET', 'Welcome to'),
Expand All @@ -43,7 +44,8 @@ def test_status_messages(self, client, endpoint, method, status_message):
"""
call_func = getattr(client, method.lower())
resp = call_func(endpoint)
assert status_message in json.loads(resp.data)['_status']['message']
resp = json.loads(resp.data.decode('utf-8'))
assert status_message in resp['_status']['message']

@pytest.mark.parametrize('endpoint,method', [
('/participants', 'GET')
Expand All @@ -68,7 +70,7 @@ def test_read_only(self, client, endpoint, field):
resp = client.post(endpoint,
data=json.dumps(req),
headers={'Content-Type': 'application/json'})
body = json.loads(resp.data)
body = json.loads(resp.data.decode('utf-8'))
assert (field not in body['results']
or body['results'][field] != 'test')

Expand All @@ -81,7 +83,7 @@ def test_unknown_field(self, client, endpoint, field):
resp = client.post(endpoint,
data=json.dumps(req),
headers={'Content-Type': 'application/json'})
body = json.loads(resp.data)
body = json.loads(resp.data.decode('utf-8'))
assert body['_status']['code'] == 400
assert 'could not create ' in body['_status']['message']
assert 'Unknown field' in body['_status']['message']
Expand Down

0 comments on commit ebc2afb

Please sign in to comment.