diff --git a/.github/workflows/browserstack.yml b/.github/workflows/browserstack.yml new file mode 100644 index 0000000000..a14bd83f0c --- /dev/null +++ b/.github/workflows/browserstack.yml @@ -0,0 +1,39 @@ +name: BrowserStack +on: [push] +env: + CI: true + NODE: 10.x + +jobs: + browserstack: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set Node.js version + uses: actions/setup-node@v1 + with: + node-version: "${{ env.NODE }}" + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/browserstack.yml') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/browserstack.yml') }} + ${{ runner.OS }}-node-v${{ env.NODE }}- + + - name: Install npm dependencies + run: npm ci + + - name: Run dist + run: npm run dist + + - name: Run BrowserStack tests + run: npm run js-test-cloud + env: + BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}" + BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}" diff --git a/.github/workflows/bundlewatch.yml b/.github/workflows/bundlewatch.yml new file mode 100644 index 0000000000..5a2ccc8771 --- /dev/null +++ b/.github/workflows/bundlewatch.yml @@ -0,0 +1,38 @@ +name: Bundlewatch +on: [push, pull_request] +env: + CI: true + NODE: 10.x + +jobs: + bundlewatch: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set Node.js version + uses: actions/setup-node@v1 + with: + node-version: "${{ env.NODE }}" + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/bundlesize.yml') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/bundlesize.yml') }} + ${{ runner.OS }}-node-v${{ env.NODE }}- + + - name: Install npm dependencies + run: npm ci + + - name: Run dist + run: npm run dist + + - name: Run bundlewatch + run: npm run bundlewatch + env: + BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}" diff --git a/.github/workflows/css.yml b/.github/workflows/css.yml new file mode 100644 index 0000000000..cb4159da2b --- /dev/null +++ b/.github/workflows/css.yml @@ -0,0 +1,33 @@ +name: CSS +on: [push, pull_request] +env: + CI: true + NODE: 10.x + +jobs: + css: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set Node.js version + uses: actions/setup-node@v1 + with: + node-version: "${{ env.NODE }}" + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/css.yml') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/css.yml') }} + ${{ runner.OS }}-node-v${{ env.NODE }}- + + - name: Install npm dependencies + run: npm ci + + - name: Build CSS + run: npm run css diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000000..d40371d605 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,35 @@ +name: Docs +on: [push, pull_request] +env: + CI: true + NODE: 10.x + +jobs: + docs: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set Node.js version + uses: actions/setup-node@v1 + with: + node-version: "${{ env.NODE }}" + + - run: java -version + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/docs.yml') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/docs.yml') }} + ${{ runner.OS }}-node-v${{ env.NODE }}- + + - name: Install npm dependencies + run: npm ci + + - name: Test docs + run: npm run docs diff --git a/.github/workflows/test.yml b/.github/workflows/js.yml similarity index 64% rename from .github/workflows/test.yml rename to .github/workflows/js.yml index a990301dc1..2d0c72b6be 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/js.yml @@ -1,4 +1,4 @@ -name: Tests +name: JS Tests on: [push, pull_request] env: CI: true @@ -22,8 +22,6 @@ jobs: with: node-version: ${{ matrix.node }} - - run: java -version - - name: Set up npm cache uses: actions/cache@v2 with: @@ -36,21 +34,11 @@ jobs: - name: Install npm dependencies run: npm ci - - name: Run tests - run: npm test + - name: Run dist + run: npm run js - - name: Run bundlewatch - run: npm run bundlewatch - if: matrix.node == 10 - env: - BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}" - - - name: Run BrowserStack tests - run: npm run js-test-cloud - if: matrix.node == 10 && github.repository == 'twbs/bootstrap' && github.event_name == 'push' - env: - BROWSER_STACK_ACCESS_KEY: "${{ secrets.BROWSER_STACK_ACCESS_KEY }}" - BROWSER_STACK_USERNAME: "${{ secrets.BROWSER_STACK_USERNAME }}" + - name: Run JS tests + run: npm run js-test - name: Run Coveralls uses: coverallsapp/github-action@master diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000000..715bdae1cd --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,33 @@ +name: Lint +on: [push, pull_request] +env: + CI: true + NODE: 10.x + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set Node.js version + uses: actions/setup-node@v1 + with: + node-version: "${{ env.NODE }}" + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/lint.yml') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}-${{ hashFiles('.github/workflows/lint.yml') }} + ${{ runner.OS }}-node-v${{ env.NODE }}- + + - name: Install npm dependencies + run: npm ci + + - name: Lint CSS and JS + run: npm run lint diff --git a/README.md b/README.md index 7d8081a2dd..51d92644b2 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Read the [Getting started page](https://getbootstrap.com/docs/4.5/getting-starte ## Status [![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/) -[![Build Status](https://github.com/twbs/bootstrap/workflows/Tests/badge.svg?branch=master)](https://github.com/twbs/bootstrap/actions?query=workflow%3ATests+branch%3Amaster) +[![Build Status](https://github.com/twbs/bootstrap/workflows/JS%20Tests/badge.svg?branch=master)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amaster) [![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap) [![Gem version](https://img.shields.io/gem/v/bootstrap.svg)](https://rubygems.org/gems/bootstrap) [![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue.svg)](https://atmospherejs.com/twbs/bootstrap)