Skip to content

Fix 1339 balanced tests #2063

Fix 1339 balanced tests

Fix 1339 balanced tests #2063

Workflow file for this run

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