diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..8f385bf7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,119 @@ +name: Node CI + +on: [push, pull_request] + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4.1.1 + with: + fetch-depth: 0 + + - name: Use Node.js + uses: actions/setup-node@v4.0.0 + with: + node-version: 22 + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Restore cache for yarn and lerna + uses: actions/cache@v3.3.2 + id: yarn-cache + with: + path: | + ${{ steps.yarn-cache-dir-path.outputs.dir }} + node_modules + */*/node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Run ESLint + run: | + BASE_BRANCH=${GITHUB_BASE_REF:-master} + BASE_COMMIT=$(git merge-base HEAD origin/${BASE_BRANCH}) + yarn lint-staged --concurrent=false --diff="${BASE_COMMIT}..HEAD" --verbose + + test: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [20.x, 22.x] + + steps: + - uses: actions/checkout@v4.1.1 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4.0.0 + with: + node-version: ${{ matrix.node-version }} + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Restore cache for yarn and lerna + uses: actions/cache@v3.3.2 + id: yarn-cache + with: + path: | + ${{ steps.yarn-cache-dir-path.outputs.dir }} + node_modules + */*/node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build + run: yarn build + + - name: Test + run: yarn test + + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [20.x, 22.x] + + steps: + - uses: actions/checkout@v4.1.1 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4.0.0 + with: + node-version: ${{ matrix.node-version }} + + - name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT + + - name: Restore cache for yarn and lerna + uses: actions/cache@v3.3.2 + id: yarn-cache + with: + path: | + ${{ steps.yarn-cache-dir-path.outputs.dir }} + node_modules + */*/node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install --frozen-lockfile + + - name: Build + run: yarn build diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml deleted file mode 100644 index 28117086..00000000 --- a/.github/workflows/nodejs.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Node CI - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x, 20.x] - - steps: - - uses: actions/checkout@v4.1.1 - with: - fetch-depth: 0 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4.0.0 - with: - node-version: ${{ matrix.node-version }} - - - name: Get yarn cache directory path - id: yarn-cache-dir-path - run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT - - - name: Restore cache for yarn and lerna - uses: actions/cache@v3.3.2 - id: yarn-cache - with: - path: | - ${{ steps.yarn-cache-dir-path.outputs.dir }} - node_modules - */*/node_modules - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} - restore-keys: | - ${{ runner.os }}-yarn- - - - name: Install dependencies - run: yarn install --frozen-lockfile - - - name: Build - run: yarn build - - - name: Run ESLint - run: | - BASE_BRANCH=${GITHUB_BASE_REF:-master} - BASE_COMMIT=$(git merge-base HEAD origin/${BASE_BRANCH}) - yarn lint-staged --concurrent=false --diff="${BASE_COMMIT}..HEAD" --verbose - - - name: Test - run: yarn test diff --git a/package.json b/package.json index 7ee6cab8..f93aa28a 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ }, "scripts": { "postinstall": "lerna bootstrap", + "pretest": "yarn build", "test": "FORCE_COLOR=1 lerna run --stream test", "test:watch": "FORCE_COLOR=1 lerna exec --stream --ignore prettier-config-wantedly -- npm run test -- --watch", "test:watch:frolint": "lerna exec \"npm run test -- --watch\" --scope frolint",