Skip to content

Backport GitHub Actions config from feature.color-4 (#1930) #1125

Backport GitHub Actions config from feature.color-4 (#1930)

Backport GitHub Actions config from feature.color-4 (#1930) #1125

Workflow file for this run

name: CI
defaults:
run: {shell: bash}
env:
# TODO(jathak): Update this to Node 18 once unit tests are fixed.
NODE_VERSION: 14
on:
push: {branches: [main, feature.*]}
pull_request:
jobs:
unit_tests:
name: "Unit tests"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with: {node-version: "${{ env.NODE_VERSION }}"}
- uses: dart-lang/setup-dart@v1
with: {sdk: stable}
- run: npm install
- run: npm test
static_analysis:
name: "Static analysis"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with: {node-version: "${{ env.NODE_VERSION }}"}
- run: npm install
- run: npm run lint
lint_spec:
name: "Lint spec files"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with: {node-version: "${{ env.NODE_VERSION }}"}
- run: npm install
- run: npm run lint-spec
dart_sass_language:
name: "Language | Dart Sass | Dart ${{ matrix.dart_channel }}"
runs-on: ubuntu-latest
if: "github.event_name != 'pull_request' || !contains(github.event.pull_request.body, 'skip dart-sass')"
strategy:
matrix:
dart_channel: [stable, dev]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with: {node-version: "${{ env.NODE_VERSION }}"}
- run: npm install
- uses: ./.github/util/dart-sass
with:
github-token: ${{ github.token }}
dart-sdk: ${{ matrix.dart_channel }}
- name: Run specs
run: npm run sass-spec -- --dart dart-sass
libsass:
name: "Language | LibSass"
runs-on: ubuntu-latest
if: "github.event_name != 'pull_request' || !contains(github.event.pull_request.body, 'skip libsass')"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with: {node-version: "${{ env.NODE_VERSION }}"}
- run: npm install
- name: Install SassC
run: |
export SASS_LIBSASS_PATH=$BUILD_DIR/../libsass
export SASS_SASSC_PATH=$BUILD_DIR/../sassc
git clone https://github.com/sass/libsass.git $SASS_LIBSASS_PATH
(cd $SASS_LIBSASS_PATH; git checkout $GITISH)
git clone https://github.com/sass/sassc.git $SASS_SASSC_PATH
(cd $SASS_SASSC_PATH; git checkout $GITISH)
make -C $SASS_SASSC_PATH
env:
BUILD_DIR: "${{ github.workspace }}"
- name: Run specs
run: npm run sass-spec -- --impl libsass -c ../sassc/bin/sassc
# The versions should be kept up-to-date with the latest LTS Node releases.
# They next need to be rotated October 2021. See
# https://github.com/nodejs/Release.
js_api_dart_sass:
name: "JS API | Pure JS | Node ${{ matrix.node_version }} | ${{ matrix.os }}"
runs-on: "${{ matrix.os }}"
if: "github.event_name != 'pull_request' || !contains(github.event.pull_request.body, 'skip dart-sass')"
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node_version: [18]
# Only test LTS versions on Ubuntu
include:
- os: ubuntu-latest
node_version: 14
- os: ubuntu-latest
node_version: 16
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with: {node-version: "${{ matrix.node_version }}"}
- run: npm install
- uses: ./.github/util/dart-sass
with:
github-token: ${{ github.token }}
- name: Dart Sass | Build
run: dart run grinder pkg-npm-dev
working-directory: dart-sass
- name: Run specs
run: |
npm run js-api-spec -- \
--sassPackage dart-sass/build/npm \
--sassSassRepo dart-sass/build/language
js_api_dart_sass_browser:
name: "JS API | Pure JS | Browser"
runs-on: ubuntu-latest
if: "github.event_name != 'pull_request' || !contains(github.event.pull_request.body, 'skip dart-sass')"
steps:
- uses: actions/checkout@v3
- uses: browser-actions/setup-chrome@v1
- run: npm install
- uses: ./.github/util/dart-sass
with:
github-token: ${{ github.token }}
- name: Dart Sass | Build
run: dart run grinder pkg-npm-dev
working-directory: dart-sass
- name: Run specs
run: |
npm run js-api-spec -- \
--browser \
--sassPackage dart-sass/build/npm \
--sassSassRepo dart-sass/build/language
env: {CHROME_EXECUTABLE: chrome}
# The versions should be kept up-to-date with the latest LTS Node releases.
# They next need to be rotated October 2021. See
# https://github.com/nodejs/Release.
js_api_sass_embedded:
name: "JS API | Embedded | Node ${{ matrix.node_version }} | ${{ matrix.os }}"
runs-on: "${{ matrix.os }}"
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.body, 'skip sass-embedded')
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
node_version: [18]
# Only test LTS versions on Ubuntu
include:
- os: ubuntu-latest
node_version: 14
- os: ubuntu-latest
node_version: 16
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with: {node-version: "${{ matrix.node_version }}"}
- run: npm install
- uses: ./.github/util/dart-sass
with:
github-token: ${{ github.token }}
- name: Node.js Embedded Host | Checkout
uses: sass/clone-linked-repo@v1
with: {repo: sass/embedded-host-node, path: embedded-host-node}
# Work around actions/checkout#197. We need this outside the main checkout
# because otherwise its `node_modules` conflict with sass-spec's.
- run: mv embedded-host-node ..
- name: Node.js Embedded Host | Install
run: |
npm install
npm run init -- \
--compiler-path=../sass-spec/dart-sass \
--language-path=../sass-spec/dart-sass/build/language
npm run compile
working-directory: ../embedded-host-node
- name: Run specs
run: |
npm run js-api-spec -- \
--sassPackage ../embedded-host-node \
--sassSassRepo dart-sass/build/language