Skip to content

Commit f56f4aa

Browse files
committed
Add generic dispatchers
Signed-off-by: Ben <[email protected]>
1 parent 3930b5d commit f56f4aa

File tree

4 files changed

+62
-14
lines changed

4 files changed

+62
-14
lines changed
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
name: Nightly IBM VM Cleanup Dispatcher
2+
3+
on:
4+
schedule:
5+
# Run daily at 4 AM UTC (4 hours after the nightly provisioning at midnight)
6+
- cron: '0 4 * * *'
7+
workflow_dispatch: # Allow manual triggering for on-demand cleanup
8+
9+
jobs:
10+
cleanup-warp-vm:
11+
uses: ./.github/workflows/ibm-nightly-vm-cleanup.yaml
12+
secrets:
13+
VM_CONFIG: ${{ secrets.IBM_WARP_VM_CONFIG }}
14+
IBM_CLOUD_API_KEY: ${{ secrets.IBM_CLOUD_API_KEY }}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: Nightly IBM VM Provision Dispatcher
2+
3+
on:
4+
schedule:
5+
# Run daily at midnight UTC
6+
- cron: '0 0 * * *'
7+
workflow_dispatch: # Allow manual triggering for on-demand provisioning
8+
9+
jobs:
10+
provision-warp-vm:
11+
uses: ./.github/workflows/ibm-nightly-vm-provision.yaml
12+
with:
13+
VM_CLOUD_INIT_CONFIG_LOCATION: ".github/ibm-warp-runner-config.yaml"
14+
secrets:
15+
VM_CONFIG: ${{ secrets.IBM_WARP_VM_CONFIG }}
16+
IBM_CLOUD_API_KEY: ${{ secrets.IBM_CLOUD_API_KEY }}
17+
IBM_COS_WRITER_CREDENTIALS: ${{ secrets.IBM_COS_WRITER_CREDENTIALS }}
18+
SLACK_NIGHTLY_RESULTS_URL: ${{ secrets.SLACK_NIGHTLY_RESULTS_URL }}

.github/workflows/ibm-nightly-vm-cleanup.yaml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
name: Nightly IBM VM Cleanup
22

33
on:
4-
schedule:
5-
# Run daily at 4 AM UTC (4 hours after the nightly provisioning at midnight)
6-
- cron: '0 4 * * *'
4+
workflow_call:
5+
secrets:
6+
VM_CONFIG:
7+
required: true
8+
IBM_CLOUD_API_KEY:
9+
required: true
710
workflow_dispatch: # Allow manual triggering for on-demand cleanup
811

912
permissions:
@@ -27,12 +30,12 @@ jobs:
2730
2831
- name: Mask and export VM config from JSON secret
2932
env:
30-
IBM_WARP_VM_CONFIG: ${{ secrets.IBM_WARP_VM_CONFIG }}
33+
VM_CONFIG: ${{ secrets.VM_CONFIG }}
3134
run: |
3235
# Mask non-empty values
33-
jq -r 'to_entries[] | select(.value != "") | "::add-mask::\(.value)"' <<<"${IBM_WARP_VM_CONFIG}"
36+
jq -r 'to_entries[] | select(.value != "") | "::add-mask::\(.value)"' <<<"${VM_CONFIG}"
3437
# Append KEY=VALUE lines to GITHUB_ENV
35-
jq -r 'to_entries[] | "\(.key)=\(.value)"' <<<"${IBM_WARP_VM_CONFIG}" >>"$GITHUB_ENV"
38+
jq -r 'to_entries[] | "\(.key)=\(.value)"' <<<"${VM_CONFIG}" >>"$GITHUB_ENV"
3639
3740
3841
- name: Authenticate with IBM Cloud

.github/workflows/ibm-nightly-vm-provision.yaml

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
name: Nightly IBM VM Provisioning
22

33
on:
4-
schedule:
5-
- cron: '0 0 * * *' # Midnight UTC
4+
workflow_call:
5+
inputs:
6+
VM_CLOUD_INIT_CONFIG_LOCATION:
7+
required: true
8+
type: string
9+
secrets:
10+
VM_CONFIG:
11+
required: true
12+
IBM_CLOUD_API_KEY:
13+
required: true
14+
IBM_COS_WRITER_CREDENTIALS:
15+
required: true
16+
SLACK_NIGHTLY_RESULTS_URL:
17+
required: true
618
workflow_dispatch:
719

820
permissions:
@@ -29,12 +41,12 @@ jobs:
2941
3042
- name: Mask and export VM config from JSON secret
3143
env:
32-
IBM_WARP_VM_CONFIG: ${{ secrets.IBM_WARP_VM_CONFIG }}
44+
VM_CONFIG: ${{ secrets.VM_CONFIG }}
3345
run: |
3446
# Mask non-empty values
35-
jq -r 'to_entries[] | select(.value != "") | "::add-mask::\(.value)"' <<<"${IBM_WARP_VM_CONFIG}"
47+
jq -r 'to_entries[] | select(.value != "") | "::add-mask::\(.value)"' <<<"${VM_CONFIG}"
3648
# Append KEY=VALUE lines to GITHUB_ENV
37-
jq -r 'to_entries[] | "\(.key)=\(.value)"' <<<"${IBM_WARP_VM_CONFIG}" >>"$GITHUB_ENV"
49+
jq -r 'to_entries[] | "\(.key)=\(.value)"' <<<"${VM_CONFIG}" >>"$GITHUB_ENV"
3850
3951
4052
- name: Authenticate with IBM Cloud
@@ -57,14 +69,15 @@ jobs:
5769
- name: Create user-data with secrets
5870
env:
5971
SLACK_NIGHTLY_RESULTS_URL: ${{ secrets.SLACK_NIGHTLY_RESULTS_URL }}
72+
VM_CLOUD_INIT_CONFIG_LOCATION: ${{ inputs.VM_CLOUD_INIT_CONFIG_LOCATION }}
6073
run: |
6174
# Mask sensitive values
6275
[ -n "${SLACK_NIGHTLY_RESULTS_URL:-}" ] && echo "::add-mask::$SLACK_NIGHTLY_RESULTS_URL"
6376
export SLACK_NIGHTLY_RESULTS_URL
6477
export AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY WARP_LOGS_BUCKET IBM_COS_ENDPOINT
6578
6679
# Use envsubst to replace variables in the config
67-
envsubst < .github/ibm-warp-runner-config.yaml > /tmp/ibm-warp-runner-config-with-secrets.yaml
80+
envsubst < ${VM_CLOUD_INIT_CONFIG_LOCATION} > /tmp/ibm-vm-runner-config-with-secrets.yaml
6881
6982
- name: Provision IBM VM
7083
run: |
@@ -80,7 +93,7 @@ jobs:
8093
"${SUBNET_ID}" \
8194
--image "${IMAGE_ID}" \
8295
--sgs "${SECURITY_GROUP_ID}" \
83-
--user-data @/tmp/ibm-warp-runner-config-with-secrets.yaml \
96+
--user-data @/tmp/ibm-vm-runner-config-with-secrets.yaml \
8497
> /dev/null 2>&1
8598
then
8699
echo "❌ Failed to provision IBM VM"
@@ -125,6 +138,6 @@ jobs:
125138
if: always()
126139
run: |
127140
# Remove temporary user-data file
128-
rm -f /tmp/ibm-warp-runner-config-with-secrets.yaml
141+
rm -f /tmp/ibm-vm-runner-config-with-secrets.yaml
129142
# Logout from IBM Cloud
130143
ibmcloud logout > /dev/null 2>&1 || true

0 commit comments

Comments
 (0)