Clean All Atlas organizations #8423
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Clean Atlas organization | |
on: | |
schedule: | |
- cron: "*/30 7-22 * * 1-5" | |
workflow_dispatch: | |
inputs: | |
lifetime: | |
description: "Lifetime of project in hours" | |
type: number | |
default: 1 | |
required: true | |
commercial: | |
description: "Clean commercial Atlas environments" | |
type: boolean | |
default: true | |
required: true | |
government: | |
description: "Clean government Atlas environments" | |
type: boolean | |
default: true | |
required: true | |
concurrency: | |
group: cleanup | |
jobs: | |
calculate-targets: | |
name: Calculate targets for execution | |
runs-on: ubuntu-latest | |
outputs: | |
targets: ${{ steps.set-targets.outputs.targets }} | |
steps: | |
- id: set-targets | |
name: Set Targets | |
env: | |
EVENT: ${{ github.event_name }} | |
COMMERCIAL: ${{ inputs.commercial }} | |
GOVERNMENT: ${{ inputs.government }} | |
run: | | |
if [ "$EVENT" == "schedule" ]; then | |
echo 'targets=["CloudQA", "CloudGovQA"]' >> $GITHUB_OUTPUT | |
exit 0 | |
fi | |
ENVS=() | |
if [ "$COMMERCIAL" == true ]; then | |
ENVS+=("CloudQA") | |
fi | |
if [ "$GOVERNMENT" == true ]; then | |
ENVS+=("CloudGovQA") | |
fi | |
JSON=$(printf '%s\n' "${ENVS[@]}" | jq -R . | jq -cs .) | |
echo "targets=$JSON" >> $GITHUB_OUTPUT | |
cleanup: | |
name: Cleanup Atlas Cloud | |
runs-on: ubuntu-latest | |
needs: | |
- calculate-targets | |
strategy: | |
matrix: | |
target: ${{ fromJSON(needs.calculate-targets.outputs.targets) }} | |
steps: | |
- name: Checkout codebase | |
uses: actions/checkout@v4 | |
- name: Install devbox | |
uses: jetify-com/devbox-install-action@v0.11.0 | |
with: | |
enable-cache: 'true' | |
- name: Build clean tool | |
run: | | |
devbox run -- 'cd tools/clean && go build .' | |
- name: Persist GCP credentials | |
id: gcp-cred | |
env: | |
GCP_SA_CRED: ${{ secrets.GCP_SA_CRED_NEW_TEST }} | |
run: | | |
echo $GCP_SA_CRED > ~/gcp_sa_cred.json | |
echo credentials=$(realpath ~/gcp_sa_cred.json) >> $GITHUB_OUTPUT | |
- name: Run cleaner | |
env: | |
MCLI_OPS_MANAGER_URL: ${{ matrix.target == 'CloudQA' && 'https://cloud-qa.mongodb.com/' || 'https://cloud-qa.mongodbgov.com/' }} | |
MCLI_PUBLIC_API_KEY: ${{ matrix.target == 'CloudQA' && secrets.ATLAS_PUBLIC_KEY || secrets.ATLAS_GOV_PUBLIC_KEY}} | |
MCLI_PRIVATE_API_KEY: ${{ matrix.target == 'CloudQA' && secrets.ATLAS_PRIVATE_KEY || secrets.ATLAS_GOV_PRIVATE_KEY }} | |
MCLI_ORG_ID: ${{ matrix.target == 'CloudQA' && secrets.ATLAS_ORG_ID || secrets.ATLAS_GOV_ORG_ID }} | |
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | |
GOOGLE_APPLICATION_CREDENTIALS: ${{ steps.gcp-cred.outputs.credentials }} | |
GOOGLE_PROJECT_ID: atlasoperator | |
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID_NEW_TEST }} | |
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} | |
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET_NEW_TEST }} | |
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} | |
AZURE_RESOURCE_GROUP_NAME: svet-test | |
PROJECT_LIFETIME: ${{ inputs.lifetime || 1 }} | |
run: | | |
devbox run -- 'cd tools/clean && ./clean atlas' | |