Skip to content

Commit

Permalink
Add top-level Makefile and standardize package scripts across all ser…
Browse files Browse the repository at this point in the history
…vices (#279)

- Add top-level Makefile to make it easier for development and CI
pipelines
- Standardize npm script names across services
  • Loading branch information
JoeCap08055 authored Jul 25, 2024
1 parent a5574e6 commit 46c1cf1
Show file tree
Hide file tree
Showing 7 changed files with 118 additions and 44 deletions.
12 changes: 4 additions & 8 deletions .github/workflows/common/openapi-build/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,20 @@ runs:
node-version: 20

- name: Install dependencies
run: npm ci
run: make npm-${{ inputs.service }}
shell: bash
working-directory: ./services/${{ inputs.service }}

- name: Generate Swagger Metadata
run: npm run build:metadata
run: make metadata-${{ inputs.service }}
shell: bash
working-directory: ./services/${{ inputs.service }}

- name: Generate OpenAPI/Swagger JSON
run: npm run build:swagger
run: make openapi-${{ inputs.service }}
shell: bash
working-directory: ./services/${{ inputs.service }}

- name: Generate OpenAPI/Swagger UI
run: npm run generate-swagger-ui
run: make swagger-${{ inputs.service }}
shell: bash
working-directory: ./services/${{ inputs.service }}

- name: Copy OpenAPI Spec (index.html) to root docs directory
run: cp ./services/${{ inputs.service }}/docs/index.html ./docs/${{ inputs.service }}/
Expand Down
67 changes: 67 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
SERVICES := $(shell (cd services ; ls))

NPM_TARGETS:=$(SERVICES:%=npm-%)
NPM_UPDATE_TARGETS:=$(SERVICES:%=npm-update-%)
BUILD_TARGETS=$(SERVICES:%=build-%)
METADATA_TARGETS=$(SERVICES:%=metadata-%)
OPENAPI_TARGETS=$(SERVICES:%=openapi-%)
SWAGGER_TARGETS=$(SERVICES:%=swagger-%)
TEST_TARGETS=$(SERVICES:%=test-%)
E2E_TARGETS=$(SERVICES:%=test-e2e-%)
K6_TARGETS=$(SERVICES:%=test-k6-%)
LINT_TARGETS=$(SERVICES:%=lint-%)
FORMAT_TARGETS=$(SERVICES:%=format-%)
DOCKER_BUILD_TARGETS=$(SERVICES:%=docker-build-%)


.PHONY: build test test-e2e lint format docker-build $(BUILD_TARGETS) $(TEST_TARGETS) $(E2E_TARGETS) $(LINT_TARGETS) $(FORMAT_TARGETS) $(DOCKER_BUILD_TARGETS)

deps: $(NPM_TARGETS)
update-packages: $(NPM_UPDATE_TARGETS)
build: $(BUILD_TARGETS)
generate-metadata: $(METADATA_TARGETS)
generate-openapi: $(OPENAPI_TARGETS)
generate-swagger-ui: $(SWAGGER_TARGETS)
test: $(TEST_TARGETS)
test-e2e: $(E2E_TARGETS)
test-k6: $(K6_TARGETS)
lint: $(LINT_TARGETS)
format: $(FORMAT_TARGETS)
docker-build: $(DOCKER_BUILD_TARGETS)

$(NPM_TARGETS):
@( cd services/$(@:npm-%=%) ; npm ci )

# $(NPM_TARGETS:npm-%=npm-update-%):
$(NPM_UPDATE_TARGETS):
@( cd services/$(@:npm-update-%=%) ; npm i )

$(BUILD_TARGETS): build-%: npm-%
@( cd services/$(@:build-%=%) ; npm run build )

$(METADATA_TARGETS): metadata-%: npm-%
@( cd services/$(@:metadata-%=%) ; npm run generate:metadata )

$(OPENAPI_TARGETS): openapi-%: npm-%
@( cd services/$(@:openapi-%=%) ; npm run generate:openapi )

$(SWAGGER_TARGETS): swagger-%: openapi-%
@( cd services/$(@:swagger-%=%) ; npm run generate:swagger-ui )

$(TEST_TARGETS):
@( cd services/$(@:test-%=%) ; npm run test )

$(E2E_TARGETS):
@( cd services/$(@:test-e2e-%=%) ; npm run test:e2e )

$(K6_TARGETS):
@( cd services/$(@:test-k6-%=%) ; npm run test:k6 )

$(LINT_TARGETS):
@( cd services/$(@:lint-%=%) ; npm run lint )

$(FORMAT_TARGETS):
@( cd services/$(@:format-%=%) ; npm run format )

$(DOCKER_BUILD_TARGETS):
@( cd services/$(@:docker-build-%=%) ; npm run docker:build )
24 changes: 15 additions & 9 deletions services/account/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
"main": "dist/apps/api/main.js",
"scripts": {
"build": "nest build api && nest build worker",
"build:swagger": "npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"build:metadata": "npx ts-node -r tsconfig-paths/register apps/api/src/generate-metadata.ts",
"generate-swagger-ui": "npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"build:api": "nest build api",
"build:worker": "nest build worker",
"generate:openapi": "npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"generate:metadata": "npx ts-node -r tsconfig-paths/register apps/api/src/generate-metadata.ts",
"generate:swagger-ui": "npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"format": "prettier --write \"apps/**/*.ts\" \"libs/**/*.ts\"",
"start:api": "nest start api",
"start:api:watch": "nest start api --watch",
Expand All @@ -19,17 +21,21 @@
"start:worker:prod": "node dist/apps/worker/main.js",
"start:worker:dev": "set -a ; . .env ; nest start worker",
"start:worker:debug": "set -a ; . .env ; nest start worker --debug=9230 --watch",
"docker-build": "docker build -t account-service .",
"docker-build:dev": "docker-compose build",
"docker-run": " build -t account-service-deploy . ; docker run -p 6379:6379 --env-file .env account-service-deploy",
"docker-run:dev": "docker-compose up -d ; docker-compose -f docker-compose.dev.yaml logs",
"docker-stop:dev": "docker-compose stop",
"docker:build": "docker build -t account-service .",
"docker:build:dev": "docker-compose build",
"docker:run": " build -t account-service-deploy . ; docker run -p 6379:6379 --env-file .env account-service-deploy",
"docker:run:dev": "docker-compose up -d ; docker-compose -f docker-compose.dev.yaml logs",
"docker:stop:dev": "docker-compose stop",
"clean": "rm -Rf dist",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"pretest": "cp env.template .env",
"test": "jest --coverage --verbose",
"test:e2e": "set -a ; . .env ; jest --verbose --silent --runInBand --testRegex \".e2e-spec.ts\" --detectOpenHandles --forceExit",
"test:e2e:verbose": "set -a ; . .env ; jest --verbose --runInBand --testRegex \".e2e-spec.ts\" --detectOpenHandles --forceExit"
"test:e2e:verbose": "set -a ; . .env ; jest --verbose --runInBand --testRegex \".e2e-spec.ts\" --detectOpenHandles --forceExit",
"test:k6:account-service": "k6 run k6-test/account-service-load.js",
"test:k6:new-sign-up": "k6 run k6-test/new-sign-up.js",
"test:k6:health-check": "k6 run k6-test/health-check.js",
"test:k6": "npm run test:k6:account-service ; npm run test:k6:new-sign-up ; npm run test:k6:health-check"
},
"repository": {
"type": "git",
Expand Down
20 changes: 12 additions & 8 deletions services/content-publishing/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@
"main": "dist/apps/api/main.js",
"scripts": {
"build": "nest build api && nest build worker",
"build:swagger": "set -a ; . ./env.template ; npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"build:metadata": "set -a ; . ./env.template ; npx ts-node apps/api/src/generate-metadata.ts",
"generate-swagger-ui": "set -a ; . ./env.template ; npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"build:api": "nest build api",
"build:worker": "nest build worker",
"generate:openapi": "set -a ; . ./env.template ; npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"generate:metadata": "set -a ; . ./env.template ; npx ts-node apps/api/src/generate-metadata.ts",
"generate:swagger-": "set -a ; . ./env.template ; npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"generate:swagger-ui": "npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"format": "prettier --write \"apps/**/*.ts\" \"libs/**/*.ts\"",
"start:api": "nest start api",
"start:api:watch": "nest start api --watch",
Expand All @@ -19,11 +22,11 @@
"start:worker:dev": "set -a ; . .env ; nest start worker --watch",
"start:api:debug": "set -a ; . .env ; nest start api --debug --watch",
"start:worker:debug": "set -a ; . .env ; nest start worker --debug --watch",
"docker-build": "docker build -t content-publishing-service .",
"docker-build:dev": "docker-compose build",
"docker-run": "docker build -t content-publishing-service-deploy . ; docker run -p 6379:6379 --env-file .env content-publishing-service-deploy",
"docker-run:dev": "docker-compose up -d ; docker-compose logs -f content-publishing-service",
"docker-stop:dev": "docker-compose stop",
"docker:build": "docker build -t content-publishing-service .",
"docker:build:dev": "docker-compose build",
"docker:run": "docker build -t content-publishing-service-deploy . ; docker run -p 6379:6379 --env-file .env content-publishing-service-deploy",
"docker:run:dev": "docker-compose up -d ; docker-compose logs -f content-publishing-service",
"docker:stop:dev": "docker-compose stop",
"clean": "rm -Rf dist",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"pretest": "cp env.template .env",
Expand All @@ -32,6 +35,7 @@
"test:k6:script-sm": "k6 run k6-test/script_sm_files.js",
"test:k6:script-md": "k6 run k6-test/script_md_files.js",
"test:k6:script-lg": "k6 run k6-test/script_lg_files.js",
"test:k6": "npm run test:k6:script ; npm run test:k6:script-sm ; npm run test:k6:script-md ; npm run test:k6:script-lg",
"test:e2e": "set -a ; . .env ; jest --config ./apps/api/test/jest-e2e.json --detectOpenHandles",
"local:init": "node scripts/local-init.cjs"
},
Expand Down
17 changes: 9 additions & 8 deletions services/content-watcher/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,20 @@
"start:dev": "set -a ; . .env ; nest start api --watch",
"start:debug": "set -a ; . .env ; nest start api --debug --watch",
"build": "nest build",
"build:swagger": "set -a ; . ./env.template ; npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"build:metadata": "set -a ; . ./env.template ; npx ts-node apps/api/src/generate-metadata.ts",
"generate-swagger-ui": "set -a ; . ./env.template ; npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"generate:openapi": "set -a ; . ./env.template ; npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"generate:metadata": "set -a ; . ./env.template ; npx ts-node apps/api/src/generate-metadata.ts",
"generate:swagger-ui": "set -a ; . ./env.template ; npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"format": "prettier --write \"apps/**/*.ts\" \"libs/**/*.ts\"",
"docker-build": "docker build -t content-watcher-service .",
"docker-build:dev": "docker-compose build",
"docker-run": " build -t content-watcher-service-deploy . ; docker run -p 6379:6379 --env-file .env content-watcher-service-deploy",
"docker-run:dev": "docker-compose up -d ; docker-compose logs",
"docker-stop:dev": "docker-compose stop",
"docker:build": "docker build -t content-watcher-service .",
"docker:build:dev": "docker-compose build",
"docker:run": " build -t content-watcher-service-deploy . ; docker run -p 6379:6379 --env-file .env content-watcher-service-deploy",
"docker:run:dev": "docker-compose up -d ; docker-compose logs",
"docker:stop:dev": "docker-compose stop",
"clean": "rm -Rf dist",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest --coverage --verbose",
"test:e2e": "set -a ; . ./.env; jest --config ./apps/api/test/jest-e2e.json --detectOpenHandles",
"test:k6": "echo 'TODO: K6 tests not implemented for content-watcher'",
"local:init": "node scripts/chain-setup/local-chain-setup.cjs",
"local:publish": "cd scripts/content-setup && npm i && npm run main",
"local:webhook": "node scripts/webhook-cat.cjs",
Expand Down
4 changes: 1 addition & 3 deletions services/graph/libs/common/src/types/webhook-types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,7 @@ declare namespace Components {
/**
* Byte array of graph page data
*/
payload: {
[key: string]: any;
};
payload: Record<string, any>;
}
export interface Uint8Array {}
}
Expand Down
18 changes: 10 additions & 8 deletions services/graph/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
"main": "dist/apps/api/main.js",
"scripts": {
"build": "nest build api && nest build worker",
"build:swagger": "set -a ; . ./env.template ; npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"build:metadata": "set -a ; . ./env.template ; npx ts-node apps/api/src/generate-metadata.ts",
"generate-swagger-ui": "set -a ; . ./env.template ; npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"generate:openapi": "set -a ; . ./env.template ; npx ts-node -r tsconfig-paths/register apps/api/src/build-openapi.ts",
"generate:metadata": "set -a ; . ./env.template ; npx ts-node apps/api/src/generate-metadata.ts",
"generate:swagger-ui": "set -a ; . ./env.template ; npx --yes @redocly/cli build-docs swagger.json --output=./docs/index.html",
"build:api": "nest build api",
"build:worker": "nest build worker",
"generate-webhook-types": "npx openapi-client-axios-typegen graph-webhooks.openapi.yaml > libs/common/src/types/webhook-types.d.ts",
"start:api": "nest start api",
"start:api:watch": "nest start api --watch",
Expand All @@ -19,15 +21,15 @@
"start:worker:prod": "node dist/apps/worker/main.js",
"start:worker:dev": "set -a ; . .env ; nest start worker",
"start:worker:debug": "set -a ; . .env ;nest start worker --debug=9230 --watch",
"docker-build": "docker build -t graph-service .",
"docker-run": "docker build -t graph-service-deploy . ; docker run --env-file .env graph-service-deploy",
"docker:build": "docker build -t graph-service .",
"docker:run": "docker build -t graph-service-deploy . ; docker run --env-file .env graph-service-deploy",
"chain-setup": "tsx ./test-setup/main.ts",
"clean": "rm -Rf dist",
"lint": "eslint \"{apps,libs}/**/*.ts\"",
"lint:fix": "eslint \"{apps,libs}/**/*.ts\" --fix",
"lint": "eslint \"{apps,libs}/**/*.ts\" --fix",
"format": "prettier --write \"apps/**/*.ts\" \"libs/**/*.ts\"",
"test": "jest --coverage --verbose",
"test:e2e": "set -a ; . .env ; jest --testRegex \".e2e-spec.ts$\" --detectOpenHandles"
"test:e2e": "set -a ; . .env ; jest --testRegex \".e2e-spec.ts$\" --detectOpenHandles",
"test:k6": "k6 run k6-test/script.js"
},
"repository": {
"type": "git",
Expand Down

0 comments on commit 46c1cf1

Please sign in to comment.