Skip to content

Commit

Permalink
build(workflow): same node version on all stages
Browse files Browse the repository at this point in the history
Motivation
----------
We have completely different `node --version`s on local development,
build server (even in different jobs) and production.

My suggestion is we configure the node version in one file in the top
folder and reference it from everywhere.

For me, any version manager is fine. If I have the choice, I suggest
[asdf-vm]](https://github.com/asdf-vm/asdf).

How to test
-----------
1. Check status checks
  • Loading branch information
roschaefer committed Jul 2, 2024
1 parent 0f677c1 commit e608d2e
Show file tree
Hide file tree
Showing 15 changed files with 124 additions and 240 deletions.
10 changes: 4 additions & 6 deletions .github/workflows/admin.deploy.chromatic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,11 @@ jobs:
runs-on: ubuntu-latest
env:
CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN_ADMIN }}
WORKING_DIRECTORY: ./admin
steps:
- name: Checkout code
uses: actions/checkout@v4
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
fetch-depth: 0

node-version-file: './.tool-versions'
- name: Admin | Build
run: npm install && npm run chromatic -- --exit-zero-on-changes
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./admin
62 changes: 25 additions & 37 deletions .github/workflows/admin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,25 +29,22 @@ jobs:
name: Build - Admin
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./admin
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: './.tool-versions'
- name: Admin | Build
run: npm install && npm run build
working-directory: ${{env.WORKING_DIRECTORY}}
run: npm install && npm run --filter dreammall-admin build
working-directory: ./admin

docker-production:
if: needs.files-changed.outputs.admin == 'true'
name: Build Docker Production - Admin
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- name: Admin | Build Docker Production
run: docker compose -f docker-compose.yml build admin

Expand All @@ -57,9 +54,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- name: Admin | Build Docker Development
run: docker compose build admin admin-documentation admin-storybook

Expand All @@ -68,57 +63,50 @@ jobs:
name: Build Docs - Admin
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./admin
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- name: Admin | Build Docs
run: npm install && npm run docs:build
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./admin

storybook:
if: needs.files-changed.outputs.admin == 'true'
name: Build Storybook - Admin
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./admin
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: './.tool-versions'
- name: Admin | Build Storybook
run: npm install && npm run storybook:build
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./admin

lint:
if: needs.files-changed.outputs.admin == 'true'
name: Lint - Admin
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./admin
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: './.tool-versions'
- name: Admin | Lint
run: npm install && npm run test:lint
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./admin

unit:
if: needs.files-changed.outputs.admin == 'true'
name: Unit - Admin
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./admin
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: './.tool-versions'
- name: Admin | Unit
run: npm install && npm run test:unit
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./admin
64 changes: 18 additions & 46 deletions .github/workflows/backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,22 @@ jobs:
name: Build - Backend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./backend
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: '>=21'

- name: Checkout code
uses: actions/checkout@v4

node-version-file: './.tool-versions'
- uses: actions/checkout@v4
- name: Backend | Build
run: npm install && npm run build
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./backend

docker-production:
if: needs.files-changed.outputs.backend == 'true'
name: Build Docker Production - Backend
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- name: Backend | Build Docker Production
run: docker compose -f docker-compose.yml build backend

Expand All @@ -62,9 +54,7 @@ jobs:
needs: files-changed
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: actions/checkout@v4
- name: Backend | Build Docker Development
run: docker compose build backend backend-documentation

Expand All @@ -73,61 +63,43 @@ jobs:
name: Build Docs - Backend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./backend
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: '>=21'

- name: Checkout code
uses: actions/checkout@v4

node-version-file: './.tool-versions'
- uses: actions/checkout@v4
- name: Backend | Build Docs
run: npm install && npm run docs:build
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./backend

lint:
if: needs.files-changed.outputs.backend == 'true'
name: Lint - Backend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./backend
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: '>=21'

- name: Checkout code
uses: actions/checkout@v4

node-version-file: './.tool-versions'
- uses: actions/checkout@v4
- name: Backend | Lint
run: npm install && npm run test:lint
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./backend

unit:
if: needs.files-changed.outputs.backend == 'true'
name: Unit - Backend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./backend
DATABASE_URL: mysql://root:@localhost:3306/dreammall.earth
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: '>=21'

- name: Checkout code
uses: actions/checkout@v4

node-version-file: './.tool-versions'
- uses: actions/checkout@v4
- name: Backend | docker-compose database
run: docker-compose -f docker-compose.yml up --detach --no-deps database

- name: Backend | Unit
run: npm install && cp src/auth/public.pem . && npm run db:migrate && npm run test:unit
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./backend
12 changes: 4 additions & 8 deletions .github/workflows/deploy.docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,10 @@ jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: '>=21'

- name: Checkout
uses: actions/checkout@master

node-version-file: './.tool-versions'
- uses: actions/checkout@master
- name: vuepress-deploy
uses: IT4Change/vuepress-build-and-deploy@master
env:
Expand All @@ -28,4 +24,4 @@ jobs:
#TARGET_BRANCH: master
BUILD_SCRIPT: npm install && npm run docs:build
BUILD_DIR: build/docs/
VUEPRESS_BASE: "dreammall.earth"
VUEPRESS_BASE: "dreammall.earth"
10 changes: 4 additions & 6 deletions .github/workflows/e2e.run.tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@ jobs:
name: Run all E2E tests
runs-on: ubuntu-latest
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: 21
node-version-file: './.tool-versions'

- name: Checkout
uses: actions/checkout@master
- uses: actions/checkout@master

- name: E2E | Boot up test system
run: |
Expand Down Expand Up @@ -69,4 +67,4 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: dreammall-e2e-test-report-pr-${{ steps.pr-number.outputs.pr }}
path: /home/runner/work/dreammall.earth/dreammall.earth/tests/cypress/reports/dreammall-e2e_html_report
path: /home/runner/work/dreammall.earth/dreammall.earth/tests/cypress/reports/dreammall-e2e_html_report
24 changes: 8 additions & 16 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,37 +30,29 @@ jobs:
name: Build Docs - E2E Testing
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./tests
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: '>=21'
node-version-file: './.tool-versions'

- name: Checkout code
uses: actions/checkout@master
- uses: actions/checkout@master

- name: E2E Testing | Build Docs
run: npm install && npm run docs:build
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./tests

lint:
if: needs.files-changed.outputs.e2e == 'true'
name: Lint - E2E files
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./tests
steps:
- name: Set Node version
uses: actions/setup-node@v4
- uses: actions/setup-node@v4
with:
node-version: '>=21'
node-version-file: './.tool-versions'

- name: Checkout code
uses: actions/checkout@master
- uses: actions/checkout@master

- name: E2E files | Lint
run: npm install && npm run test:lint
working-directory: ${{env.WORKING_DIRECTORY}}
working-directory: ./tests
Loading

0 comments on commit e608d2e

Please sign in to comment.