From 6c04d186e2444708d8c2fbbf515198ad37787a0d Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Fri, 12 Jun 2020 21:12:53 +0300 Subject: [PATCH] Split GitHub Actions. --- .github/workflows/browserstack.yml | 40 ++++++++++++++ .github/workflows/bundlewatch.yml | 39 +++++++++++++ .github/workflows/css.yml | 33 +++++++++++ .github/workflows/dart-sass.yml | 24 ++++++++ .github/workflows/docs.yml | 65 ++++++++++++++++++++++ .github/workflows/js.yml | 48 ++++++++++++++++ .github/workflows/lint.yml | 33 +++++++++++ .github/workflows/test.yml | 88 ------------------------------ README.md | 2 +- 9 files changed, 283 insertions(+), 89 deletions(-) create mode 100644 .github/workflows/browserstack.yml create mode 100644 .github/workflows/bundlewatch.yml create mode 100644 .github/workflows/css.yml create mode 100644 .github/workflows/dart-sass.yml create mode 100644 .github/workflows/docs.yml create mode 100644 .github/workflows/js.yml create mode 100644 .github/workflows/lint.yml delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/browserstack.yml b/.github/workflows/browserstack.yml new file mode 100644 index 0000000000..f709b98da4 --- /dev/null +++ b/.github/workflows/browserstack.yml @@ -0,0 +1,40 @@ +name: BrowserStack +on: [push] +env: + CI: true + NODE: 12.x + +jobs: + browserstack: + runs-on: ubuntu-latest + if: github.repository == 'twbs/bootstrap' + + 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') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} + ${{ 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..1e68223ba3 --- /dev/null +++ b/.github/workflows/bundlewatch.yml @@ -0,0 +1,39 @@ +name: Bundlewatch +on: [push, pull_request] +env: + CI: true + NODE: 12.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') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} + ${{ 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 }}" + CI_BRANCH_BASE: v4-dev diff --git a/.github/workflows/css.yml b/.github/workflows/css.yml new file mode 100644 index 0000000000..390bffc966 --- /dev/null +++ b/.github/workflows/css.yml @@ -0,0 +1,33 @@ +name: CSS +on: [push, pull_request] +env: + CI: true + NODE: 12.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') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} + ${{ 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/dart-sass.yml b/.github/workflows/dart-sass.yml new file mode 100644 index 0000000000..8482a152ef --- /dev/null +++ b/.github/workflows/dart-sass.yml @@ -0,0 +1,24 @@ +name: CSS (Dart Sass) +on: [push, pull_request] +env: + CI: true + NODE: 12.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: Build CSS with Dart Sass + run: | + npx --package sass@latest sass --version + npx --package sass@latest sass --style expanded --source-map --embed-sources --no-error-css scss/:dist-sass/css/ + ls -Al dist-sass/css diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000000..5c7ef45203 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,65 @@ +name: Docs +on: [push, pull_request] +env: + CI: true + NODE: 12.x + RUBY: 2.6.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 }}" + + - name: Set up Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: ${{ env.RUBY }} + + - name: Disable gem docs + run: 'echo "gem: --no-document" > ~/.gemrc' + + - name: Set up Ruby cache + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-ruby-v${{ env.RUBY }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-ruby-v${{ env.RUBY }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} + ${{ runner.os }}-ruby-v${{ env.RUBY }}- + + - 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') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} + ${{ runner.OS }}-node-v${{ env.NODE }}- + + - name: Set up Bundler + run: gem install bundler -v "~> 1.17" + + - run: ruby --version + - run: gem --version + - run: bundle --version + - run: java -version + + - name: Install npm dependencies + run: npm ci + + - name: Install bundler dependencies + run: bundle install --deployment --jobs=4 --retry=3 --clean + + - name: Copy CSS and JS + run: npm run css-copy && npm run js-copy + + - name: Test docs + run: npm run docs diff --git a/.github/workflows/js.yml b/.github/workflows/js.yml new file mode 100644 index 0000000000..543172ccb2 --- /dev/null +++ b/.github/workflows/js.yml @@ -0,0 +1,48 @@ +name: JS Tests +on: [push, pull_request] +env: + CI: true + +jobs: + run: + name: Node ${{ matrix.node }} + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + node: [10, 12] + + steps: + - name: Clone repository + uses: actions/checkout@v2 + + - name: Set Node.js version + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node }} + + - name: Set up npm cache + uses: actions/cache@v2 + with: + path: ~/.npm + key: ${{ runner.os }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }}} + restore-keys: | + ${{ runner.OS }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} + ${{ runner.OS }}-node-v${{ matrix.node }}- + + - name: Install npm dependencies + run: npm ci + + - name: Run dist + run: npm run js + + - name: Run JS tests + run: npm run js-test + + - name: Run Coveralls + uses: coverallsapp/github-action@master + if: matrix.node == 12 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" + path-to-lcov: "./js/coverage/lcov.info" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000000..f3d00d69ff --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,33 @@ +name: Lint +on: [push, pull_request] +env: + CI: true + NODE: 12.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') }} + restore-keys: | + ${{ runner.OS }}-node-v${{ env.NODE }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} + ${{ runner.OS }}-node-v${{ env.NODE }}- + + - name: Install npm dependencies + run: npm ci + + - name: Lint + run: npm run lint diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index c371f24bea..0000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,88 +0,0 @@ -name: Tests -on: [push, pull_request] -env: - CI: true - -jobs: - run: - name: Node ${{ matrix.node }} - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - node: [10, 12] - ruby: [2.6.x] - - steps: - - name: Clone repository - uses: actions/checkout@v2 - - - name: Set Node.js version - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} - - - name: Set up Ruby - uses: actions/setup-ruby@v1 - with: - ruby-version: ${{ matrix.ruby }} - - - name: Disable gem docs - run: 'echo "gem: --no-document" > ~/.gemrc' - - - name: Set up Ruby cache - uses: actions/cache@v2 - with: - path: vendor/bundle - key: ${{ runner.os }}-ruby-v${{ matrix.ruby }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-ruby-v${{ matrix.ruby }}-${{ hashFiles('Gemfile') }}-${{ hashFiles('Gemfile.lock') }} - ${{ runner.os }}-ruby-v${{ matrix.ruby }}- - - - name: Set up npm cache - uses: actions/cache@v2 - with: - path: ~/.npm - key: ${{ runner.os }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - restore-keys: | - ${{ runner.OS }}-node-v${{ matrix.node }}-${{ hashFiles('package.json') }}-${{ hashFiles('package-lock.json') }} - ${{ runner.OS }}-node-v${{ matrix.node }}- - - - name: Set up Bundler - run: gem install bundler -v "~> 1.17" - - - run: ruby --version - - run: gem --version - - run: bundle --version - - run: java -version - - - name: Install npm dependencies - run: npm ci - - - name: Install bundler dependencies - run: bundle install --deployment --jobs=4 --retry=3 --clean - - - name: Run tests - run: npm test - - - name: Run bundlewatch - run: npm run bundlewatch - if: matrix.node == 10 - env: - BUNDLEWATCH_GITHUB_TOKEN: "${{ secrets.BUNDLEWATCH_GITHUB_TOKEN }}" - CI_BRANCH_BASE: v4-dev - - - 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 Coveralls - uses: coverallsapp/github-action@master - if: matrix.node == 10 - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - path-to-lcov: "./js/coverage/lcov.info" diff --git a/README.md b/README.md index 36beccd3f3..02f7db0968 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=v4-dev)](https://github.com/twbs/bootstrap/actions?query=workflow%3ATests+branch%3Av4-dev) +[![Build Status](https://github.com/twbs/bootstrap/workflows/JS%20Tests/badge.svg?branch=v4-dev)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Av4-dev) [![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)