This repository has been archived by the owner on Jun 5, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path.travis.yml
138 lines (132 loc) · 9.09 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
---
dist: xenial
sudo: required
rvm:
- 2.6
env:
# - distribution: centos
# version: 6
# - distribution: centos
# version: 7
- distribution: ubuntu
version: 18.04
suite: default
- distribution: ubuntu
version: 16.04
suite: default
## travis/trusty mongodb issue (works inside local kitchen test)
# - distribution: ubuntu
# version: 14.04
# - distribution: ubuntu
# version: 12.04
# - distribution: alpine
# version: 3.4
- distribution: ubuntu
version: 18.04
suite: default-cowrie
- distribution: ubuntu
version: 18.04
suite: default-conpot
before_install:
- env
- pwd
- find -ls
## use appropriate role path and not github name
- "[ -f get-dependencies.sh ] && sh -x get-dependencies.sh"
- echo "deb http://archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/xenial-backports.list
- sudo apt-get update -qq
- sudo apt -t xenial-backports -y install lxd acl dnsmasq-base zfsutils-linux rng-tools -q
## change of group implies logout+login to apply... can't do with travis = run as root (sic) = use 'newgrp lxd' ? = travis stalling all ...
## https://github.com/travis-ci/travis-ci/issues/1839 or chain: sudo -E su $USER -c "..."
- sudo usermod -G lxd travis
# Pull container
- sudo -E su $USER -c "lxc remote list"
- sudo -E su $USER -c "lxc image list"
## pre-download base images
- 'sudo -E su $USER -c "[ ${distribution} == ubuntu ] || lxc image copy images:${distribution}/${version}/amd64 local: --alias=${distribution}-${version}-nossh"'
- 'sudo -E su $USER -c "[ ${distribution} == alpine ] || lxc image copy images:${distribution}/${version}/amd64 local: --alias=${distribution}-${version}"'
- 'sudo -E su $USER -c "[ ${distribution} == debian ] || lxc image copy images:${distribution}/${version}/amd64 local: --alias=${distribution}-${version}"'
- 'sudo -E su $USER -c "[ ${distribution} == ubuntu ] && lxc image copy ubuntu:${version} local: --alias=${distribution}-${version}" || true'
## configure network
- ifconfig -a
- sudo lxc info
- sudo lxc network list
- sudo lxc network create lxdbr0
- sudo lxc network show lxdbr0
- sudo lxc network attach-profile lxdbr0 default ens4
- sudo lxc profile device get default ens4 nictype || true
- sudo service lxd restart
- ps ax | grep dnsmasq
- systemctl status -l --no-pager lxd || true
- cat /etc/network/interfaces.d/50-cloud-init.cfg
- sudo lxc network list
# configure storage pool
- sudo lxc storage list
- sudo lxc storage create pool1 zfs
- sudo lxc storage list
- sudo zpool list
- sudo lxc profile device add default root disk path=/ pool=pool1
- sudo lxc profile show default
## ssh key for lxd_cli ?
- ls ~/.ssh
- ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -P ""
## sudo/su get us a non-usual PATH ...
- '[ "X${distribution}" == "Xcentos" ] && sudo -E su $USER -c "sh -x ./test/lxd/centos-ssh-image.sh" || true'
- sudo -E su $USER -c "lxc launch ${distribution}-${version} run-${distribution}-${version//./}"
# - sudo -E su $USER -c "lxc start run-${distribution}-${version//./}"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- env"
- '[ "X${distribution}" != "Xalpine" ] && sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- dhclient eth0" || true'
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- ping -c 1 8.8.8.8"
- '[ "X${distribution}" == "Xubuntu" ] && sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- apt-get update" || true'
- '[ "X${distribution}" == "Xubuntu" ] && sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- apt-get -y install python python-apt aptitude python-pip libssl-dev python-dev libffi-dev" || true'
- '[ "X${distribution}" == "Xcentos" -a "X${version}" == "X6" ] && sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm" || true'
- '[ "X${distribution}" == "Xcentos" -a "X${version}" == "X7" ] && sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-11.noarch.rpm" || true'
- '[ "X${distribution}" == "Xcentos" ] && sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- yum update" || true'
- '[ "X${distribution}" == "Xcentos" ] && sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- yum -y install python python-pip openssl-devel python-devel libffi-devel \"@Development tools\"" || true'
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- pip install --upgrade pip" || true
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- pip install ansible"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- ansible --version"
- "echo localhost > inventory"
## enable ansible profiling (https://github.com/jlafon/ansible-profile)
- head -2 ./test/vagrant/ansible.cfg > /tmp/ansible.cfg
- sudo -E su $USER -c "lxc file push /tmp/ansible.cfg run-${distribution}-${version//./}/root/"
- sudo -E su $USER -c "lxc file push inventory run-${distribution}-${version//./}/root/"
## these lines are necessary so lxc mount is read-write, https://github.com/lxc/lxd/issues/1879
- chmod -R go+w $PWD
## OR
- sudo -E su $USER -c "lxc config show run-${distribution}-${version//./}"
## FIXME! awk extraction is working in shell but not in travis... relying on global chmod as test ephemeral environment. DON'T USE IN PRODUCTION!
- sudo -E su $USER -c "lxc config show run-${distribution}-${version//./} | awk -F'[\":,]' '/Hostid/ { print $13 }'"
- sudo -E su $USER -c "lxc config show run-${distribution}-${version//./} | sed -ne '/idmap.next/ s/.*\"Hostid\":\([0-9]*\),.*/\1/p'"
# - CUID=`sudo -E su $USER -c "lxc config show run-${distribution}-${version//./} | awk -F'[\":,]' '/idmap.next.*Hostid/ { print $13 }'"`
- CUID=`sudo -E su $USER -c "lxc config show run-${distribution}-${version//./} | sed -ne '/idmap.next/ s/.*\"Hostid\":\([0-9]*\),.*/\1/p'"`
- "echo setfacl -Rm user:$CUID:rwx ${PWD%/*}"
- "setfacl -Rm \"user:$CUID:rwx\" ${PWD%/*} || true"
- sudo -E su $USER -c "lxc config device add run-${distribution}-${version//./} sharedroles disk path=/etc/ansible/roles source=${PWD%/*}"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- mount"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- pwd"
script:
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- ansible-playbook -i inventory --syntax-check /etc/ansible/roles/juju4.mhnclient/test/integration/${suite}/default.yml"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- ansible-playbook -i inventory --connection=local --become -vvvv /etc/ansible/roles/juju4.mhnclient/test/integration/${suite}/default.yml"
## FIXME! Travis request: Build config file had a parse error: "mapping values are not allowed in this context at line 72 column 321".
# - sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- ansible-playbook -i inventory /etc/ansible/roles/juju4.mhnclient/test/integration/${suite}/default.yml --connection=local --become | tee /tmp/idempotency.log | grep -q 'changed=0.*failed=0' && (echo 'Idempotence test: pass' && exit 0) || (echo 'Idempotence test: fail' && cat /tmp/idempotency.log && exit 1)"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- /etc/ansible/roles/juju4.mhnclient/test/integration/${suite}/serverspec/run-local-tests.sh"
after_failure:
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- cat /opt/cowrie/cowrie.cfg"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- cat /var/log/supervisor/cowrie.out"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- cat /opt/cowrie/log/cowrie.log"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- cat /var/log/mhn/hpfeeds-broker.log"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- cat /var/log/mhn/mhn-collector.log"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- cat /var/log/mhn/mhn-celery-worker.log"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- systemctl -l --no-pager status"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- journalctl -xe --no-pager"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- /var/_mhn/mhn/env/bin/pip2 freeze"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- /opt/mnemosyne/env/bin/pip2 freeze"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- /opt/cowrie/env-cowrie/bin/python -V"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- /opt/cowrie/env-cowrie/bin/pip2 freeze"
- sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- /opt/cowrie/env-cowrie/bin/pip freeze"
# - sudo -E su $USER -c "lxc exec run-${distribution}-${version//./} -- find /opt/conpot/"
after_script:
- sudo -E su $USER -c "lxc stop run-${distribution}-${version//./} --force"
notifications:
webhooks: https://galaxy.ansible.com/api/v1/notifications/