|
1 | 1 | version: 2
|
2 | 2 |
|
| 3 | +references: |
| 4 | + restore_repo: &restore_repo |
| 5 | + restore_cache: |
| 6 | + keys: |
| 7 | + - v1-repo-{{ .Branch }}-{{ .Revision }} |
| 8 | + - v1-repo-{{ .Branch }} |
| 9 | + - v1-repo |
| 10 | + save_repo: &save_repo |
| 11 | + save_cache: |
| 12 | + key: v1-repo-{{ .Branch }}-{{ .Revision }} |
| 13 | + paths: |
| 14 | + - ~/project |
| 15 | + |
3 | 16 | jobs:
|
4 | 17 | build_and_deploy:
|
5 |
| - working_directory: /project |
6 |
| - docker: |
7 |
| - - image: docker:17.05.0-ce-git |
| 18 | + machine: |
| 19 | + docker_layer_caching: true |
8 | 20 | steps:
|
| 21 | + - *restore_repo |
9 | 22 | - checkout
|
| 23 | + - *save_repo |
10 | 24 | - run:
|
11 | 25 | name: Install dependencies
|
12 | 26 | command: |
|
13 |
| - apk add --no-cache py-pip=9.0.0-r1 |
14 |
| - pip install docker-compose==1.12.0 awscli==1.11.76 |
15 |
| - - setup_remote_docker |
16 |
| - - restore_cache: |
17 |
| - keys: |
18 |
| - - v1-{{ .Branch }} |
19 |
| - paths: |
20 |
| - - /caches/project.tar |
21 |
| - - run: |
22 |
| - name: Load Docker image layer cache |
23 |
| - command: | |
24 |
| - set +o pipefail |
25 |
| - docker load -i /caches/project.tar | true |
| 27 | + pip install awscli |
| 28 | + sudo apt-get install jq |
26 | 29 | - run:
|
27 | 30 | name: Build application Docker image
|
28 | 31 | command: |
|
29 |
| - docker-compose build #--cache-from=project |
30 |
| - - run: |
31 |
| - name: Save Docker image layer cache |
32 |
| - command: | |
33 |
| - mkdir -p /caches |
34 |
| - docker save -o /caches/project.tar developmentseed/geolambda |
35 |
| - - save_cache: |
36 |
| - key: v1-{{ .Branch }}-{{ epoch }} |
37 |
| - paths: |
38 |
| - - /caches/project.tar |
39 |
| - - deploy: |
40 |
| - name: Push application Docker image |
41 |
| - command: | |
42 |
| - VERSION=`awk '{if (NR==1) {print substr($0, 0, length($0)-1)}}' CHANGES.md` |
| 32 | + VERSION=$(cat VERSION) |
| 33 | + docker build . -t developmentseed/geolambda:${VERSION} |
| 34 | + # publish docker images |
43 | 35 | mkdir -p ~/.ssh
|
44 | 36 | ssh-keyscan github.com >> ~/.ssh/known_hosts
|
45 |
| - git tag $VERSION |
46 |
| - git push origin $VERSION |
| 37 | + git tag -d ${VERSION} |
| 38 | + git tag ${VERSION} |
| 39 | + git push origin ${VERSION} |
47 | 40 | docker login -u $DOCKER_USER -p $DOCKER_PASS
|
48 |
| - docker tag developmentseed/geolambda:latest developmentseed/geolambda:$VERSION |
49 |
| - docker tag developmentseed/geolambda-base:latest developmentseed/geolambda-base:$VERSION |
| 41 | + docker tag developmentseed/geolambda:${VERSION} developmentseed/geolambda:latest |
50 | 42 | docker push developmentseed/geolambda:latest
|
51 |
| - docker push developmentseed/geolambda:$VERSION |
52 |
| - docker push developmentseed/geolambda-base:latest |
53 |
| - docker push developmentseed/geolambda-base:$VERSION |
| 43 | + docker push developmentseed/geolambda:${VERSION} |
| 44 | + # deploy public Lambda layers |
| 45 | + pip install awscli |
| 46 | + docker run --rm -v $PWD:/home/geolambda --entrypoint package.sh -it developmentseed/geolambda:${VERSION} |
| 47 | + for region in us-east-1 us-west-2 eu-central-1 |
| 48 | + do |
| 49 | + LVERSION="$(aws lambda publish-layer-version --region ${region} \ |
| 50 | + --layer-name geolambda-dev --license-info 'MIT' \ |
| 51 | + --description 'Native geospatial libaries for all runtimes' \ |
| 52 | + --zip-file fileb://lambda-deploy.zip | jq '.Version')" |
| 53 | + aws lambda add-layer-version-permission --region ${region} \ |
| 54 | + --layer-name geolambda-dev --action lambda:GetLayerVersion \ |
| 55 | + --statement-id public --version-number ${LVERSION} --principal '*' |
| 56 | + done |
| 57 | +
|
54 | 58 |
|
55 | 59 | workflows:
|
56 | 60 | version: 2
|
|
0 commit comments