name: Continous Integration on: push: branches: [master] pull_request: # The branches below must be a subset of the branches above branches: [master] jobs: build: runs-on: ubuntu-24.04 env: MYSQL_HOST: '127.0.0.1' MYSQL_USER: myUser MYSQL_PASSWORD: myPass strategy: matrix: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ node-version: [18, 20] steps: - uses: actions/checkout@v4 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - uses: ankane/setup-mysql@v1 with: mysql-version: 8.0 - run: | sudo mysql -e "CREATE USER '$MYSQL_USER'@'localhost' IDENTIFIED BY '$MYSQL_PASSWORD'" sudo mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO '$MYSQL_USER'@'localhost'" sudo mysql -u root -e "ALTER USER '$MYSQL_USER'@'localhost' IDENTIFIED WITH mysql_native_password by '$MYSQL_PASSWORD'" sudo mysql -u root -e "FLUSH PRIVILEGES" - run: npm install - run: npm test code-lint: name: Code Lint runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 - name: Use Node.js 18 uses: actions/setup-node@v4 with: node-version: 18 - name: Bootstrap project run: | npm ci --ignore-scripts - name: Verify code linting run: npm run lint commit-lint: name: Commit Lint runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Use Node.js 18 uses: actions/setup-node@v4 with: node-version: 18 - name: Bootstrap project run: | npm ci --ignore-scripts - name: Verify commit linting run: npx commitlint --from origin/master --to HEAD --verbose