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 |