Skip to content

Infrastructure Smoke Test #2

Infrastructure Smoke Test

Infrastructure Smoke Test #2

Workflow file for this run

name: Infrastructure Smoke Test
on:
schedule:
- cron: "20 5 */2 * *"
jobs:
smoke-test-vm:
runs-on: ubuntu-latest
name: Create VM cluster infrastructure
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
OPENSHIFT_IMAGE_SOURCE_URI: ${{ secrets.OPENSHIFT_IMAGE_SOURCE_URI }}
COMPARTMENT_OCID: ${{ secrets.COMPARTMENT_OCID }}
ZONE_DNS_SUFFIX: ${{ secrets.ZONE_DNS_SUFFIX }}
CLUSTER_NAME: smoke-test-vm
outputs:
stack_id: ${{ steps.output-stack-id.outputs.stack_id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set NOW env variable
run: echo "NOW=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
- name: Create Terraform ZIP
run: |
if [ -f infrastructure.tf ]; then
zip infrastructure.zip infrastructure.tf
elif [ -d infrastructure ]; then
zip -j infrastructure.zip infrastructure/data.tf infrastructure/locals.tf infrastructure/main.tf infrastructure/output.tf infrastructure/schema.yaml infrastructure/variables.tf
else
echo "Could not find infrastructure.tf or infrastructure directory"
exit 1
fi
- name: Create RMS Stack
uses: oracle-actions/[email protected]
id: create-stack
with:
command: 'resource-manager stack create --compartment-id ${{ env.COMPARTMENT_OCID }} --display-name ${{ github.job }}-${{ env.NOW }} --config-source infrastructure.zip --variables "{\"compartment_ocid\": \"${{ env.COMPARTMENT_OCID }}\", \"cluster_name\": \"${{ env.CLUSTER_NAME }}-${{ env.NOW }}\", \"openshift_image_source_uri\": \"${{ env.OPENSHIFT_IMAGE_SOURCE_URI }}\", \"region\": \"${{ env.OCI_CLI_REGION }}\", \"tenancy_ocid\": \"${{ env.OCI_CLI_TENANCY }}\", \"zone_dns\": \"${{ env.CLUSTER_NAME }}-${{ env.NOW }}${{ env.ZONE_DNS_SUFFIX }}\"}"'
query: 'data.id'
- name: Output Stack ID
id: output-stack-id
env:
stack_id: ${{ steps.create-stack.outputs.raw_output }}
run: |
echo "stack_id=$(echo $stack_id | tr -d '"')" >> $GITHUB_OUTPUT
- name: RMS Stack Plan Job
uses: oracle-actions/[email protected]
id: stack-plan-job
with:
command: 'resource-manager job create-plan-job --wait-for-state SUCCEEDED --stack-id ${{ steps.create-stack.outputs.raw_output }}'
- name: RMS Stack Apply Job
uses: oracle-actions/[email protected]
id: stack-apply-job
with:
command: 'resource-manager job create-apply-job --wait-for-state SUCCEEDED --max-wait-seconds 1800 --execution-plan-strategy AUTO_APPROVED --stack-id ${{ steps.create-stack.outputs.raw_output }}'
smoke-test-bm:
runs-on: ubuntu-latest
name: Create BM cluster infrastructure
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
OPENSHIFT_IMAGE_SOURCE_URI: ${{ secrets.OPENSHIFT_IMAGE_SOURCE_URI }}
COMPARTMENT_OCID: ${{ secrets.COMPARTMENT_OCID }}
ZONE_DNS_SUFFIX: ${{ secrets.ZONE_DNS_SUFFIX }}
CLUSTER_NAME: smoke-test-bm
outputs:
stack_id: ${{ steps.output-stack-id.outputs.stack_id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set NOW env variable
run: echo "NOW=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
- name: Create Terraform ZIP
run: |
if [ -f infrastructure.tf ]; then
zip infrastructure.zip infrastructure.tf
elif [ -d infrastructure ]; then
zip -j infrastructure.zip infrastructure/data.tf infrastructure/locals.tf infrastructure/main.tf infrastructure/output.tf infrastructure/schema.yaml infrastructure/variables.tf
else
echo "Could not find infrastructure.tf or infrastructure directory"
exit 1
fi
- name: Create RMS Stack
uses: oracle-actions/[email protected]
id: create-stack
with:
command: 'resource-manager stack create --compartment-id ${{ env.COMPARTMENT_OCID }} --display-name ${{ github.job }}-${{ env.NOW }} --config-source infrastructure.zip --variables "{\"compartment_ocid\": \"${{ env.COMPARTMENT_OCID }}\", \"cluster_name\": \"${{ env.CLUSTER_NAME }}-${{ env.NOW }}\", \"control_plane_shape\": \"BM.Standard3.64\", \"control_plane_ocpu\": \"64\", \"control_plane_memory\": \"1024\", \"compute_shape\": \"BM.Standard3.64\", \"compute_ocpu\": \"64\", \"compute_memory\": \"1024\", \"openshift_image_source_uri\": \"${{ env.OPENSHIFT_IMAGE_SOURCE_URI }}\", \"region\": \"${{ env.OCI_CLI_REGION }}\", \"tenancy_ocid\": \"${{ env.OCI_CLI_TENANCY }}\", \"zone_dns\": \"${{ env.CLUSTER_NAME }}-${{ env.NOW }}${{ env.ZONE_DNS_SUFFIX }}\"}"'
query: 'data.id'
- name: Output Stack ID
id: output-stack-id
env:
stack_id: ${{ steps.create-stack.outputs.raw_output }}
run: |
echo "stack_id=$(echo $stack_id | tr -d '"')" >> $GITHUB_OUTPUT
- name: RMS Stack Plan Job
uses: oracle-actions/[email protected]
id: stack-plan-job
with:
command: 'resource-manager job create-plan-job --wait-for-state SUCCEEDED --stack-id ${{ steps.create-stack.outputs.raw_output }}'
- name: RMS Stack Apply Job
uses: oracle-actions/[email protected]
id: stack-apply-job
with:
command: 'resource-manager job create-apply-job --wait-for-state SUCCEEDED --max-wait-seconds 1800 --execution-plan-strategy AUTO_APPROVED --stack-id ${{ steps.create-stack.outputs.raw_output }}'
smoke-test-vm-multi-ad:
runs-on: ubuntu-latest
name: Create VM cluster infrastructure in multi-ad region
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
OPENSHIFT_IMAGE_SOURCE_URI: ${{ secrets.OPENSHIFT_IMAGE_SOURCE_URI }}
COMPARTMENT_OCID: ${{ secrets.COMPARTMENT_OCID }}
ZONE_DNS_SUFFIX: ${{ secrets.ZONE_DNS_SUFFIX }}
CLUSTER_NAME: smoke-test-vm-multi-ad
MUTLI_AD_REGION: eu-frankfurt-1
outputs:
stack_id: ${{ steps.output-stack-id.outputs.stack_id }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set NOW env variable
run: echo "NOW=$(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
- name: Create Terraform ZIP
run: |
if [ -f infrastructure.tf ]; then
zip infrastructure.zip infrastructure.tf
elif [ -d infrastructure ]; then
zip -j infrastructure.zip infrastructure/data.tf infrastructure/locals.tf infrastructure/main.tf infrastructure/output.tf infrastructure/schema.yaml infrastructure/variables.tf
else
echo "Could not find infrastructure.tf or infrastructure directory"
exit 1
fi
- name: Create RMS Stack
uses: oracle-actions/[email protected]
id: create-stack
with:
command: 'resource-manager stack create --compartment-id ${{ env.COMPARTMENT_OCID }} --display-name ${{ github.job }}-${{ env.NOW }} --config-source infrastructure.zip --variables "{\"compartment_ocid\": \"${{ env.COMPARTMENT_OCID }}\", \"cluster_name\": \"${{ env.CLUSTER_NAME }}-${{ env.NOW }}\", \"openshift_image_source_uri\": \"${{ env.OPENSHIFT_IMAGE_SOURCE_URI }}\", \"region\": \"${{ env.MUTLI_AD_REGION }}\", \"tenancy_ocid\": \"${{ env.OCI_CLI_TENANCY }}\", \"zone_dns\": \"${{ env.CLUSTER_NAME }}-${{ env.NOW }}${{ env.ZONE_DNS_SUFFIX }}\"}"'
query: 'data.id'
- name: Output Stack ID
id: output-stack-id
env:
stack_id: ${{ steps.create-stack.outputs.raw_output }}
run: |
echo "stack_id=$(echo $stack_id | tr -d '"')" >> $GITHUB_OUTPUT
- name: RMS Stack Plan Job
uses: oracle-actions/[email protected]
id: stack-plan-job
with:
command: 'resource-manager job create-plan-job --wait-for-state SUCCEEDED --stack-id ${{ steps.create-stack.outputs.raw_output }}'
- name: RMS Stack Apply Job
uses: oracle-actions/[email protected]
id: stack-apply-job
with:
command: 'resource-manager job create-apply-job --wait-for-state SUCCEEDED --max-wait-seconds 1800 --execution-plan-strategy AUTO_APPROVED --stack-id ${{ steps.create-stack.outputs.raw_output }}'
teardown-stacks:
if: ${{ !cancelled() }}
needs: [smoke-test-vm, smoke-test-bm, smoke-test-vm-multi-ad]
runs-on: ubuntu-latest
name: Teardown cluster infrastructure
env:
OCI_CLI_USER: ${{ secrets.OCI_CLI_USER }}
OCI_CLI_TENANCY: ${{ secrets.OCI_CLI_TENANCY }}
OCI_CLI_FINGERPRINT: ${{ secrets.OCI_CLI_FINGERPRINT }}
OCI_CLI_KEY_CONTENT: ${{ secrets.OCI_CLI_KEY_CONTENT }}
OCI_CLI_REGION: ${{ secrets.OCI_CLI_REGION }}
steps:
- name: Teardown VM Infrastructure
if: ${{ needs.smoke-test-vm.result == 'success' }}
uses: oracle-actions/[email protected]
id: teardown-vm-infra
with:
command: 'resource-manager job create-destroy-job --wait-for-state SUCCEEDED --max-wait-seconds 1800 --execution-plan-strategy AUTO_APPROVED --stack-id ${{ needs.smoke-test-vm.outputs.stack_id }}'
- name: Teardown BM Infrastructure
if: ${{ needs.smoke-test-bm.result == 'success' }}
uses: oracle-actions/[email protected]
id: teardown-bm-infra
with:
command: 'resource-manager job create-destroy-job --wait-for-state SUCCEEDED --max-wait-seconds 1800 --execution-plan-strategy AUTO_APPROVED --stack-id ${{ needs.smoke-test-bm.outputs.stack_id }}'
- name: Teardown VM multi-ad Infrastructure
if: ${{ needs.smoke-test-vm-multi-ad.result == 'success' }}
uses: oracle-actions/[email protected]
id: teardown-vm-multi-ad-infra
with:
command: 'resource-manager job create-destroy-job --wait-for-state SUCCEEDED --max-wait-seconds 1800 --execution-plan-strategy AUTO_APPROVED --stack-id ${{ needs.smoke-test-vm-multi-ad.outputs.stack_id }}'
- name: Destroy VM RMS Stack
if: ${{ steps.teardown-vm-infra.outcome == 'success' }}
uses: oracle-actions/[email protected]
id: destroy-vm-stack
continue-on-error: true
with:
command: 'resource-manager stack delete --force --stack-id ${{ needs.smoke-test-vm.outputs.stack_id }}'
- name: Destroy BM RMS Stack
if: ${{ steps.teardown-bm-infra.outcome == 'success' }}
uses: oracle-actions/[email protected]
id: destroy-bm-stack
continue-on-error: true
with:
command: 'resource-manager stack delete --force --stack-id ${{ needs.smoke-test-bm.outputs.stack_id }}'
- name: Destroy VM multi-ad RMS Stack
if: ${{ steps.teardown-vm-multi-ad-infra.outcome == 'success' }}
uses: oracle-actions/[email protected]
id: destroy-vm-multi-ad-stack
continue-on-error: true
with:
command: 'resource-manager stack delete --force --stack-id ${{ needs.smoke-test-vm-multi-ad.outputs.stack_id }}'