feat: adding click to deploy features

This commit is contained in:
Aditya
2024-10-23 16:40:26 +05:30
parent 0ad954d480
commit d995f73913
3 changed files with 94 additions and 0 deletions
+1
View File
@@ -6,6 +6,7 @@ Shuffle Automation
[![CodeQL](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml/badge.svg?branch=launch)](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml)
[![Autobuild](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml/badge.svg?branch=launch)](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml)
[![Deploy to Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run/?git_repo=https://github.com/Shuffle/Shuffle&ref=2.0.0)
</h1><h4 align="center">
+15
View File
@@ -0,0 +1,15 @@
{
"name": "Shuffle",
"description": "Security Automation Platform",
"repository": "https://github.com/shuffle/shuffle",
"env": {
"SERVICE_NAME": {
"description": "Name of the Cloud Run service",
"value": "shuffle-app"
},
"REGION": {
"description": "GCP region to deploy to",
"value": "us-central1"
}
}
}
+78
View File
@@ -0,0 +1,78 @@
# cloudbuild.yaml
steps:
# Create and set permissions for database directory
- name: 'gcr.io/cloud-builders/docker'
entrypoint: 'bash'
args:
- '-c'
- |
mkdir -p shuffle-database && chmod -R 777 shuffle-database
# Build images using docker-compose
- name: 'docker/compose'
args: ['build']
# Push images to Container Registry
- name: 'docker/compose'
args: ['push']
# Start services and perform health checks
- name: 'docker/compose'
entrypoint: 'bash'
args:
- '-c'
- |
# Start services
docker-compose up -d
# Initial wait for services to start
echo "Waiting 30 seconds for initial startup..."
sleep 30
# Check for restarting containers
ATTEMPTS=30
for i in $(seq 1 $ATTEMPTS); do
RESTARTING_CONTAINERS=$(docker ps --filter "status=restarting" --format "{{.Names}}")
if [ -n "$RESTARTING_CONTAINERS" ]; then
echo "The following containers are restarting:"
echo "$RESTARTING_CONTAINERS"
docker-compose logs
exit 1
fi
echo "No containers are restarting. Attempt $i/$ATTEMPTS."
sleep 1
done
echo "No containers were found in a restarting state after $ATTEMPTS checks."
# Health check via HTTP endpoint
echo "Performing HTTP health check..."
RESPONSE=$(curl -s http://localhost:3001)
if echo "$RESPONSE" | grep -q "Shuffle"; then
echo "Health check passed: 'Shuffle' found in response."
else
echo "Health check failed: 'Shuffle' not found in response."
echo "Response received:"
echo "$RESPONSE"
docker-compose logs
exit 1
fi
# Deploy to Cloud Run if all checks pass
- name: 'gcr.io/cloud-builders/gcloud'
args:
- 'run'
- 'deploy'
- '${_SERVICE_NAME}'
- '--image'
- 'gcr.io/$PROJECT_ID/${_SERVICE_NAME}'
- '--platform'
- 'managed'
- '--region'
- '${_REGION}'
- '--allow-unauthenticated'
# Timeouts and options
timeout: '1800s'
options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY