name: Flaky test detector run-name: Flaky test detector - ${{ inputs.flaky_test }} (${{ inputs.flaky_test_runs_per_job }}x${{ inputs.flaky_test_parallel_jobs }}) on: workflow_dispatch: inputs: flaky_test: required: true type: string description: Test to run flaky_test_runs_per_job: required: false default: 8 type: number description: Number of times to run the test flaky_test_parallel_jobs: required: false default: 32 type: number description: Number of parallel jobs to run env: image_suffix: -v1b94240 pg15_version: 15.4 build_image_name: citus/extbuilder test_image_name: citus/failtester jobs: set_image_names: name: Set CI image names runs-on: ubuntu-latest outputs: build_image: ${{ steps.set_build_image_name.outputs.image }} test_image: ${{ steps.set_test_image_name.outputs.image }} steps: - id: set_build_image_name run: | echo "image=${{ env.build_image_name }}:${{ env.pg15_version }}${{ env.image_suffix }}" >> "$GITHUB_OUTPUT" shell: bash - id: set_test_image_name run: | echo "image=${{ env.test_image_name }}:${{ env.pg15_version }}${{ env.image_suffix }}" >> "$GITHUB_OUTPUT" shell: bash build: name: Build Citus runs-on: ubuntu-latest needs: set_image_names container: image: ${{ needs.set_image_names.outputs.build_image }} options: --user root steps: - uses: actions/checkout@v3.5.0 - name: Configure, Build, and Install run: | echo "PG_MAJOR=${PG_MAJOR}" >> $GITHUB_ENV ./ci/build-citus.sh shell: bash - uses: actions/upload-artifact@v3.1.1 with: name: build-${{ env.PG_MAJOR }} path: |- ./build-${{ env.PG_MAJOR }}/* ./install-${{ env.PG_MAJOR }}.tar prepare_parallelization_matrix: name: Prepare parallelization matrix runs-on: ubuntu-latest outputs: json: ${{ steps.parallelization.outputs.json }} steps: - uses: actions/checkout@v3.5.0 - uses: "./.github/actions/parallelization" id: parallelization with: count: ${{ inputs.flaky_test_parallel_jobs }} test_flakyness: name: Test flakyness runs-on: ubuntu-latest container: image: ${{ needs.set_image_names.outputs.test_image }} options: --user root needs: [set_image_names, build, prepare_parallelization_matrix] env: test: "${{ inputs.flaky_test }}" runs: "${{ inputs.flaky_test_runs_per_job }}" skip: false strategy: fail-fast: false matrix: ${{ fromJson(needs.prepare_parallelization_matrix.outputs.json) }} steps: - uses: actions/checkout@v3.5.0 - uses: "./.github/actions/install_extension" - name: Run minimal tests run: |- gosu circleci src/test/regress/citus_tests/run_test.py ${{ env.test }} --repeat ${{ env.runs }} --use-base-schedule --use-whole-schedule-line shell: bash - uses: "./.github/actions/save_logs_and_results" if: always() with: folder: ${{ matrix.id }}