This guide outlines the standards that should be followed to ensure consistency across all route files in the API.
Each route file should follow this structure:
// 1. Imports| import express from "express"; | |
| import fetch from "node-fetch"; | |
| const app = express(); | |
| app.use(express.json()); | |
| // Load environment variables | |
| const { | |
| FB_PAGE_ID, | |
| FB_ACCESS_TOKEN, |
| provider "google" { | |
| project = var.project | |
| } | |
| data "google_project" "current" {} | |
| # Build the service agent email using the format: | |
| # service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com | |
| locals { | |
| project_number = data.google_project.current.number |
| # create secret as file | |
| export SECRET_ID="example-secret" | |
| export SECRET_FILE=".env" | |
| # create env file | |
| cat > $SECRET_FILE << EOF | |
| # Node environment | |
| NODE_ENV=production | |
| # Logging configuration |
| # Create a script to load environment variables from mounted secrets | |
| RUN echo '#!/bin/sh' > /app/entrypoint.sh && \ | |
| echo 'if [ -d "/secrets" ] && [ -f "/secrets/.env" ]; then' >> /app/entrypoint.sh && \ | |
| echo ' cp /secrets/.env /app/.env' >> /app/entrypoint.sh && \ | |
| echo ' echo "Loaded environment from mounted secret"' >> /app/entrypoint.sh && \ | |
| echo 'fi' >> /app/entrypoint.sh && \ | |
| echo 'exec node src/server.js' >> /app/entrypoint.sh && \ | |
| chmod +x /app/entrypoint.sh && \ | |
| chown nodeapp:nodeapp /app/entrypoint.sh |
| BILLING="YOUR-BILLING-ACCT" | |
| ORGANIZATION="<ORG-ID-NUMBER>" | |
| FOLDER="<FOLDER-ID-NUMBER>" | |
| CUSTOMER="<CUSTOMER-ID>" | |
| # user groups | |
| export ORG_ADMIN_GROUP="[email protected]" | |
| export BILLING_ADMIN_GROUP="[email protected]" | |
| export SECURITY_ADMIN_GROUP="[email protected]" | |
| export NETWORK_ADMIN_GROUP="[email protected]" |
| #!/bin/env bash | |
| ##################################################################### | |
| # REMOVE DOCKER DESKTOP FOR MAC (OPTIONAL: IF INSTALLED) | |
| ##################################################################### | |
| echo "" | |
| echo "Removing Docker Desktop for Mac..." | |
| # 1. make sure docker running | |
| sudo launchctl start com.docker.docker |
| #!/usr/bin/env bash | |
| ##################################################################### | |
| # REFERENCES | |
| # - https://cloud.google.com/kubernetes-engine/docs/how-to/creating-an-autopilot-cluster | |
| # - https://cloud.google.com/storage/docs/creating-buckets | |
| # - https://cloud.google.com/storage/docs/access-control/using-iam-permissions | |
| # - https://cloud.google.com/storage/docs/authentication/managing-hmackeys#command-line | |
| # - https://github.com/Altinity/clickhouse-operator/blob/master/docs/quick_start.md | |
| # - https://clickhouse.com/docs/en/getting-started/quick-start |
| #!/usr/bin/env bash | |
| ##################################################################### | |
| # REFERENCES | |
| # - https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes#organizations | |
| # - https://cloud.google.com/asset-inventory/docs/reference/rest/v1/TopLevel/batchGetAssetsHistory#temporalasset | |
| # - https://cloud.google.com/iam/docs/creating-custom-roles#creating | |
| # - https://cloud.google.com/sdk/gcloud/reference/organizations/add-iam-policy-binding | |
| # - https://gist.github.com/mikesparr/38260f9d457fc2f9452f1910213b4a71 | |
| # - https://aravind-ramaiahk.medium.com/streamlining-cloud-asset-management-automating-the-export-of-google-cloud-organization-asset-46cc8b428038 |