|
3 | 3 | # Runs at 04:00 am |
4 | 4 | - cron: '0 4 * * *' |
5 | 5 | workflow_dispatch: |
| 6 | + # delete this before merging the PR |
| 7 | + pull_request: |
6 | 8 | # Generates a list of libraries that cannot be |
7 | 9 | # compiled (printed to the action stdout) |
8 | 10 | name: Verify libraries compilation |
9 | 11 | jobs: |
10 | 12 | verify: |
11 | 13 | runs-on: 'ubuntu-24.04' |
| 14 | + continue-on-error: true |
| 15 | + strategy: |
| 16 | + matrix: |
| 17 | + # We will parallelize by alphabet letter |
| 18 | + letter: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] |
| 19 | + fail-fast: false |
| 20 | + outputs: |
| 21 | + # follows official example from https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/passing-information-between-jobs#using-job-outputs-in-a-matrix-job |
| 22 | + failed_libraries_a: ${{ steps.compile.outputs.failed_libraries_a }} |
| 23 | + failed_libraries_b: ${{ steps.compile.outputs.failed_libraries_b }} |
| 24 | + failed_libraries_c: ${{ steps.compile.outputs.failed_libraries_c }} |
| 25 | + failed_libraries_d: ${{ steps.compile.outputs.failed_libraries_d }} |
| 26 | + failed_libraries_e: ${{ steps.compile.outputs.failed_libraries_e }} |
| 27 | + failed_libraries_f: ${{ steps.compile.outputs.failed_libraries_f }} |
| 28 | + failed_libraries_g: ${{ steps.compile.outputs.failed_libraries_g }} |
| 29 | + failed_libraries_h: ${{ steps.compile.outputs.failed_libraries_h }} |
| 30 | + failed_libraries_i: ${{ steps.compile.outputs.failed_libraries_i }} |
| 31 | + failed_libraries_j: ${{ steps.compile.outputs.failed_libraries_j }} |
| 32 | + failed_libraries_k: ${{ steps.compile.outputs.failed_libraries_k }} |
| 33 | + failed_libraries_l: ${{ steps.compile.outputs.failed_libraries_l }} |
| 34 | + failed_libraries_m: ${{ steps.compile.outputs.failed_libraries_m }} |
| 35 | + failed_libraries_n: ${{ steps.compile.outputs.failed_libraries_n }} |
| 36 | + failed_libraries_o: ${{ steps.compile.outputs.failed_libraries_o }} |
| 37 | + failed_libraries_p: ${{ steps.compile.outputs.failed_libraries_p }} |
| 38 | + failed_libraries_q: ${{ steps.compile.outputs.failed_libraries_q }} |
| 39 | + failed_libraries_r: ${{ steps.compile.outputs.failed_libraries_r }} |
| 40 | + failed_libraries_s: ${{ steps.compile.outputs.failed_libraries_s }} |
| 41 | + failed_libraries_t: ${{ steps.compile.outputs.failed_libraries_t }} |
| 42 | + failed_libraries_u: ${{ steps.compile.outputs.failed_libraries_u }} |
| 43 | + failed_libraries_v: ${{ steps.compile.outputs.failed_libraries_v }} |
| 44 | + failed_libraries_w: ${{ steps.compile.outputs.failed_libraries_w }} |
| 45 | + failed_libraries_x: ${{ steps.compile.outputs.failed_libraries_x }} |
| 46 | + failed_libraries_y: ${{ steps.compile.outputs.failed_libraries_y }} |
| 47 | + failed_libraries_z: ${{ steps.compile.outputs.failed_libraries_z }} |
12 | 48 | steps: |
13 | 49 | - uses: actions/setup-java@v3 |
14 | 50 | with: |
|
17 | 53 | - uses: actions/checkout@v2 |
18 | 54 | with: |
19 | 55 | path: google-api-java-client-services |
20 | | - # we install the moreutils `parallel` command |
21 | | - - run: sudo apt-get install moreutils |
22 | | - - working-directory: google-api-java-client-services |
23 | | - run: bash .github/workflows/verify_compilation.sh |
| 56 | + |
| 57 | + - id: compile |
| 58 | + working-directory: google-api-java-client-services |
| 59 | + run: | |
| 60 | + set -ex |
| 61 | + bash .github/workflows/verify.sh "${{matrix.letter}}" |
| 62 | + print_results: |
| 63 | + runs-on: 'ubuntu-24.04' |
| 64 | + needs: [verify] |
| 65 | + steps: |
| 66 | + - run: | |
| 67 | + set -e |
| 68 | + echo '${{ toJSON(needs.verify.outputs) }}' \ |
| 69 | + | jq -j 'to_entries[] | select(.key | startswith("failed_libraries_")) | .value' \ |
| 70 | + | sed 's/,/\n/g' > failed_libs |
| 71 | +
|
| 72 | + if [[ $(cat failed_libs | wc -l) -gt 0 ]]; then |
| 73 | + echo "The following libraries cannot be compiled:" |
| 74 | + cat failed_libs |
| 75 | + exit 1 |
| 76 | + fi |
| 77 | + echo "All libraries of the current variant are compilable!" |
| 78 | +
|
24 | 79 |
|
0 commit comments