-
Notifications
You must be signed in to change notification settings - Fork 5
/
config.yml
100 lines (95 loc) · 2.81 KB
/
config.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
version: 2
jobs:
test:
docker:
- image: circleci/python:3
environment:
- ANSIBLE_FORCE_COLOR: "True"
steps:
- checkout
- restore_cache:
keys:
# when lock file changes, use increasingly general patterns to restore cache
- pip-packages-v2-{{ .Branch }}-{{ checksum "Pipfile.lock" }}
- pip-packages-v2-{{ .Branch }}-
- pip-packages-v2-
- run:
name: Install Python dependencies
command: pipenv install
# cache the Python depdendencies between steps+runs
- save_cache:
paths:
- ~/.local/share/virtualenvs
key: pip-packages-v2-{{ .Branch }}-{{ checksum "Pipfile.lock" }}
- run:
name: Install Ansible dependencies
command: pipenv run ansible-galaxy install -p roles/external -r requirements.yml
# save the Ansible depdendencies between steps
- persist_to_workspace:
root: .
paths:
- ./*
- run:
name: Check syntax of Ansible playbooks
command: pipenv run ansible-playbook --syntax-check playbooks/*.yml
- run:
name: Lint the Ansible playbooks
command: pipenv run ansible-lint --exclude=roles/external playbooks/*.yml
- run:
name: Run the base playbook in check mode against all Droplets
command: pipenv run ansible-playbook -i digital_ocean.py -l labs -u deployer -C playbooks/base.yml
deploy:
docker:
- image: circleci/python:3
environment:
- ANSIBLE_FORCE_COLOR: "True"
steps:
- attach_workspace:
at: .
- restore_cache:
keys:
- pip-packages-v2-{{ .Branch }}-{{ checksum "Pipfile.lock" }}
- run:
name: Run the base playbook against all Droplets
command: pipenv run ansible-playbook -i digital_ocean.py -l labs -u deployer playbooks/base.yml
check:
docker:
- image: circleci/python:3
environment:
- ANSIBLE_FORCE_COLOR: "True"
steps:
- attach_workspace:
at: .
- restore_cache:
keys:
- pip-packages-v2-{{ .Branch }}-{{ checksum "Pipfile.lock" }}
- run:
name: Run the checks against all Droplets
command: pipenv run ansible-playbook -i digital_ocean.py -l labs -u deployer playbooks/check.yml
workflows:
version: 2
test_and_deploy:
jobs:
- test
- deploy:
requires:
- test
filters:
branches:
only: master
nightly:
triggers:
- schedule:
cron: "0 0 * * *"
filters:
branches:
only:
- master
jobs:
- test
- deploy:
requires:
- test
- check:
requires:
- deploy