A wrapper on Piston (general purpose code execution engine) that enables Codee to support many programming languages.
Build and run the API: docker compose up
Open examples.http in VS Code to call the API (requires the REST Client extension)
Prerequisites:
- Google Cloud SDK (
gcloud) installed and authenticated
-
Enable Cloud Run and GCR (one-time only)
gcloud services enable run.googleapis.com containerregistry.googleapis.com --project=codee-club-dev -
Create service account for Cloud Run to run as
gcloud iam service-accounts create cloudrun-runner \ --display-name="cloudrun-runner" --project=codee-club-dev -
Give the service account read access to Cloud Storage
gcloud projects add-iam-policy-binding codee-club-dev \ --member=serviceAccount:cloudrun-runner@codee-club-dev.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
-
Create service account for deployment
gcloud iam service-accounts create github-cicd \ --display-name="github-cicd" --project=codee-club-devNote: the
github-cicdservice account is shared with the GitHub Action for the main Codee Club repo (it may exist already). -
Add Cloud Run Admin role to service account
gcloud projects add-iam-policy-binding codee-club-dev \ --member=serviceAccount:github-cicd@codee-club-dev.iam.gserviceaccount.com \ --role=roles/run.admin gcloud projects add-iam-policy-binding codee-club-dev \ --member=serviceAccount:github-cicd@codee-club-dev.iam.gserviceaccount.com \ --role=roles/storage.admin gcloud projects add-iam-policy-binding codee-club-dev \ --member=serviceAccount:github-cicd@codee-club-dev.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountUser
-
Download the json key
gcloud iam service-accounts keys create github-cicd.codee-club-dev.json \ --iam-account github-cicd@codee-club-dev.iam.gserviceaccount.com
-
Add the service account json key to GitHub secrets (e.g. DEV_GCP_SERVICE_ACCOUNT_KEY).
curl -H \
"Authorization: Bearer $(gcloud auth print-identity-token)" \
https://runner-piston-r3bka4fkka-uc.a.run.app/api