Skip to content

Commit 7fcf733

Browse files
ryankingczimergebot
authored andcommitted
speed up build by paritioning (#150)
speed up build by paritioningNote the most elegant solution, but the best quick-win I could find with travis. ### Test Plan * run travis
1 parent 18fbacd commit 7fcf733

File tree

4 files changed

+78
-20
lines changed

4 files changed

+78
-20
lines changed

.travis.yml

+21-19
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,30 @@ install:
1919
# - chmod +x ~/bin/terraform-docs
2020
# awscli
2121
- pip install awscli --upgrade --user
22-
# gotest
23-
- go get github.com/rakyll/gotest
24-
- go install github.com/rakyll/gotest
22+
- aws configure set aws_access_key_id $CI1_AWS_ACCESS_KEY_ID --profile cztack-ci-1
23+
- aws configure set aws_secret_access_key $CI1_AWS_SECRET_ACCESS_KEY --profile cztack-ci-1
24+
- aws --profile cztack-ci-1 sts get-caller-identity
25+
- aws configure set aws_access_key_id $CI2_AWS_ACCESS_KEY_ID --profile cztack-ci-2
26+
- aws configure set aws_secret_access_key $CI2_AWS_SECRET_ACCESS_KEY --profile cztack-ci-2
27+
- aws --profile cztack-ci-2 sts get-caller-identity
28+
29+
script:
30+
- travis_wait 45 make test-ci
2531

26-
jobs:
27-
include:
28-
- stage: check
29-
script: make lint
30-
# terraform-docs is incompatible with 0.12 for now
31-
# - stage: check
32-
# script: make check-docs
33-
- stage: check
34-
before_script:
35-
- aws configure set aws_access_key_id $CI1_AWS_ACCESS_KEY_ID --profile cztack-ci-1
36-
- aws configure set aws_secret_access_key $CI1_AWS_SECRET_ACCESS_KEY --profile cztack-ci-1
37-
- aws --profile cztack-ci-1 sts get-caller-identity
38-
- aws configure set aws_access_key_id $CI2_AWS_ACCESS_KEY_ID --profile cztack-ci-2
39-
- aws configure set aws_secret_access_key $CI2_AWS_SECRET_ACCESS_KEY --profile cztack-ci-2
40-
- aws --profile cztack-ci-2 sts get-caller-identity
41-
script: travis_wait 45 make test
4232
env:
33+
jobs:
34+
- TEST_BUCKET_INDEX=0
35+
- TEST_BUCKET_INDEX=1
36+
- TEST_BUCKET_INDEX=2
37+
- TEST_BUCKET_INDEX=3
38+
- TEST_BUCKET_INDEX=4
39+
- TEST_BUCKET_INDEX=5
40+
- TEST_BUCKET_INDEX=6
41+
- TEST_BUCKET_INDEX=7
42+
- TEST_BUCKET_INDEX=8
43+
- TEST_BUCKET_INDEX=9
4344
global:
45+
- TEST_BUCKETS=10
4446
- secure: H6toE/cJTjXbp9QEONjA2wvWxIPIzPiX3VRY0r5C6YTYEMeujR/w8XW/HMrUFgK7DrD6td5vgpDVeoC84SmQ/KIyU/jEOJsjktxcsMK4Y/5Pbi5p9iK24ps7LUFLDGtYAnYiSOWd3lTDr1vRp/N1Es8VaSqyyRJwi5NwBFGjA0YoxiriIYe7WRCz9HRTiUSQ3PKZPJBLznqUrClvwVq9kZyI7zwyNmDYOrbXzKRPJfPCxHlWE/RsglXu0tSmuL6qxXVIhqp7ijRwJcCSMqpXYyYXPIHAm3b4dyXLSCzI3j+HwZqoTtnZFROMYrhVrgPlcntOe/NWMDu3UurE3ePEG6ghP/E5VD6xgcyiFDYvQV5f4ERPhmfurmOewESJdrtNQhepGutTaUX/gEzdu8rTaxc1fWFmOkscQOWCiPThqowdBP2kQtcrv660Z1PmtNuHmGyBS8j0hkkuyfWjX6YMf+egXpJSDT5kaEw+l6mn9yqL752hUdehKiBEroWqiv9eszFkFqPtBvNZO9vi+bRLeraq9lZJRHjS/T6LosfrLnXAo1X3Uqx79ruNFqLccADlsSqVMsSnyyIyv2d4uXvYTgPrqra1vbu7TQgjuMvwHXiLGt+h/ZLm8HFvSCFNAwzz3Ca+LxTN0TNpEHGmiqj0FoTfyuENvbAMkL4wyU7RprA=
4547
- secure: hqVsbSEMU78f48VHpaNO/v3WkjF46LFIVlTEVZukS8NPPccYKLgiguerdfFYHAnqzDScZRn6r9/BhpNf3sMeaOsFpzZ3qiw0VOlDjQcpN/IafP+3w1j2xCCPUz+FLlDmrnn/iKM2YAkvKm56EV3XIM3NZmbO1SKfoCR0gfqWUysIF5AAr+9u9jZUT+jDabzLfmOyf8TPihbFvwvl0ptGr/ZRU1c0zExg2XFC7UHf6z/xYwkvSM6xX8pFX5QYbfmise6WBDLv0w/NH2WGI8OJr90SkSJMoUcnnmLuByUeQcg2ITcOuClhdUAQl9tCuM+q1OqTJc/hHXHMxqIfobUf8UmTiIzv4zxNJ5QCOvG0EpDEEqvhn80dC+ja/FYSulktWqdR0g/8hrSBa7b+qIg0IjS76fkSqP9gjJS4Nm/1iw6KlTcXLVx4tUlMTlQjkg5BxLf6OAUVSG88GNx6p4jaEW9XAzoM39YUWHOZsWWIkBBO961fVXlztsvU9N8I4sfUJ6z9S4FCrO6AJQCoyvXqd2dXExik1aXBGF2pa4OV4+eR+xeh7UJalb3coVafiJbXmqSjOu2s5awvSR2ieyt255233oA68g7gHKyXNVmwx032qiA5uktC5WpXpuf+dXC68p5Yy6I7f6KMp0urmwDq8XVbQ9FUlNPunY5RpLKIvlo=
4648
- secure: QfL0ry3PeS2C4r/+HGEmKIzx16kv13gu0bYnEhKVKqTVo0jGXkqOCPgqt8KD70dT45irW9arHOyv2K9cO4sNKfPxhMHHV9QFPYpTY3NEpaHOBUjz+22KvputspRMOOzBas0BCX2rtXAEcuBmgnRFK28zIR2OOy8HTOI5ybjYW0rEF0D8DwwUqIID0AxqO9Har8dX9PzDf6sdbEojxEGEnVtQQ9oejpCHdTPfbw8Ga7KryacS+NkslkKKXU4NpaUkyDF+CUkOipH9EdKzFinD3JIQIHoAE0R6qhsJioLffFmKv95h8pr1xj2iWQg6tsuXaTPRj/xanQG65ZBsd7PaFHf8A6e0O6nEx8TIlmzU2GZd4ld1GAwSLdgIUN9wRhSW0I/7VPpnN6hUuEeoT2cXfsiOffVH9eILWIhznEJ2u2wfGG0QFZvj8te2gS4T8VtsSGepsfBHX3mkId0UwemG4pqjfPVmJ7lQsimSSss8k26OjQdTyDtt2T5/qhmGJStdNTxPGzpbbZheCSxXBGPxq5SuvIXjnpkBf0o2/LHx8QRsEQQ3iA3vyTH+P0C5nO0Vhm58RKrs+TwPyrm6ExQJUKLu11cCN+/8SaWArLq0zNsrVvdjKeYdvUlhXEeSPKHzCPyKkAWORxWBIDGgKYxURaNyQFCm2I6/zZFOb8YAbd0=

Makefile

+22-1
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,27 @@ export ROUTE53_ZONE_ID := Z2W9YC1AAOXX6B
1010
export WILDCARD_CERT_ARN := arn:aws:acm:us-west-2:119435350371:certificate/b13e8e24-6436-488d-990d-2cedee3e36dd
1111
export CLOUDFRONT_WILDCARD_CERT_ARN := arn:aws:acm:us-east-1:119435350371:certificate/99f1fb68-4469-4280-b452-7193c8c787ca
1212
export ACCOUNT_ID := 119435350371
13+
export AWS_PROFILE=cztack-ci-1
14+
export AWS_SDK_LOAD_CONFIG=true
15+
export GOFLAGS=-mod=vendor
16+
export GO111MODULE=on
1317

1418
all: clean fmt docs lint test
1519

1620
setup: ## setup development dependencies
1721
curl -L https://raw.githubusercontent.com/chanzuckerberg/bff/master/download.sh | sh
22+
.PHONY: setup
1823

1924
release: ## run a release
2025
bff bump
2126
git push
27+
.PHONY: release
2228

2329
fmt:
2430
@for m in $(MODULES); do \
2531
terraform fmt $m; \
2632
done
33+
.PHONY: fmt
2734

2835
lint:
2936
@for m in $(MODULES); do \
@@ -33,23 +40,37 @@ lint:
3340
@for m in $(MODULES); do \
3441
ls $$m/*_test.go 2>/dev/null 1>/dev/null || (echo "no test(s) for $$m"; exit $$?); \
3542
done
43+
.PHONY: lint
3644

3745
docs:
3846
@for m in $(MODULES); do \
3947
pushd $$m; \
4048
../scripts/update-readme.sh update; \
4149
popd; \
4250
done;
51+
.PHONY: docs
4352

4453
check-docs:
4554
@for m in $(MODULES); do \
4655
pushd $$m; \
4756
../scripts/update-readme.sh check || exit $$?; \
4857
popd; \
4958
done;
59+
.PHONY: check-docs
5060

5161
clean:
5262
rm **/*.tfstate*; true
63+
.PHONY: clean
5364

5465
test: fmt
55-
AWS_PROFILE=cztack-ci-1 AWS_SDK_LOAD_CONFIG=true gotest -count=1 -parallel 10 -test.timeout 45m $(TEST)
66+
go test -count=1 -parallel 10 -test.timeout 45m $(TEST)
67+
.PHONY: test
68+
69+
test-ci:
70+
go list ./... | ./scripts/split-build $(TEST_BUCKETS) $(TEST_BUCKET_INDEX) | xargs go test -count=1 -parallel 10 -test.timeout 45m
71+
.PHONY: test
72+
73+
deps:
74+
go mod tidy
75+
go mod vendor
76+
.PHONY: deps

aws-nuke.yml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
regions:
2+
- us-west-2
3+
4+
account-blacklist:
5+
- "1"
6+
7+
accounts:
8+
"119435350371": {}
9+
10+
resource-types:
11+
# we can add to this over time
12+
targets:
13+
- RDSDBCluster
14+
- RDSSnapshot
15+
- RDSInstance

scripts/split-build

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/env python
2+
3+
import os, sys
4+
5+
buckets = int(sys.argv[1])
6+
bucket = int(sys.argv[2])
7+
8+
assert bucket < buckets
9+
10+
b = []
11+
12+
for i in range(buckets):
13+
b.append([])
14+
15+
for i, line in enumerate(sys.stdin):
16+
for x in line.strip().split():
17+
b[ i % buckets ].append(x)
18+
19+
for pkg in b[bucket]:
20+
print(pkg)

0 commit comments

Comments
 (0)