diff options
Diffstat (limited to '.buildkite')
-rw-r--r-- | .buildkite/hooks/post-command | 24 | ||||
-rw-r--r-- | .buildkite/hooks/pre-command | 11 | ||||
-rw-r--r-- | .buildkite/pipeline.yaml | 107 |
3 files changed, 142 insertions, 0 deletions
diff --git a/.buildkite/hooks/post-command b/.buildkite/hooks/post-command new file mode 100644 index 000000000..ce3111f3c --- /dev/null +++ b/.buildkite/hooks/post-command @@ -0,0 +1,24 @@ +# Upload test logs on failure, if there are any. +if [[ "${BUILDKITE_COMMAND_EXIT_STATUS}" -ne "0" ]]; then + declare log_count=0 + for log in $(make testlogs 2>/dev/null | sort | uniq); do + buildkite-agent artifact upload "${log}" + log_count=$((${log_count}+1)) + # N.B. If *all* tests fail due to some common cause, then we will + # end up spending way too much time uploading logs. Instead, we just + # upload the first 100 and stop. That is hopefully enough to debug. + if [[ "${log_count}" -ge 100 ]]; then + echo "Only uploaded first 100 failures; skipping the rest." + break + fi + done + # Attempt to clear the cache and shut down. + make clean || echo "make clean failed with code $?" + make bazel-shutdown || echo "make bazel-shutdown failed with code $?" +fi + +# Kill any running containers (clear state). +CONTAINERS="$(docker ps -q)" +if ! [[ -z "${CONTAINERS}" ]]; then + docker container kill ${CONTAINERS} 2>/dev/null || true +fi
\ No newline at end of file diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command new file mode 100644 index 000000000..7d277202b --- /dev/null +++ b/.buildkite/hooks/pre-command @@ -0,0 +1,11 @@ +# Setup for parallelization with PARTITION and TOTAL_PARTITIONS. +export PARTITION=${BUILDKITE_PARALLEL_JOB:-0} +PARTITION=$((${PARTITION}+1)) # 1-indexed, but PARALLEL_JOB is 0-indexed. +export TOTAL_PARTITIONS=${BUILDKITE_PARALLEL_JOB_COUNT:-1} + +# Ensure Docker has experimental enabled. +EXPERIMENTAL=$(sudo docker version --format='{{.Server.Experimental}}') +if test "${EXPERIMENTAL}" != "true"; then + make sudo TARGETS=//runsc:runsc ARGS="install --experimental=true" + sudo systemctl restart docker +fi diff --git a/.buildkite/pipeline.yaml b/.buildkite/pipeline.yaml new file mode 100644 index 000000000..79a80d9c8 --- /dev/null +++ b/.buildkite/pipeline.yaml @@ -0,0 +1,107 @@ +_templates: + common: &common + timeout_in_minutes: 30 + retry: + automatic: + - exit_status: -1 + limit: 10 + - exit_status: "*" + limit: 2 + +steps: + # Run basic smoke tests before preceding to other tests. + - <<: *common + label: ":fire: Smoke tests" + command: make smoke-tests + - wait + + # Check that the Go branch builds. + - <<: *common + label: ":golang: Go branch" + commands: + - make go + - git checkout go && git clean -f + - go build ./... + + # Release workflow. + - <<: *common + label: ":ship: Release tests" + commands: make release + + # Basic unit tests. + - <<: *common + label: ":test_tube: Unit tests" + command: make unit-tests + + # All system call tests. + - <<: *common + label: ":toolbox: System call tests" + command: make syscall-tests + parallelism: 20 + + # Integration tests. + - <<: *common + label: ":parachute: FUSE tests" + command: make fuse-tests + - <<: *common + label: ":docker: Docker tests" + command: make docker-tests + - <<: *common + label: ":goggles: Overlay tests" + command: make overlay-tests + - <<: *common + label: ":safety_pin: Host network tests" + command: make hostnet-tests + - <<: *common + label: ":satellite: SWGSO tests" + command: make swgso-tests + - <<: *common + label: ":coffee: Do tests" + command: make do-tests + - <<: *common + label: ":person_in_lotus_position: KVM tests" + command: make kvm-tests + - <<: *common + label: ":docker: Containerd 1.3.9 tests" + command: make containerd-test-1.3.9 + - <<: *common + label: ":docker: Containerd 1.4.3 tests" + command: make containerd-test-1.4.3 + + # Check the website builds. + - <<: *common + label: ":earth_americas: Website tests" + command: make website-build + + # Networking tests. + - <<: *common + label: ":table_tennis_paddle_and_ball: IPTables tests" + command: make iptables-tests + - <<: *common + label: ":construction_worker: Packetdrill tests" + command: make packetdrill-tests + - <<: *common + label: ":hammer: Packetimpact tests" + command: make packetimpact-tests + + # Runtime tests. + - <<: *common + label: ":php: PHP runtime tests" + command: make php7.3.6-runtime-tests_vfs2 + parallelism: 10 + - <<: *common + label: ":java: Java runtime tests" + command: make java11-runtime-tests_vfs2 + parallelism: 40 + - <<: *common + label: ":golang: Go runtime tests" + command: make go1.12-runtime-tests_vfs2 + parallelism: 10 + - <<: *common + label: ":node: NodeJS runtime tests" + command: make nodejs12.4.0-runtime-tests_vfs2 + parallelism: 10 + - <<: *common + label: ":python: Python runtime tests" + command: make python3.7.3-runtime-tests_vfs2 + parallelism: 10 |