Currently, only one CI build can be started at the same time due to we only have only one testing cluster. This PR aims to enable multiple concurrent builds can be triggered to reduce the waiting time for CI builds. The major changes listed below: 1. Each build generate unique images for testing and debugging 2. Check whether the testing cluster is being used by another build. 3. Cache docker image & go mod after build finished 4. Improve dockerfiles for reusing docker build cache
Test Framework
Prerequisite tools
- GNU parallel >= 20161222
If you want to run test on Mac, you also need to install GNU tools for command compatibility. With Homebrew, you can get them by:
brew install coreutils findutils gnu-sed
Run a single test
cd $REPO/test
# run 'tests/test_node_hello_http.sh'
./tests/test_node_hello_http.sh
# if you want to preserve the resources that created by test for debug
export TEST_NOCLEANUP=yes
./tests/test_node_hello_http.sh
# run 'tests/test_environments/test_go_env.sh' with custom images
export GO_RUNTIME_IMAGE=my.docker.repo/go-env:test
./tests/test_environments/test_go_env.sh
Run tests in parallel
NOTE: Some tests will consume lots of resources and cause the test fail.
Example: Run tests with 4 concurrent jobs.
cd $REPO/test
export JOBS=4
./run_test.sh \
tests/test_backend_poolmgr.sh \
tests/test_node_hello_http.sh \
tests/test_pass.sh \
tests/test_specs/test_spec.sh
# The test output will be available in logs/
cat logs/test_backend_poolmgr.sh.log
# The summary report will be saved to logs/_recap
cat logs/_recap