The dev ops tech evaluation will replicate a real world scenario. You will be given a boilerplate repository that contains a monorepo project. You will be responsible for creating a github action that will run tests that you create for the the api routes found in the services/example-fastify-cloud-run
package.
The boilerplate repo is an example monorepo project. It includes three packages:
libraries/example-messaging-lib
libraries/example-utility-lib
services/example-fastify-cloud-run
The libraries/example-messaging-lib
package is intended to be used as a dependency for the services/example-fastify-cloud-run
package. The services/example-fastify-cloud-run
package is intended to be deployed to cloud run.
For this assessment, we want to create a github action that is responsible for testing the routes found in services/example-fastify-cloud-run
. vitetest
is already installed in the project and should be used to set up testing.
-
[] Should be scalable for multiple developers with simultaneous PRs
-
[] Seeding data matching the prisma schema found in
services/example-fastify-cloud-run/schema.prisma
-
[] Seeding data into firebase matching the schema found in
libraries/example-messaging-lib/src/index.ts
-
[] Testing the following routes from
services/example-fastify-cloud-run/src/index.ts
:- []
/api/create_message
- []
/api/create_user
- []
/api/messages
- []
-
Functionality
-
Scalability
-
Clarity
-
Ability to make small commits with good commit messages
-
Decisions / considerations made in your approach
- Fork the
boilerplate
repo - Run
pnpm install
- Run
pnpm run dev
inservices/example-fastify-cloud-run
to start the server - Run
pnpm run test
inservices/example-fastify-cloud-run
to run the tests
- Create a
.env
file in the root of the repo - You will need to add the following environment variables:
GCP_SERVICE_ACCOUNT = "../../service-account.json"
LOCAL_DB_URL = {{ Your local Postgres DB URL }}
- After running
pnpm install
and setting up your.env
file with yourLOCAL_DB_URL
, runpnpm run migrate
to create the database tables
-
From
https://console.firebase.google.com/
, you can create a new project -
Complete all three steps
-
- Name your project
-
- Enable Google Analytics
-
- Configure Google Analytics
-
From the project overview page, click the gear icon next to "Project Overview" and select "Project Settings"
-
From the project settings page, select "Service Accounts"
-
From the service accounts page, click "Generate new private key"
-
Rename the downloaded file to
service-account.json
, and place it in the root of the repo -
You can add a
.env
file to the root of the repo where you can storeGCP_SERVICE_ACCOUNT="{{path to service-account.json}}"