From 66ee1d47942f11f18c26ccf41ca99197fea31ac7 Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 20:43:59 +0100 Subject: [PATCH 1/9] "chore: add CI workflow with GitHub Actions" --- .github/workflows/ci.yml | 105 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..c470b74 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,105 @@ +name: CI + +on: + push: + branches: + - main + - develop + pull_request: + branches: + - main + - develop + +jobs: + lint: + name: Lint Codebase + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Install dependencies + run: pnpm install + + - name: Run lint + run: pnpm run lint + + build: + name: Build Project + runs-on: ubuntu-latest + needs: lint + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Install dependencies + run: pnpm install + + - name: Run build + run: pnpm run build + + test: + name: Run Tests + runs-on: ubuntu-latest + needs: build + services: + test-db: + image: postgres:15-alpine + ports: + - 5433:5432 + env: + NODE_ENV: test + POSTGRES_DB: dropit_test + POSTGRES_USER: ${{ secrets.TEST_POSTGRES_USER }} + POSTGRES_PASSWORD: ${{ secrets.TEST_POSTGRES_PASSWORD }} + options: >- + --health-cmd="pg_isready -U postgres" + --health-interval=10s + --health-timeout=5s + --health-retries=5 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Install dependencies + run: pnpm install + + - name: Run tests + run: pnpm run test:e2e + + dev: + name: Verify Dev Environment + runs-on: ubuntu-latest + needs: test + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 20 + + - name: Install dependencies + run: pnpm install + + - name: Run dev server + run: | + pnpm run dev & + sleep 10 + curl -f http://localhost:3001 || exit 1 From 620b80b53d90b804e748f4cdd075ea33fb00c06c Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 21:03:59 +0100 Subject: [PATCH 2/9] fix: missing install pnpm --- .github/workflows/ci.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c470b74..12998c6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,11 @@ jobs: with: node-version: 20 + - name: Install pnpm + run: | + corepack enable + corepack prepare pnpm@latest --activate + - name: Install dependencies run: pnpm install @@ -42,6 +47,11 @@ jobs: with: node-version: 20 + - name: Install pnpm + run: | + corepack enable + corepack prepare pnpm@latest --activate + - name: Install dependencies run: pnpm install @@ -76,6 +86,11 @@ jobs: with: node-version: 20 + - name: Install pnpm + run: | + corepack enable + corepack prepare pnpm@latest --activate + - name: Install dependencies run: pnpm install @@ -95,6 +110,11 @@ jobs: with: node-version: 20 + - name: Install pnpm + run: | + corepack enable + corepack prepare pnpm@latest --activate + - name: Install dependencies run: pnpm install From 677b35e86254f75052d63d1bb9102ff06b5360f7 Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 21:13:46 +0100 Subject: [PATCH 3/9] fix: check directory apps/api for testing --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 12998c6..ab54137 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,7 +94,9 @@ jobs: - name: Install dependencies run: pnpm install - - name: Run tests + + - name: Run api tests + working-directory: apps/api run: pnpm run test:e2e dev: @@ -119,6 +121,7 @@ jobs: run: pnpm install - name: Run dev server + working-directory: . run: | pnpm run dev & sleep 10 From 841ba51b6d9068d1a1f5e1c7de0cedc28ae6902f Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 21:25:25 +0100 Subject: [PATCH 4/9] fix: test and dev needs build before run --- .github/workflows/ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab54137..144ef4a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,7 +93,9 @@ jobs: - name: Install dependencies run: pnpm install - + + - name: Build dependencies + run: pnpm run build - name: Run api tests working-directory: apps/api @@ -120,6 +122,9 @@ jobs: - name: Install dependencies run: pnpm install + - name: Build dependencies + run: pnpm run build + - name: Run dev server working-directory: . run: | From 6506f1e3d3eb4054fa589617ad88c4d53f2fe53f Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 21:38:28 +0100 Subject: [PATCH 5/9] fix: script run test in docker --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 144ef4a..46af1c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,9 +97,9 @@ jobs: - name: Build dependencies run: pnpm run build - - name: Run api tests + - name: Run api tests in Docker working-directory: apps/api - run: pnpm run test:e2e + run: pnpm run test:e2e:docker dev: name: Verify Dev Environment From 95cd4a13b27238ddd2a91b1ff1dba1e6beca42de Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 21:47:31 +0100 Subject: [PATCH 6/9] fix: install docker compose for test --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46af1c5..0b7efed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,6 +97,9 @@ jobs: - name: Build dependencies run: pnpm run build + - name: Install Docker Compose + run: sudo apt-get install -y docker-compose + - name: Run api tests in Docker working-directory: apps/api run: pnpm run test:e2e:docker From 2f63dc8a07dbc962969cffb3f07bd49190eb55a3 Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 22:05:54 +0100 Subject: [PATCH 7/9] fix: test e2e api, should close test after running --- .github/workflows/ci.yml | 5 +---- apps/api/package.json | 2 +- apps/api/test/app.e2e-spec.ts | 5 +++++ apps/api/test/jest-e2e.json | 16 +++++++++------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b7efed..607219a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,12 +97,9 @@ jobs: - name: Build dependencies run: pnpm run build - - name: Install Docker Compose - run: sudo apt-get install -y docker-compose - - name: Run api tests in Docker working-directory: apps/api - run: pnpm run test:e2e:docker + run: pnpm run test:e2e dev: name: Verify Dev Environment diff --git a/apps/api/package.json b/apps/api/package.json index dbb4417..25109ae 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -22,7 +22,7 @@ "test:watch": "jest --watch", "test:cov": "jest --coverage", "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", - "test:e2e": "jest --config ./test/jest-e2e.json --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json --runInBand --detectOpenHandles", "test:e2e:docker": "docker-compose -f ../../docker-compose.test.yml up -d && jest --config ./test/jest-e2e.json --runInBand --detectOpenHandles && docker-compose -f ../../docker-compose.test.yml down" }, "dependencies": { diff --git a/apps/api/test/app.e2e-spec.ts b/apps/api/test/app.e2e-spec.ts index 846b1c2..68a30be 100644 --- a/apps/api/test/app.e2e-spec.ts +++ b/apps/api/test/app.e2e-spec.ts @@ -15,6 +15,11 @@ describe('AppController (e2e)', () => { await app.init(); }); + afterAll(async () => { + // Fermer l'application NestJS + await app.close(); + }); + it('/ (GET)', () => { return request(app.getHttpServer()) .get('/') diff --git a/apps/api/test/jest-e2e.json b/apps/api/test/jest-e2e.json index f43e8a6..0623115 100644 --- a/apps/api/test/jest-e2e.json +++ b/apps/api/test/jest-e2e.json @@ -1,9 +1,11 @@ { - "moduleFileExtensions": ["js", "json", "ts"], - "rootDir": ".", - "testEnvironment": "node", - "testRegex": ".e2e-spec.ts$", - "transform": { - "^.+\\.(t|j)s$": "ts-jest" - } + "moduleFileExtensions": ["js", "json", "ts"], + "rootDir": ".", + "testEnvironment": "node", + "testRegex": ".e2e-spec.ts$", + "detectOpenHandles": true, + "forceExit": true, + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + } } From 3f93f4c9cbdcb107e161ae36ae66ceb15abae6d3 Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 22:13:49 +0100 Subject: [PATCH 8/9] fix: dev step setup docker compose --- .github/workflows/ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 607219a..b97b6bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -125,9 +125,19 @@ jobs: - name: Build dependencies run: pnpm run build + - name: Install Docker Compose + run: sudo apt-get install -y docker-compose + + - name: Start Docker services + run: docker-compose -f docker-compose.yml up -d + - name: Run dev server working-directory: . run: | pnpm run dev & sleep 10 curl -f http://localhost:3001 || exit 1 + + - name: Stop Docker services + if: always() + run: docker-compose -f docker-compose.yml down From 671efa6e3ac5d66dd0855f63665b36cf2c5b3166 Mon Sep 17 00:00:00 2001 From: Sten Levasseur Date: Thu, 2 Jan 2025 22:33:58 +0100 Subject: [PATCH 9/9] fix: dev ci, setup secrets and remove docker compose --- .github/workflows/ci.yml | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b97b6bf..cb0752e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -97,7 +97,7 @@ jobs: - name: Build dependencies run: pnpm run build - - name: Run api tests in Docker + - name: Run api tests working-directory: apps/api run: pnpm run test:e2e @@ -105,6 +105,20 @@ jobs: name: Verify Dev Environment runs-on: ubuntu-latest needs: test + services: + postgres: + image: postgres:15-alpine + ports: + - 5432:5432 + env: + POSTGRES_DB: dropit + POSTGRES_USER: ${{ secrets.DB_POSTGRES_USER }} + POSTGRES_PASSWORD: ${{ secrets.DB_POSTGRES_PASSWORD }} + options: >- + --health-cmd="pg_isready -U postgres" + --health-interval=10s + --health-timeout=5s + --health-retries=5 steps: - name: Checkout repository uses: actions/checkout@v3 @@ -125,19 +139,9 @@ jobs: - name: Build dependencies run: pnpm run build - - name: Install Docker Compose - run: sudo apt-get install -y docker-compose - - - name: Start Docker services - run: docker-compose -f docker-compose.yml up -d - - name: Run dev server working-directory: . run: | pnpm run dev & sleep 10 curl -f http://localhost:3001 || exit 1 - - - name: Stop Docker services - if: always() - run: docker-compose -f docker-compose.yml down