Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,16 @@ gcloud emulators firestore start
export FIRESTORE_EMULATOR_HOST="HOST:PORT"
```

## Deployment

Deployments are automated via **Cloud Build** when changes are pushed or merged into specific branches.

| Branch | Environment |
| :--- | :--- |
| `dev` | **Development** |
| `stage` | **Staging(Testnet)** |
| `main` | **Production(Mainnet)** |

## Docker

Build and run the project in a Docker container:
Expand Down
82 changes: 82 additions & 0 deletions cloudbuild.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
substitutions:
_REGION: "default-region"
_AR_REPO: "default-repo"
_IMAGE_NAME: "default-image"
_SERVICE_NAMES: "default-service-1 default-service-2"
_JOB_NAMES: "default-job-1 default-job-2"

options:
machineType: 'E2_HIGHCPU_8'
logging: CLOUD_LOGGING_ONLY

steps:
- name: 'gcr.io/cloud-builders/docker'
id: 'build-docker-image'
args:
- 'build'
- '-t'
- '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:$SHORT_SHA'
- '-t'
- '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:latest'
- '-f'
- 'docker/Dockerfile'
- '.'

- name: 'gcr.io/cloud-builders/docker'
id: 'push-image-sha'
waitFor: ['build-docker-image']
args:
- 'push'
- '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:$SHORT_SHA'

- name: 'gcr.io/cloud-builders/docker'
id: 'push-image-latest'
waitFor: ['build-docker-image']
args:
- 'push'
- '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:latest'

- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
id: 'deploy-services'
waitFor: ['push-image-sha']
entrypoint: bash
args:
- -c
- |
if [ -n "${_SERVICE_NAMES}" ]; then
for service in ${_SERVICE_NAMES}; do
echo "Deploying to Service: $service"
gcloud run deploy $service \
--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:$SHORT_SHA \
--region=${_REGION} \
--platform=managed \
--quiet
done
else
echo "No services to deploy."
fi

- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
id: 'deploy-jobs'
waitFor: ['push-image-sha']
entrypoint: bash
args:
- -c
- |
if [ -n "${_JOB_NAMES}" ]; then
for job in ${_JOB_NAMES}; do
echo "Deploying/Updating Job: $job"
gcloud run jobs deploy $job \
--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:$SHORT_SHA \
--region=${_REGION} \
--quiet
done
else
echo "No jobs to deploy."
fi

images:
- '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:$SHORT_SHA'
- '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_AR_REPO}/${_IMAGE_NAME}:latest'

timeout: '1200s'