Clean All Atlas organizations #4159
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: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version-file: "${{ github.workspace }}/tools/clean/go.mod" | |
cache: false | |
- name: Build clean tool | |
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: (cd tools/clean && ./clean atlas) |