Refactor some tests (1) #3188
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: | |
# 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 | |
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 30 | |
# 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 }} | |
average_time_per_instance: ${{ steps.test_times_cache_present_init.outputs.average_time_per_instance }} | |
steps: | |
- name: checkout project | |
uses: actions/checkout@v2 | |
- 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-existing-test-times-cache-${{ github.run_id }} | |
restore-keys: ${{ runner.os }}-spring-cloud-k8s-existing-test-times-cache- | |
- name: check test times cache exists | |
id: check_files | |
uses: andstor/file-existence-action@v2 | |
with: | |
files: /tmp/sorted.txt | |
- name: show existing cache of test times | |
if: steps.check_files.outputs.files_exists == 'true' | |
shell: bash | |
run: cat /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 | |
echo "average_time_per_instance=${{ env.AVERAGE_TIME_PER_INSTANCE }}" >> $GITHUB_OUTPUT | |
test_when_cache_present: | |
needs: [ build ] | |
runs-on: ubuntu-latest | |
env: | |
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 30 | |
# only run this one if there is a previous cache of test times | |
if: needs.build.outputs.test_times_cache_present == 'true' | |
timeout-minutes: 120 | |
strategy: | |
fail-fast: true | |
matrix: | |
current_index: [ "${{ fromJSON(needs.build.outputs.matrix_array) }}" ] | |
number_of_jobs: [ "${{ fromJSON(needs.build.outputs.number_of_matrix_instances) }}" ] | |
average_time_per_instance: [ "${{ fromJSON(needs.build.outputs.average_time_per_instance) }}" ] | |
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 | |
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: pre-test-actions | |
uses: ./.github/workflows/composites/pre-test-actions | |
- name: testcontainers reuse support | |
shell: bash | |
run: echo "testcontainers.reuse.enable=true" > ~/.testcontainers.properties | |
- 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 }} | |
AVERAGE_TIME_PER_INSTANCE: ${{ matrix.average_time_per_instance }} | |
test_when_cache_missing: | |
needs: [ build ] | |
runs-on: ubuntu-latest | |
env: | |
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 30 | |
timeout-minutes: 120 | |
# 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: clean space | |
uses: ./.github/workflows/composites/clean-space | |
- name: set env variables | |
uses: ./.github/workflows/composites/env-variables | |
- name: setup project 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: 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: testcontainers reuse support | |
shell: bash | |
run: echo "testcontainers.reuse.enable=true" > ~/.testcontainers.properties | |
- 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 |