Skip to content

chore(package): update @gjuchault/typescript-service-sdk to version 6… #2535

chore(package): update @gjuchault/typescript-service-sdk to version 6…

chore(package): update @gjuchault/typescript-service-sdk to version 6… #2535

name: Typescript Service Starter
on: [push]
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
jobs:
dependencies:
name: 📦 Dependencies
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
lint:
name: ⬣ ESLint
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: ⬣ ESLint
run: npm run lint:check
audit:
name: 🛡️ Audit
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- name: 🛡️ Audit
run: npm audit --audit-level=high
format:
name: 🔬 Format
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: 🔬 Format
run: npm run format:check
spell:
name: 🈸 Spellcheck
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: 🈸 Spellcheck
run: npm run spell:check
type:
name: ʦ Typecheck
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: ʦ Typecheck
run: npm run type:check
test-unit:
name: ⚡ Unit tests
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: ⚡ Unit tests
run: npm run test:unit
test-integration:
services:
postgres:
image: postgres
env:
POSTGRES_USER: user
POSTGRES_PASSWORD: pwd
POSTGRES_DB: db
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379:6379
options: --entrypoint redis-server
name: ⚡ Integration tests
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- name: Build services urls
run: |
echo "DATABASE_URL=postgres://user:pwd@localhost:${{ job.services.postgres.ports[5432] }}/db" >> $GITHUB_ENV
echo "REDIS_URL=redis://localhost:${{ job.services.redis.ports[6379] }}" >> $GITHUB_ENV
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: ⚡ Integration tests
run: npm run test:integration
env:
NODE_ENV: production
ENV_NAME: test
LOG_LEVEL: error
PORT: 8080
ADDRESS: 0.0.0.0
DATABASE_URL: ${{ env.DATABASE_URL }}
DATABASE_MAXIMUM_POOL_SIZE: 10
DATABASE_IDLE_TIMEOUT: 5s
DATABASE_STATEMENT_TIMEOUT: 20s
REDIS_URL: ${{ env.REDIS_URL }}
SECRET: 00000000-0000-0000-0000-000000000000
TRACING_SAMPLING: 0.2
test-healthcheck:
services:
postgres:
image: postgres
env:
POSTGRES_USER: user
POSTGRES_PASSWORD: pwd
POSTGRES_DB: db
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis
ports:
- 6379:6379
options: --entrypoint redis-server
name: ⚡ Healthcheck test
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- name: Build services urls
run: |
echo "DATABASE_URL=postgres://user:pwd@localhost:${{ job.services.postgres.ports[5432] }}/db" >> $GITHUB_ENV
echo "REDIS_URL=redis://localhost:${{ job.services.redis.ports[6379] }}" >> $GITHUB_ENV
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: ⚡ Healthcheck test
run: npm run test:healthcheck
env:
NODE_ENV: production
ENV_NAME: test
LOG_LEVEL: debug
PORT: 8080
ADDRESS: 0.0.0.0
DATABASE_URL: ${{ env.DATABASE_URL }}
DATABASE_MAXIMUM_POOL_SIZE: 10
DATABASE_IDLE_TIMEOUT: 5s
DATABASE_STATEMENT_TIMEOUT: 20s
REDIS_URL: ${{ env.REDIS_URL }}
SECRET: 00000000-0000-0000-0000-000000000000
TRACING_SAMPLING: 0.2
test-setup:
name: ⚡ Setup tests
runs-on: ubuntu-latest
needs: [dependencies]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: ⚡ Setup tests
run: npm run test:setup
build-and-release:
name: 🚀 Build & release
needs:
[
lint,
audit,
format,
spell,
type,
test-unit,
test-healthcheck,
test-integration,
test-setup,
]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: package.json
cache: "npm"
- run: npm ci
- name: 🔨 Build
run: npm run build
- name: 🚀 Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
run: npm run semantic-release