1212# permissions and limitations under the License.
1313env :
1414 PATH : " /usr/lib/go-1.13/bin:/usr/bin"
15+ FC_TEST_DATA_PATH : " /tmp/buildkite_build_${BUILDKITE_BUILD_NUMBER}_testdata"
1516
1617steps :
17- - label : ' :ec2: environment'
18+ - label : ' :ec2: prepare environment'
1819 command :
1920 - uname -a
2021 - go version
22+ - " mkdir -p ${FC_TEST_DATA_PATH}"
2123 agents :
2224 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
2325 distro : " ${BUILDKITE_AGENT_META_DATA_DISTRO}"
@@ -40,18 +42,17 @@ steps:
4042 distro : " ${BUILDKITE_AGENT_META_DATA_DISTRO}"
4143 hostname : " ${BUILDKITE_AGENT_META_DATA_HOSTNAME}"
4244
45+ # Since make test-images mutates the source directory, it cannot be run with other steps.
46+ - wait
47+
4348 - label : ' :linux: build docker images'
4449 commands :
45- - ' make test-images'
46- - ' buildkite-agent artifact upload testdata/firecracker-master'
47- - ' buildkite-agent artifact upload testdata/jailer-master'
50+ - make test-images
4851 agents :
4952 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
5053 distro : " ${BUILDKITE_AGENT_META_DATA_DISTRO}"
5154 hostname : " ${BUILDKITE_AGENT_META_DATA_HOSTNAME}"
5255
53- # We use a "wait" step here, because Go's module logic freaks out when
54- # multiple go builds are downloading to the same cache.
5556 - wait
5657
5758 - label : gofmt -s
@@ -68,19 +69,29 @@ steps:
6869 agents :
6970 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
7071
72+ - wait
73+
7174 - label : ' :package: install'
75+ env :
76+ GOBIN : " $FC_TEST_DATA_PATH/bin"
7277 commands :
78+ # To use ${FC_TEST_DATA_PATH} as testdata/, all files in the original directory must be
79+ # copied to the new directory.
80+ - cp -r testdata/* ${FC_TEST_DATA_PATH}
7381 # Install tc-redirect-tap.
74- - ' mkdir -p testdata/bin'
75- - ' GOBIN=$(pwd)/testdata/bin go get github.com/awslabs/tc-redirect-tap/cmd/tc-redirect-tap'
82+ - ' go get github.com/awslabs/tc-redirect-tap/cmd/tc-redirect-tap'
7683 # Copy vmlinux and root-drive.img.
77- - ' ln -s /var/lib/fc-ci/vmlinux.bin testdata/vmlinux'
78- - ' ln -s /var/lib/fc-ci/rootfs.ext4 testdata/root-drive.img'
84+ - ln -s /var/lib/fc-ci/vmlinux.bin ${FC_TEST_DATA_PATH}/vmlinux
85+ - ln -s /var/lib/fc-ci/rootfs.ext4 ${FC_TEST_DATA_PATH}/root-drive.img
86+ # Download Firecracker and its jailer.
87+ - make deps
7988 agents :
8089 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
8190 distro : " ${BUILDKITE_AGENT_META_DATA_DISTRO}"
8291 hostname : " ${BUILDKITE_AGENT_META_DATA_HOSTNAME}"
8392
93+ - wait
94+
8495 - label : ' build'
8596 commands :
8697 - ' make'
@@ -89,11 +100,8 @@ steps:
89100 distro : " ${BUILDKITE_AGENT_META_DATA_DISTRO}"
90101 hostname : " ${BUILDKITE_AGENT_META_DATA_HOSTNAME}"
91102
92-
93103 - label : ' :hammer: tests'
94104 commands :
95- - ' ln -s /var/lib/fc-ci/vmlinux.bin testdata/vmlinux'
96- - ' ln -s /var/lib/fc-ci/rootfs.ext4 testdata/root-drive.img'
97105 - " FC_TEST_TAP=fc-test-tap${BUILDKITE_BUILD_NUMBER} make test EXTRAGOARGS='-v -count=1 -race' DISABLE_ROOT_TESTS=true"
98106 agents :
99107 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
@@ -102,31 +110,18 @@ steps:
102110
103111 - label : ' :hammer: root tests'
104112 commands :
105- - ' ln -s /var/lib/fc-ci/vmlinux.bin testdata/vmlinux'
106- - ' ln -s /var/lib/fc-ci/rootfs.ext4 testdata/root-drive.img'
107- - ' mkdir -p $(pwd)/testdata/bin'
108- - ' GOBIN=$(pwd)/testdata/bin go get github.com/awslabs/tc-redirect-tap/cmd/tc-redirect-tap'
109- - " sudo PATH=$PATH FC_TEST_TAP=fc-root-tap${BUILDKITE_BUILD_NUMBER} make test EXTRAGOARGS='-v -count=1 -race' DISABLE_ROOT_TESTS="
113+ - " sudo PATH=$PATH FC_TEST_TAP=fc-root-tap${BUILDKITE_BUILD_NUMBER} FC_TEST_DATA_PATH=${FC_TEST_DATA_PATH} make test EXTRAGOARGS='-v -count=1 -race' DISABLE_ROOT_TESTS="
110114 agents :
111115 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
112116 distro : " ${BUILDKITE_AGENT_META_DATA_DISTRO}"
113117 hostname : " ${BUILDKITE_AGENT_META_DATA_HOSTNAME}"
114118
115119 - label : ' :hammer: test against firecracker master'
116120 env :
117- FC_TEST_BIN : " testdata/firecracker-master"
121+ FC_TEST_BIN : " ${FC_TEST_DATA_PATH}/firecracker-master"
122+ FC_TEST_JAILER_BIN : " ${FC_TEST_DATA_PATH}/jailer-master"
118123 DOCKER_IMAGE_TAG : " $BUILDKITE_BUILD_NUMBER"
119- FC_TEST_JAILER_BIN : " testdata/jailer-master"
120124 commands :
121- - ' ln -s /var/lib/fc-ci/vmlinux.bin testdata/vmlinux'
122- - ' ln -s /var/lib/fc-ci/rootfs.ext4 testdata/root-drive.img'
123- - ' buildkite-agent artifact download testdata/firecracker-master .'
124- - ' chmod +x testdata/firecracker-master'
125- - ' buildkite-agent artifact download testdata/jailer-master .'
126- - ' chmod +x testdata/jailer-master'
127- # Install tc-redirect-tap.
128- - ' mkdir -p testdata/bin'
129- - ' GOBIN=$(pwd)/testdata/bin go get github.com/awslabs/tc-redirect-tap/cmd/tc-redirect-tap'
130125 - " sudo -E PATH=$PATH FC_TEST_TAP=fc-mst-tap${BUILDKITE_BUILD_NUMBER} make test EXTRAGOARGS='-v -count=1 -race' DISABLE_ROOT_TESTS="
131126 agents :
132127 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
@@ -148,11 +143,12 @@ steps:
148143 - wait : ~
149144 continue_on_failure : true
150145
151- - label : ' :linux: cleanup taps '
146+ - label : ' :linux: cleanup'
152147 commands :
153148 - ' sudo ip tuntap del fc-test-tap${BUILDKITE_BUILD_NUMBER} mode tap'
154149 - ' sudo ip tuntap del fc-root-tap${BUILDKITE_BUILD_NUMBER} mode tap'
155150 - ' sudo ip tuntap del fc-mst-tap${BUILDKITE_BUILD_NUMBER} mode tap'
151+ - ' sudo rm -fr ${FC_TEST_DATA_PATH}'
156152 agents :
157153 queue : " ${BUILDKITE_AGENT_META_DATA_QUEUE:-default}"
158154 distro : " ${BUILDKITE_AGENT_META_DATA_DISTRO}"
0 commit comments