|
9 | 9 |
|
10 | 10 | permissions: |
11 | 11 | contents: read |
12 | | - id-token: write |
13 | 12 |
|
14 | 13 | jobs: |
15 | 14 | cleanup: |
16 | 15 | name: Destroy ${{ matrix.name }} |
17 | | - if: github.event.workflow_run.head_repository.full_name == github.repository && contains(fromJSON('["failure","cancelled","timed_out"]'), github.event.workflow_run.conclusion) |
| 16 | + if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.head_repository.full_name == github.repository && contains(fromJSON('["failure","cancelled","timed_out"]'), github.event.workflow_run.conclusion) |
18 | 17 | runs-on: ubuntu-24.04 |
19 | 18 | strategy: |
20 | 19 | fail-fast: false |
21 | 20 | matrix: |
22 | 21 | include: |
23 | 22 | - name: DigitalOcean ISLE |
| 23 | + kind: app |
24 | 24 | provider: digitalocean |
25 | 25 | template: isle |
| 26 | + environment: cloud-smoke-cleanup-digitalocean |
| 27 | + concurrency_group: cloud-compose-smoke-digitalocean-isle |
26 | 28 | - name: Linode WordPress |
| 29 | + kind: app |
27 | 30 | provider: linode |
28 | 31 | template: wp |
29 | | - - name: GCP WordPress |
30 | | - provider: gcp |
31 | | - template: wp |
| 32 | + environment: cloud-smoke-cleanup-linode |
| 33 | + concurrency_group: cloud-compose-smoke-linode-wp |
| 34 | + - name: Linode Ansible Drupal config-management |
| 35 | + kind: config-management |
| 36 | + provider: linode |
| 37 | + method: ansible |
| 38 | + environment: cloud-smoke-cleanup-linode |
| 39 | + concurrency_group: cloud-compose-config-management-ansible-drupal |
| 40 | + - name: Linode Salt Drupal config-management |
| 41 | + kind: config-management |
| 42 | + provider: linode |
| 43 | + method: salt |
| 44 | + environment: cloud-smoke-cleanup-linode |
| 45 | + concurrency_group: cloud-compose-config-management-salt-drupal |
| 46 | + environment: ${{ matrix.environment }} |
| 47 | + concurrency: |
| 48 | + group: ${{ matrix.concurrency_group }} |
| 49 | + cancel-in-progress: false |
| 50 | + env: |
| 51 | + CLOUD_COMPOSE_SMOKE_RUN_ID: ${{ github.event.workflow_run.id }} |
| 52 | + DIGITALOCEAN_TOKEN: ${{ matrix.provider == 'digitalocean' && secrets.DIGITALOCEAN_TOKEN || '' }} |
| 53 | + LINODE_TOKEN: ${{ matrix.provider == 'linode' && secrets.LINODE_TOKEN || '' }} |
| 54 | + steps: |
| 55 | + - name: Checkout repository |
| 56 | + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 |
| 57 | + with: |
| 58 | + ref: ${{ github.sha }} |
| 59 | + |
| 60 | + - name: Sweep provider smoke resources |
| 61 | + if: matrix.kind == 'app' |
| 62 | + run: ci/cloud-smoke.sh sweep-${{ matrix.provider }}-${{ matrix.template }} |
| 63 | + |
| 64 | + - name: Sweep config-management smoke resources |
| 65 | + if: matrix.kind == 'config-management' |
| 66 | + run: ci/config-management-cloud-smoke.sh sweep-${{ matrix.method }}-drupal |
| 67 | + |
| 68 | + gcp-cleanup: |
| 69 | + name: Destroy GCP WordPress |
| 70 | + if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.head_repository.full_name == github.repository && contains(fromJSON('["failure","cancelled","timed_out"]'), github.event.workflow_run.conclusion) |
| 71 | + runs-on: ubuntu-24.04 |
| 72 | + environment: cloud-smoke-cleanup-gcp |
| 73 | + permissions: |
| 74 | + contents: read |
| 75 | + id-token: write |
32 | 76 | concurrency: |
33 | | - group: cloud-compose-smoke-${{ matrix.provider }}-${{ matrix.template }} |
| 77 | + group: cloud-compose-smoke-gcp-wp |
34 | 78 | cancel-in-progress: false |
35 | 79 | env: |
36 | 80 | CLOUD_COMPOSE_SMOKE_RUN_ID: ${{ github.event.workflow_run.id }} |
37 | | - DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }} |
38 | 81 | GCLOUD_OIDC_POOL: ${{ vars.GCLOUD_OIDC_POOL || secrets.GCLOUD_OIDC_POOL }} |
39 | 82 | GCLOUD_PROJECT: ${{ vars.GCLOUD_PROJECT || secrets.GCLOUD_PROJECT }} |
40 | 83 | GCLOUD_REGION: ${{ vars.GCLOUD_REGION || secrets.GCLOUD_REGION }} |
41 | 84 | GSA: ${{ vars.GSA || secrets.GSA }} |
42 | | - LINODE_TOKEN: ${{ secrets.LINODE_TOKEN }} |
43 | 85 | steps: |
44 | 86 | - name: Checkout repository |
45 | 87 | uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 |
| 88 | + with: |
| 89 | + ref: ${{ github.sha }} |
| 90 | + |
| 91 | + - name: Check GCP cleanup configuration |
| 92 | + run: | |
| 93 | + test -n "$GCLOUD_OIDC_POOL" || { echo "GCLOUD_OIDC_POOL environment variable or secret is required for GCP cleanup"; exit 1; } |
| 94 | + test -n "$GSA" || { echo "GSA environment variable or secret is required for GCP cleanup"; exit 1; } |
| 95 | + test -n "$GCLOUD_PROJECT" || { echo "GCLOUD_PROJECT environment variable or secret is required for GCP cleanup"; exit 1; } |
46 | 96 |
|
47 | 97 | - name: Authenticate to Google Cloud |
48 | | - if: matrix.provider == 'gcp' && env.GCLOUD_OIDC_POOL != '' && env.GSA != '' && env.GCLOUD_PROJECT != '' |
49 | 98 | uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3 |
50 | 99 | with: |
51 | 100 | workload_identity_provider: ${{ env.GCLOUD_OIDC_POOL }} |
52 | 101 | service_account: ${{ env.GSA }} |
53 | 102 | project_id: ${{ env.GCLOUD_PROJECT }} |
54 | 103 |
|
55 | 104 | - name: Install gcloud |
56 | | - if: matrix.provider == 'gcp' && env.GCLOUD_OIDC_POOL != '' && env.GSA != '' && env.GCLOUD_PROJECT != '' |
57 | 105 | uses: google-github-actions/setup-gcloud@aa5489c8933f4cc7a4f7d45035b3b1440c9c10db # v3 |
58 | 106 |
|
59 | | - - name: Sweep smoke resources |
60 | | - if: matrix.provider != 'gcp' || (env.GCLOUD_OIDC_POOL != '' && env.GSA != '' && env.GCLOUD_PROJECT != '') |
61 | | - run: ci/cloud-smoke.sh sweep-${{ matrix.provider }}-${{ matrix.template }} |
62 | | - |
63 | | - - name: Skip GCP cleanup |
64 | | - if: matrix.provider == 'gcp' && (env.GCLOUD_OIDC_POOL == '' || env.GSA == '' || env.GCLOUD_PROJECT == '') |
65 | | - run: echo "Skipping GCP cleanup because GCP smoke secrets are not configured." |
| 107 | + - name: Sweep GCP smoke resources |
| 108 | + run: ci/cloud-smoke.sh sweep-gcp-wp |
0 commit comments