forked from google/fleetspeak
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml
170 lines (167 loc) · 9.55 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
matrix:
include:
- os: linux
dist: bionic
language: go
go:
- "1.15"
services:
- mysql
addons:
apt:
packages:
- debhelper
- devscripts
- dh-systemd
- fakeroot
- libparse-debcontrol-perl
env:
- MYSQL_TEST_USER=travis
- MYSQL_TEST_ADDR=127.0.0.1:3306
- MYSQL_TEST_E2E_DB=e2e_test_db
before_install:
- sudo apt-get update
- sudo apt-get install python3-venv
- python3 -m venv "${HOME}/FSENV"
- mysql --print-defaults
- mysql -u travis -e 'CREATE DATABASE db;'
- mysql -u travis -e 'CREATE DATABASE e2e_test_db;'
- go get -u golang.org/x/lint/golint
install:
- source "${HOME}/FSENV/bin/activate" && pip install --upgrade pip wheel && pip install -e ./fleetspeak_python && pip install -e ./frr_python
- go get -u -v github.com/golang/protobuf/[email protected]
script:
# We want to address all golint warnings, except for
# https://github.com/golang/go/wiki/CodeReviewComments#doc-comments
# TODO(mbushkov): make golint and go vet checks actionable.
- golint ./... | grep -v 'should have comment or be unexported' || true
- go vet ./... || true
- source "${HOME}/FSENV/bin/activate"
- fleetspeak/generate_go_py_protos.sh
- if [[ "$(git status --porcelain | grep .pb.go)" != "" ]]; then
echo "At least one generated proto file is not in sync with the committed generated proto files."
echo "Please run \`PATH=~/go/bin:\$PATH fleetspeak/generate_go_py_protos.sh\` with protoc-gen-go version 1.4.2."
echo "pip packages:"
pip freeze
exit 1;
fi;
- echo "git status is clean; generated protos are consistent"
- fleetspeak/build.sh && fleetspeak/test.sh
# Install the built package and check that the fleetspeak-config program
# doesn't error out.
- cd fleetspeak
- ./build-pkgs.sh
- sudo ./test-package.sh ./fleetspeak-server_$(cat ../VERSION)_amd64.deb ./fleetspeak-client_$(cat ../VERSION)_amd64.deb
- BUILD_TIMESTAMP=$(git show -s --format=%ci ${TRAVIS_COMMIT} | sed -e "s/[ :\\+]/_/g")
- mkdir -p deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}
- cp ./fleetspeak-client_$(cat ../VERSION)_amd64.deb deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}/
- cp ./fleetspeak-server_$(cat ../VERSION)_amd64.deb deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}/
# pypi doesn't support linux_x86_64, which is the plafrom name targeted by default.
# We generate manylinux1_x86_64 manylinux2010_x86_64 packages, which are supported.
# Create client wheel
- dpkg --extract ./fleetspeak-client_$(cat ../VERSION)_amd64.deb client-package-root
- python client-wheel/setup.py --package-root=client-package-root --version=$(cat ../VERSION) -- bdist_wheel --platform-name=manylinux1_x86_64
- python client-wheel/setup.py --package-root=client-package-root --version=$(cat ../VERSION) -- bdist_wheel --platform-name=manylinux2010_x86_64
# Create server wheel
- dpkg --extract ./fleetspeak-server_$(cat ../VERSION)_amd64.deb server-package-root
- python server-wheel/setup.py --package-root=server-package-root --version=$(cat ../VERSION) -- bdist_wheel --platform-name=manylinux1_x86_64
- python server-wheel/setup.py --package-root=server-package-root --version=$(cat ../VERSION) -- bdist_wheel --platform-name=manylinux2010_x86_64
# Copy wheels
- cp dist/*.whl deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}/
deploy:
skip_cleanup: true
provider: gcs
access_key_id: GOOG1E7XCSBM7TMT244W5462L63RB3CGWTOBLEW52YSCHNPXVTFH7KBDSV6DA
secret_access_key:
secure: aD9kDPmH7dDHR0CZ1XAkrcyMMQvuT8MeyZ9gf2JksiDMh/ki2YmATDxwBXf/iNxf5yEcOSGhwgpmee9/dxSsr22fwWYgOQtOdE6hAbyCy0vERWg2UYRj4+XLm6AvY4Pubx+QCvmatmyhrvs0gjRgI9hSCFcCvudTqEJlIoR8u+sZzIRJhYoaKYJfMiUZLywnPe1x6fKBYYqPHbzuI+8qwjIfZ4VN5IdnWm/JP1dV9XIQgJROXxul+b98vUYkqLQiRNHbF/E4Qe7xkKVF2iYOgsNpqKS1fXkywdrDRsJsG4rYeSHU7V3t/NmO27oMRKilz34wk8BCrxkY8aF/ldw5Idz+Ns57ZQ5CwNgdu3+P0oguaSXo7NeG9wKtFUMFv1mBsozWljJLjn0ZM+FVO3SxV1jhMZjWa94yAGPfbqZdlM+juEVgZJM1aCsxZDgHe9BrenMkxIFDTJZ2BO3blvI/PGiffu59Lc+fv2YZC9SwrbKiZzSWIcTof+1RYcI5Nnotl1NvQb8SoY7flRIKb67u1u1cnU9pHw0ADkYJc3Gk5kAUTnZisiYkybeyje7aamsKHxfb7DUXv9vxicoKdbwitiqR7oqmTNh1pGcaWXMZW8JiDQ7Xl6Ig1VCiL8Vf1vp/fFN1oFSeFwrZ5V53Bk7K/sLrjLqmd15LyDSf5QygJnI=
bucket: autobuilds-fleetspeak
local-dir: deploy
on:
repo: google/fleetspeak
all_branches: true
- os: windows
language: go
go:
- "1.15"
env:
# GCS_ENCRYPTION_KEY_B64
- secure: "HReLplavt0kl52ky792geloR2kIm2I6r/MC9s/SAOVoz5ByXveE7ubM/+74UewVGw+xgnrEq8hLkYby2WHc64OFfCVTaCckos3Es8+7yGsikIG3U2P+qDMpm6o3N4q8paZD81ynV6ACrg2MzrYs2itNSD3+SpxLUCqVSpPHf33OOI2ewlvHgO4FQk5xK+XsDMGayLKa3ult6vP35IU41uBftn4ZFMCw8PWXejSV+fnkBbhWPYXarUA8JPVvVU6qWvGKSyARj7NVqLsfPiQCKkhHb3Dn47XU9o9jkJ7IIcvPdFv4tpmRTcEAe1nQ8Ri1p1pKA26ium7evG7qdalgr5AE6Ypt+nDOW4GTM1WrSY1DoiiHPZnFU5JM+tcIrik0vxbNTQ2gV+fe8R5ZsYR9Ge2CsdChAl4l+npWrwnyNt+SFaqu29xTy6X9uWjxFbSp8mgMaeju6owbau5WLWQ17xWAFBXiMAUnsraiXN8HE37buV6WKNaMBR2SNNCwR/jbbj4yhNF3+tsI1gMAAhFHpejTaafGmu8kk5KSDagjzCmjikOOu1RzVTi3rCQtVlTsdr/QD/818ea8QJVhWc51PPBijPeNk/6mO28S7vVJpQws0ugKULpELoh6HxrEhsGKjd4UV1xI5wtRgRZ4Y2rcLGh2sFXmennxigJGhmGNaQV0="
before_install:
- choco install python3 --version 3.7.5
- export PATH="/c/Python37:/c/Python37/Scripts:$PATH"
- pip install wheel
- pip install google-cloud-storage pycryptodome
install:
- powershell Install-WindowsFeature Net-Framework-Core
- cinst -y wixtoolset --version 3.11.1
script:
- go build -v -x -o fleetspeak-client.exe ./fleetspeak/src/client/client/client.go
- cd fleetspeak/client-win
- powershell -ExecutionPolicy Bypass -File ./build.ps1
- cd ../..
- BUILD_TIMESTAMP=$(git show -s --format=%ci ${TRAVIS_COMMIT} | sed -e "s/[ :\\+]/_/g")
- mkdir -p deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}
- cp ${TMP}/fleetspeak-build-*/fleetspeak-pkg/fleetspeak-client-*.msi deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}/
# Build client wheel
- mkdir pkg-root
- cp fleetspeak-client.exe pkg-root
- cp fleetspeak/client-win/fleetspeak_lib.wxs pkg-root
- python fleetspeak/client-wheel/setup.py --package-root pkg-root --version=$(cat VERSION) bdist_wheel
- cp dist/*.whl deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}/
# The windows uploads appear truncated on GCS when using deploy
# https://github.com/travis-ci/dpl/issues/990
# When using Deployment v2 (edge: true),
# GCS doesn't work on Windows either.
after_success:
- cd deploy
- python ../travis/gcs_upload.py */*.whl */*.whl
- python ../travis/gcs_upload.py */*.msi */*.msi
- os: osx
language: go
go:
- "1.15"
install:
- pip3 install wheel
script:
- go build -o fleetspeak-client ./fleetspeak/src/client/client/client.go
- BUILD_TIMESTAMP=$(git show -s --format=%ci ${TRAVIS_COMMIT} | sed -e "s/[ :\\+]/_/g")
- mkdir -p deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}
- cd fleetspeak/client-mac
- ./build.sh ../../fleetspeak-client
- sudo installer -pkg ./work/fleetspeak-client-*.pkg -target / -verbose
- cd ../..
- cp ./fleetspeak/client-mac/work/fleetspeak-client-*.pkg deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}/
# Build client wheel
- python3 fleetspeak/client-wheel/setup.py --package-root=fleetspeak/client-mac/work/pkg_root --version=$(cat VERSION) bdist_wheel
- cp dist/*.whl deploy/${BUILD_TIMESTAMP}_${TRAVIS_COMMIT}/
deploy:
skip_cleanup: true
provider: gcs
access_key_id: GOOG1E7XCSBM7TMT244W5462L63RB3CGWTOBLEW52YSCHNPXVTFH7KBDSV6DA
secret_access_key:
secure: aD9kDPmH7dDHR0CZ1XAkrcyMMQvuT8MeyZ9gf2JksiDMh/ki2YmATDxwBXf/iNxf5yEcOSGhwgpmee9/dxSsr22fwWYgOQtOdE6hAbyCy0vERWg2UYRj4+XLm6AvY4Pubx+QCvmatmyhrvs0gjRgI9hSCFcCvudTqEJlIoR8u+sZzIRJhYoaKYJfMiUZLywnPe1x6fKBYYqPHbzuI+8qwjIfZ4VN5IdnWm/JP1dV9XIQgJROXxul+b98vUYkqLQiRNHbF/E4Qe7xkKVF2iYOgsNpqKS1fXkywdrDRsJsG4rYeSHU7V3t/NmO27oMRKilz34wk8BCrxkY8aF/ldw5Idz+Ns57ZQ5CwNgdu3+P0oguaSXo7NeG9wKtFUMFv1mBsozWljJLjn0ZM+FVO3SxV1jhMZjWa94yAGPfbqZdlM+juEVgZJM1aCsxZDgHe9BrenMkxIFDTJZ2BO3blvI/PGiffu59Lc+fv2YZC9SwrbKiZzSWIcTof+1RYcI5Nnotl1NvQb8SoY7flRIKb67u1u1cnU9pHw0ADkYJc3Gk5kAUTnZisiYkybeyje7aamsKHxfb7DUXv9vxicoKdbwitiqR7oqmTNh1pGcaWXMZW8JiDQ7Xl6Ig1VCiL8Vf1vp/fFN1oFSeFwrZ5V53Bk7K/sLrjLqmd15LyDSf5QygJnI=
bucket: autobuilds-fleetspeak
local-dir: deploy
on:
repo: google/fleetspeak
all_branches: true
# TODO: Find alternatives to Travis for MacOS testing.
# Note that mysql is not available in OSX environments.
#- os: osx
# language: go
# python: 2.7
# before_install:
# - git clone https://github.com/MacPython/terryfy
# # Install pip.
# - >-
# source terryfy/travis_tools.sh &&
# get_python_environment macpython 2.7.14
# - pip install --upgrade pip virtualenv
# - virtualenv "${HOME}/FSENV"
# - go version
# install:
# - source "${HOME}/FSENV/bin/activate" && pip install -e .
# - go get -v -t ./... # Install dependencies needed for tests.
# script:
# - source "${HOME}/FSENV/bin/activate"
# - fleetspeak/build.sh && fleetspeak/test.sh