-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
79 lines (73 loc) · 4.38 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
language: minimal
services:
- docker
branches:
only:
- qa
- production
jobs:
include:
- stage: docker build
if: (branch = qa or branch = production)
before_install:
- if [[ $TRAVIS_BRANCH == "qa" ]];
then
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID_QA};
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY_QA};
export ENV="qa";
fi
- if [[ "$TRAVIS_BRANCH" == "production" ]];
then
export AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID_PRODUCTION};
export AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY_PRODUCTION};
export ENV="production";
fi
env:
- ECR_URL=946183545209.dkr.ecr.us-east-1.amazonaws.com/my-library-nyc-app
- AWS_DEFAULT_REGION=us-east-1
- AWS_REGION=us-east-1
install:
- pip install --user awscli
- export LOCAL_TAG_NAME="${ENV}-latest"
script:
- eval $(aws ecr get-login --no-include-email --region us-east-1)
- DOCKER_BUILDKIT=1 docker build -t "$LOCAL_TAG_NAME" --secret id=AWS_ACCESS_KEY_ID --secret id=AWS_SECRET_ACCESS_KEY --build-arg RAILS_ENV="${ENV}" .
- docker tag "$LOCAL_TAG_NAME" "$ECR_URL:$LOCAL_TAG_NAME"
# Re-tag last latest image just in case
- |
MANIFEST=$(aws ecr batch-get-image --repository-name my-library-nyc-app --image-ids imageTag="$ENV-latest" --output json | jq --raw-output --join-output '.images[0].imageManifest')
aws ecr batch-delete-image --repository-name my-library-nyc-app --image-ids imageTag="$ENV-previous" || true
aws ecr put-image --repository-name my-library-nyc-app --image-tag "$ENV-previous" --image-manifest "$MANIFEST"
- docker push "$ECR_URL:$LOCAL_TAG_NAME"
- stage: deploy qa
if: branch IN (qa) AND type != pull_request
env:
- AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID_QA
- AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY_QA
- AWS_DEFAULT_REGION=us-east-1
- AWS_REGION=us-east-1
- CLUSTER_NAME=mylibrarynycapp-qa
- DELAYED_JOB_NAME=mylibrarynycapp-qa-delayed-job
install:
- pip install --user awscli
script:
- aws ecs update-service --cluster $CLUSTER_NAME --service $CLUSTER_NAME --force-new-deployment
- aws ecs update-service --cluster $CLUSTER_NAME --service $DELAYED_JOB_NAME --force-new-deployment
- stage: deploy production
if: branch IN (production) AND type != pull_request
env:
- AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY_PRODUCTION
- AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID_PRODUCTION
- AWS_DEFAULT_REGION=us-east-1
- AWS_REGION=us-east-1
- CLUSTER_NAME=mylibrarynycapp-production
- DELAYED_JOB_NAME=mylibrarynycapp-production-delayed-job
install:
- pip install --user awscli
script:
- aws ecs update-service --cluster $CLUSTER_NAME --service $CLUSTER_NAME --force-new-deployment
- aws ecs update-service --cluster $CLUSTER_NAME --service $DELAYED_JOB_NAME --force-new-deployment
env:
global:
- secure: VmSPZTuC7ZMDSloA+sxYBa5MP2rchrlSVLvMU7yuEv9HI8tw4FxzUmex1IBUG976zMdsfjerjjGiXaJURC2xQqWUqoFEG3wsvEKEKo9ydMAaWDN8fvlX3aEkKoG7YoBmUozsOEn+SbGiEFg8ApdB9OwDoZ+tVhNKs8TPD8KfJX3ho7ER2FpvfNPtb3l+ZydYWWyHx/jw0aW4DVrRxHFY6Z/ELyNjaLte6ikh9kRjwNQ/Krmss8aU+k5PrFi4U1JocQEgbKXhR+Vej2ASjpb9KIS/c/EWpvs8Z4uA3baYhrE7HsPLKtLnBelSsfqCRH7UOP+ZOWrgZOtvRQFjqCXoLzmKwBrlY9sNAYaPbTeEIUHpOUJgnHqWM2d0PuXqOV3aVxL1HiXDOqdcT7e2lgvBNgLRmdkXdTcYgZ5pTBF4W24n29sxpfzmKOalYVowiv2noqdeNAEbOWjd6Nj+UfYtwii6QRLRAGVx8qm38msoh1IsHNdjHIqYaAd4UYIU3nvN8veKUf42bUcrFafKG0TeMFs76ZUPBJQdlFgtBqDnEtRxhnhfc8NQxgbo1e+cdZapCMa579LDn+mNTuAiVLGxzUTssdCxvOQONZr/L7YKUl2RfJRbm1Hwa4aRUKHsb4tWTRbcqMXE8fnmA6nNjklHHzW5vCmJOF1enuGoLnfqQt8=
- secure: ybrmOe2J5BJFW1BDY1OHAzAkvYfnDy3rKvg1bi/380NPlZjoyCNRct9bjeK1HtnG3p7A666EU9TG4NSxa71kzsx9g+w9WosjmgFEcUx863Ta9rcDJvdWM3GK5vFtMab+X3jo0qlzHApaK5GzNfR2+fm4IJ7YxcOlQwpPfxSx+08KAl+awzPjf5xacSI83h0BEjF4bD79YtK9mXRopoeF45Zw9t+2am5q1xXc0z1m/s4mIu0npFcgEy4o9wlQLA5/XGbBwi1EJqirlOwCVCA6zOpEv0HaLwmhZWmoHmzVnIo738c2eiIfZZMbZwX3+3NBtB1a6/VDLj+PZfI2X9wQMK6UNVN4QJDdhfKi/uGWWQ8D1jjUzRbX9vEUVxHConr5LT7+bAeJUcklUkin6nHxwpLnYh5Ezy/C3D85V/+X3lSlKPr2+4c+VjILzw0CurIW6Bl/0UN0FgvIOFG9O6Cw+Iai7+f/OmAf9xdvaF2TGTVkHGDTk3VdMeqpBDP/qso7EL2uvL9JVDIBcKKWH+vdKP6ApRkNNA86DNpDaxR171FoWjV3ugGTVYp5GH8ZhTZro96ZQbkWSrMcEfhcOLkHRnV9BIUjCYc72DRoaYItfuPhB0a5U3jthdRRJFgmhgJVoch1EYwEQkLWlTCKfNc7QW6vUE4lrTFAzEuvtc+334w=