Fix 1339 balanced tests #2051
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: github-workflow | |
on: | |
push: | |
branches: [ main, 2.1.x, 3.0.x ] | |
pull_request: | |
branches: [ main, 2.1.x, 3.0.x ] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
TESTCONTAINERS_REUSE_ENABLE: false | |
# this might get set to true if there is an existing cache of test times | |
# this happens in 'matrix-bounds-on-test-times-cache-hit' | |
TEST_TIMES_CACHE_PRESENT: false | |
# this job ('build') outputs a value from step 'test_times_cache_present_init', that has the name of: | |
# 'test_times_cache_present'. This can later be used by other jobs. For example, we use this one | |
# to skip the job responsible for running the tests, if a previous cache that has the test times is not present. | |
# Same for other two variables 'number_of_matrix_instances' and 'matrix_array'. | |
outputs: | |
test_times_cache_present: ${{ steps.test_times_cache_present_init.outputs.test_times_cache_present }} | |
number_of_matrix_instances: ${{ steps.test_times_cache_present_init.outputs.number_of_matrix_instances }} | |
matrix_array: ${{ steps.test_times_cache_present_init.outputs.matrix_array }} | |
steps: | |
- name: checkout project | |
uses: actions/checkout@v2 | |
- name: clean space | |
uses: ./.github/workflows/composites/clean-space | |
- name: set env variables | |
uses: ./.github/workflows/composites/env-variables | |
- name: setup project jdk-17 | |
id: jdk_17 | |
uses: ./.github/workflows/composites/setup-jdk17 | |
if: env.BASE_BRANCH == 'main' || env.BASE_BRANCH == '3.0.x' | |
- name: setup project jdk-8 | |
uses: ./.github/workflows/composites/setup-jdk1.8 | |
if: env.BASE_BRANCH == '2.1.x' | |
- name: cache local maven repository | |
uses: ./.github/workflows/composites/cache | |
- name: Show caches | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const caches = await github.rest.actions.getActionsCacheList({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
}) | |
for (const cache of caches.data.actions_caches) { | |
console.log(cache) | |
} | |
- name: maven build with dry-run for tests | |
uses: ./.github/workflows/composites/maven-build-with-dry-run-for-tests | |
- name: restore test times cache if it exists | |
id: restore_test_times_cache | |
if: env.BASE_BRANCH != '2.1.x' | |
uses: actions/cache/restore@v3 | |
with: | |
path: /tmp/sorted.txt | |
key: ${{ runner.os }}-spring-cloud-k8s-cache-of-test-times-${{ github.run_id }} | |
restore-keys: ${{ runner.os }}-spring-cloud-k8s-cache-of-test-times- | |
- name: check test times cache exists | |
id: check_files | |
uses: andstor/file-existence-action@v2 | |
with: | |
files: /tmp/sorted.txt | |
- name: compute matrix related fields when cache is present | |
if: steps.check_files.outputs.files_exists == 'true' | |
uses: ./.github/workflows/composites/matrix-bounds-on-test-times-cache-hit | |
- name: matrix related variables when cache is present | |
id: test_times_cache_present_init | |
run: | | |
echo "test_times_cache_present=${{ env.TEST_TIMES_CACHE_PRESENT }}" >> $GITHUB_OUTPUT | |
echo "number_of_matrix_instances=${{ env.NUMBER_OF_MATRIX_INSTANCES }}" >> $GITHUB_OUTPUT | |
echo "matrix_array=${{ env.MATRIX_ARRAY }}" >> $GITHUB_OUTPUT | |
- name: build controllers project | |
uses: ./.github/workflows/composites/build-controllers-project | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: build integration tests project | |
uses: ./.github/workflows/composites/build-integration-tests-project | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: save controller docker images | |
uses: ./.github/workflows/composites/save-controller-images | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: save integration tests docker images | |
uses: ./.github/workflows/composites/save-integration-tests-images | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: echo saved images | |
uses: ./.github/workflows/composites/echo-saved-images | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: upload docker images | |
uses: ./.github/workflows/composites/upload-docker-images | |
if: env.BASE_BRANCH != '2.1.x' | |
# we need to run some test, so that K3s container is started and then all other instances will re-use this one. | |
# Otherwise, (since we use static ports) there might be two instances starting at the same time, and ports might conflict | |
# This does not run on '2.1.x' branch. | |
fabric8_istio_integration_test: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout project | |
uses: actions/checkout@v2 | |
- name: set env variables | |
uses: ./.github/workflows/composites/env-variables | |
- name: setup project | |
uses: ./.github/workflows/composites/setup-jdk17 | |
if: env.BASE_BRANCH == 'main' || env.BASE_BRANCH == '3.0.x' | |
- name: cache local maven repository | |
uses: ./.github/workflows/composites/cache | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: download docker images | |
uses: ./.github/workflows/composites/download-docker-images | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: echo saved images | |
uses: ./.github/workflows/composites/echo-saved-images | |
if: env.BASE_BRANCH != '2.1.x' | |
- name: integration test fabric8 istio | |
uses: ./.github/workflows/composites/fabric8-istio-integration-test | |
if: env.BASE_BRANCH != '2.1.x' | |
test_when_cache_present: | |
needs: [ build, fabric8_istio_integration_test ] | |
runs-on: ubuntu-latest | |
# only run this one if there is a previous cache of test times | |
if: needs.build.outputs.test_times_cache_present == 'true' | |
strategy: | |
fail-fast: true | |
matrix: | |
current_index: [ "${{ fromJSON(needs.build.outputs.matrix_array) }}" ] | |
number_of_jobs: [ "${{ fromJSON(needs.build.outputs.number_of_matrix_instances) }}" ] | |
steps: | |
- name: checkout project | |
uses: actions/checkout@v2 | |
- name: pre-test-actions | |
uses: ./.github/workflows/composites/pre-test-actions | |
- name: run and save test times when cache is present | |
uses: ./.github/workflows/composites/run-and-save-test-times-when-cache-present | |
env: | |
CURRENT_INDEX: ${{ matrix.current_index }} | |
NUMBER_OF_JOBS: ${{ matrix.number_of_jobs }} | |
test_when_cache_missing: | |
needs: [ build, fabric8_istio_integration_test ] | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
# only run this one if there is no previous cache of test times | |
if: needs.build.outputs.test_times_cache_present == 'false' | |
strategy: | |
fail-fast: true | |
matrix: | |
current_index: [0, 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] | |
number_of_jobs: [32] | |
steps: | |
- name: checkout project | |
uses: actions/checkout@v2 | |
- name: pre-test-actions | |
uses: ./.github/workflows/composites/pre-test-actions | |
- name: compute single step test bounds | |
uses: ./.github/workflows/composites/test-bounds | |
env: | |
CURRENT_INDEX: ${{ matrix.current_index }} | |
NUMBER_OF_JOBS: ${{ matrix.number_of_jobs }} | |
- name: run and save individual test times | |
env: | |
CURRENT_INDEX: ${{ matrix.current_index }} | |
if: env.BASE_BRANCH != '2.1.x' | |
uses: ./.github/workflows/composites/run-and-save-test-times-when-cache-missing | |
save_test_times_when_cache_missing: | |
runs-on: ubuntu-latest | |
needs: [build, test_when_cache_missing ] | |
steps: | |
- name: checkout project | |
uses: actions/checkout@v2 | |
- name: compute and save running time of tests | |
if: env.BASE_BRANCH != '2.1.x' | |
uses: ./.github/workflows/composites/test-times | |
save_test_times_when_cache_present: | |
runs-on: ubuntu-latest | |
needs: [ build, test_when_cache_present ] | |
steps: | |
- name: checkout project | |
uses: actions/checkout@v2 | |
- name: compute and save running time of tests | |
if: env.BASE_BRANCH != '2.1.x' | |
uses: ./.github/workflows/composites/test-times |