feat: adding click to deploy features
This commit is contained in:
@@ -6,6 +6,7 @@ Shuffle Automation
|
|||||||
|
|
||||||
[](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml)
|
[](https://github.com/Shuffle/Shuffle/actions/workflows/codeql-analysis.yml)
|
||||||
[](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml)
|
[](https://github.com/Shuffle/Shuffle/actions/workflows/dockerbuild.yaml)
|
||||||
|
[](https://deploy.cloud.run/?git_repo=https://github.com/Shuffle/Shuffle&ref=2.0.0)
|
||||||
|
|
||||||
</h1><h4 align="center">
|
</h1><h4 align="center">
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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
|
||||||
Reference in New Issue
Block a user