-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: shiva kumar <[email protected]>
- Loading branch information
Showing
2 changed files
with
89 additions
and
4 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
name: Daily Cleanup Bot | ||
|
||
# on: | ||
# schedule: | ||
# - cron: '0 8 * * *' | ||
|
||
on: | ||
pull_request: | ||
types: | ||
- opened | ||
- synchronize | ||
branches: | ||
- awsresourcecleanup | ||
push: | ||
branches: | ||
- awsresourcecleanup | ||
|
||
jobs: | ||
cleanup: | ||
runs-on: linux-amd64-cpu4 | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up AWS CLI | ||
uses: aws-actions/configure-aws-credentials@v3 | ||
with: | ||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} | ||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} | ||
aws-region: us-west-1 | ||
|
||
- name: Identify resources running longer than 24 hours | ||
id: identify-resources | ||
run: | | ||
# Find EC2 instances running longer than 24 hours | ||
running_instances=$(aws ec2 describe-instances \ | ||
--filters Name=instance-state-name,Values=running \ | ||
--query "Reservations[*].Instances[?LaunchTime<=\`$(date -u -d '12 hours ago' +%Y-%m-%dT%H:%M:%SZ)\`].InstanceId" \ | ||
--output text) | ||
echo "Found instances: $running_instances" | ||
echo "instances=$running_instances" >> $GITHUB_ENV | ||
# Find unused VPCs | ||
vpcs=$(aws ec2 describe-vpcs \ | ||
--query "Vpcs[?IsDefault==\`false\`].VpcId" \ | ||
--output text) | ||
echo "Found VPCs: $vpcs" | ||
echo "vpcs=$vpcs" >> $GITHUB_ENV | ||
- name: Terminate EC2 Instances | ||
if: env.instances != '' | ||
run: | | ||
for instance in $instances; do | ||
echo "Terminating instance: $instance" | ||
#aws ec2 terminate-instances --instance-ids $instance | ||
done | ||
- name: Clean up VPCs | ||
if: env.vpcs != '' | ||
run: | | ||
for vpc in $vpcs; do | ||
attempts=0 | ||
# try 3 times with 5 minutes interval | ||
while [ $attempts -lt 3 ]; do | ||
echo "Attempting to delete VPC: $vpc (Attempt $((attempts+1)))" | ||
if aws ec2 delete-vpc --vpc-id $vpc; then | ||
echo "Successfully deleted VPC: $vpc" | ||
break | ||
else | ||
echo "Failed to delete VPC: $vpc. Retrying in 5 minutes..." | ||
attempts=$((attempts + 1)) | ||
sleep 300 | ||
fi | ||
done | ||
if [ $attempts -eq 3 ]; then | ||
echo "Failed to delete VPC: $vpc after 3 attempts. Skipping." | ||
fi | ||
done | ||
- name: Post cleanup | ||
run: | | ||
echo "Cleanup completed." |
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