Don't try to fix files concurrently with different tools #223
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
branches: ["main"] | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
node-version: ["22", "23"] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }}.x | |
cache: "npm" | |
- name: Install dependencies | |
run: npm ci | |
- name: Run tests | |
run: npm test | |
docker: | |
name: Docker | |
runs-on: ubuntu-latest | |
env: | |
NODE_DEBUG: create-ts-node | |
strategy: | |
matrix: | |
package-manager: ["npm", "yarn", "pnpm"] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install pnpm | |
uses: pnpm/action-setup@v4 | |
if: matrix.package-manager == 'pnpm' | |
with: | |
version: "10" | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 22.x | |
cache: "npm" | |
- name: Install dependencies | |
run: npm install | |
env: | |
NODE_ENV: production | |
- name: Install create-ts-node globally | |
run: npm install --global . | |
- name: Create project | |
run: npx create-ts-node docker-project --package-manager ${{ matrix.package-manager }} | |
working-directory: ${{ runner.temp }} | |
- name: Install project dependencies | |
run: ${{ matrix.package-manager }} install | |
working-directory: ${{ runner.temp }}/docker-project | |
- name: Build Docker image | |
run: ${{ matrix.package-manager }} run docker:build | |
working-directory: ${{ runner.temp }}/docker-project | |
- name: Run Docker container | |
run: docker run --init --detach --publish 3000:3000 docker-project | |
working-directory: ${{ runner.temp }}/docker-project | |
- name: Test Docker container | |
run: curl --verbose --fail --silent --show-error --max-time 5 --retry 4 --retry-all-errors localhost:3000 | jq . | |
shell: bash | |
create: | |
name: Create | |
strategy: | |
matrix: | |
os: [ubuntu, macos, windows] | |
node-version: ["22", "23"] | |
package-manager: [npm, yarn, pnpm] | |
runs-on: ${{ matrix.os }}-latest | |
env: | |
NODE_DEBUG: create-ts-node | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: pnpm/action-setup@v4 | |
name: Install pnpm | |
if: matrix.package-manager == 'pnpm' | |
with: | |
version: "10" | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node-version }}.x | |
- run: ${{ matrix.package-manager }} install | |
env: | |
NODE_ENV: production | |
- run: npm install --global . | |
if: matrix.package-manager == 'npm' | |
- run: npx create-ts-node new-project | |
if: matrix.package-manager == 'npm' | |
working-directory: ${{ runner.temp }} | |
- run: yarn link | |
if: matrix.package-manager == 'yarn' | |
- run: yarn create ts-node new-project | |
if: matrix.package-manager == 'yarn' | |
working-directory: ${{ runner.temp }} | |
- name: Create package.json for pnpm | |
run: | | |
with open('package.json', 'w') as f: | |
f.write('{}') | |
shell: python | |
if: matrix.package-manager == 'pnpm' | |
working-directory: ${{ runner.temp }} | |
- run: pnpm link ${{ github.workspace }} | |
if: matrix.package-manager == 'pnpm' | |
working-directory: ${{ runner.temp }} | |
- run: pnpm exec create-ts-node new-project | |
if: matrix.package-manager == 'pnpm' | |
working-directory: ${{ runner.temp }} | |
- run: ${{ matrix.package-manager }} install | |
working-directory: ${{ runner.temp }}/new-project | |
- run: ${{ matrix.package-manager }} run build | |
working-directory: ${{ runner.temp }}/new-project | |
- run: ${{ matrix.package-manager }} test | |
working-directory: ${{ runner.temp }}/new-project | |
- run: ${{ matrix.package-manager }} run fix | |
working-directory: ${{ runner.temp }}/new-project | |
# Test app in production mode | |
- name: Remove dependencies | |
run: npx rimraf@latest node_modules | |
working-directory: ${{ runner.temp }}/new-project | |
- name: Install production dependencies | |
run: ${{ matrix.package-manager }} install --prod | |
working-directory: ${{ runner.temp }}/new-project | |
env: | |
NODE_ENV: production | |
- name: Start app (Unix) | |
run: ${{ matrix.package-manager }} start & | |
working-directory: ${{ runner.temp }}/new-project | |
if: matrix.os != 'windows' | |
env: | |
NODE_ENV: production | |
- name: Start app (Windows) | |
run: Start-Process -FilePath "${{ matrix.package-manager }}.cmd" -ArgumentList "start" -PassThru | |
working-directory: ${{ runner.temp }}/new-project | |
if: matrix.os == 'windows' | |
env: | |
NODE_ENV: production | |
- name: Test app | |
run: curl --verbose --fail --silent --show-error --max-time 5 --retry 4 --retry-connrefused localhost:3000 | jq . | |
shell: bash | |
# Test app in dev mode | |
- name: Install dev dependencies | |
run: ${{ matrix.package-manager }} install | |
working-directory: ${{ runner.temp }}/new-project | |
- name: Start app in dev mode (Unix) | |
run: ${{ matrix.package-manager }} run dev & | |
working-directory: ${{ runner.temp }}/new-project | |
env: | |
PORT: 3001 | |
if: matrix.os != 'windows' | |
- name: Start app in dev mode (Windows) | |
run: Start-Process -FilePath "${{ matrix.package-manager }}.cmd" -ArgumentList "run","dev" -PassThru | |
working-directory: ${{ runner.temp }}/new-project | |
env: | |
PORT: 3001 | |
if: matrix.os == 'windows' | |
- name: Test app in dev mode | |
run: curl --verbose --fail --silent --show-error --max-time 5 --retry 4 --retry-connrefused localhost:3001 | jq . | |
shell: bash |