dart-sass/.github/workflows/ci.yml

466 lines
14 KiB
YAML
Raw Normal View History

2021-01-06 13:41:24 +01:00
name: CI
defaults:
run: {shell: bash}
2021-01-08 23:36:24 +01:00
env:
# Note: when changing this, also change
# jobs.node_tests.strategy.matrix.node_version and the Node version for Dart
# dev tests.
DEFAULT_NODE_VERSION: 16
2021-01-08 23:36:24 +01:00
2021-01-06 13:41:24 +01:00
on:
push:
branches: [main, feature.*]
tags: ['[0-9]+.[0-9]+.*']
2021-01-06 13:41:24 +01:00
pull_request:
jobs:
sass_spec_language:
name: "Language Tests | Dart ${{ matrix.dart_channel }} | ${{ matrix.async_label }}"
2021-01-08 23:36:24 +01:00
runs-on: ubuntu-latest
2021-01-06 13:41:24 +01:00
strategy:
fail-fast: false
matrix:
dart_channel: [stable, dev]
async_label: [synchronous]
async_args: ['']
include:
- dart_channel: stable
async_label: asynchronous
async_args: '--cmd-args --async'
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
with: {sdk: "${{ matrix.dart_channel }}"}
2021-01-06 13:41:24 +01:00
- run: dart pub get
- name: Check out sass-spec
uses: sass/clone-linked-repo@v1
with: {repo: sass/sass-spec}
- uses: actions/setup-node@v2
with: {node-version: "${{ env.DEFAULT_NODE_VERSION }}"}
- run: npm install
working-directory: sass-spec
2021-01-06 13:41:24 +01:00
- name: Run specs
run: npm run sass-spec -- --dart .. $extra_args
2021-01-06 13:41:24 +01:00
working-directory: sass-spec
2021-01-08 23:36:24 +01:00
env: {extra_args: "${{ matrix.async_args }}"}
2021-01-06 13:41:24 +01:00
# The versions should be kept up-to-date with the latest LTS Node releases.
# They next need to be rotated April 2021. See
# https://github.com/nodejs/Release.
sass_spec_js:
name: "JS API Tests | Dart ${{ matrix.dart_channel }} | Node ${{ matrix.node_version }} | ${{ matrix.os }}"
runs-on: "${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
dart_channel: [stable]
node_version: [16]
include:
# Include LTS versions on Ubuntu
- os: ubuntu-latest
dart_channel: stable
node_version: 14
- os: ubuntu-latest
dart_channel: stable
node_version: 12
- os: ubuntu-latest
dart_channel: dev
node_version: 16
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
with: {sdk: "${{ matrix.dart_channel }}"}
- run: dart pub get
- uses: actions/setup-node@v2
with: {node-version: "${{ matrix.node_version }}"}
- run: npm install
- name: Check out sass-spec
uses: sass/clone-linked-repo@v1
with: {repo: sass/sass-spec}
2021-10-21 22:40:20 +02:00
- name: Install sass-spec dependencies
run: npm install
working-directory: sass-spec
- name: Build JS
run: dart pub run grinder pkg-npm-dev
- name: Check out Sass specification
uses: sass/clone-linked-repo@v1
with:
repo: sass/sass
path: language
- name: Run tests
2021-10-21 22:40:20 +02:00
run: npm run js-api-spec -- --sassSassRepo ../language --sassPackage ../build/npm
working-directory: sass-spec
2021-01-06 13:41:24 +01:00
dart_tests:
name: "Dart tests | Dart ${{ matrix.dart_channel }} | ${{ matrix.os }}"
2021-01-08 23:36:24 +01:00
runs-on: "${{ matrix.os }}"
2021-01-06 13:41:24 +01:00
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
dart_channel: [stable]
2021-01-08 23:36:24 +01:00
include: [{os: ubuntu-latest, dart_channel: dev}]
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
with: {sdk: "${{ matrix.dart_channel }}"}
2021-01-06 13:41:24 +01:00
- run: dart pub get
- run: dart pub run grinder pkg-standalone-dev
- name: Run tests
run: dart pub run test -p vm -x node -r expanded
# Unit tests that use Node.js, defined in test/.
#
# The versions should be kept up-to-date with the latest LTS Node releases.
# They next need to be rotated April 2021. See
# https://github.com/nodejs/Release.
node_tests:
name: "Node tests | Dart ${{ matrix.dart_channel }} | Node ${{ matrix.node_version }} | ${{ matrix.os }}"
2021-01-08 23:36:24 +01:00
runs-on: "${{ matrix.os }}"
2021-01-06 13:41:24 +01:00
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
dart_channel: [stable]
node_version: [16]
2021-01-06 13:41:24 +01:00
include:
# Include LTS versions on Ubuntu
- os: ubuntu-latest
dart_channel: stable
node_version: 14
2021-01-06 13:41:24 +01:00
- os: ubuntu-latest
dart_channel: stable
node_version: 12
- os: ubuntu-latest
dart_channel: dev
node_version: 16
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
with: {sdk: "${{ matrix.dart_channel }}"}
2021-01-06 13:41:24 +01:00
- run: dart pub get
- uses: actions/setup-node@v2
2021-01-08 23:36:24 +01:00
with: {node-version: "${{ matrix.node_version }}"}
2021-01-06 13:41:24 +01:00
- run: npm install
- run: dart pub run grinder before-test
- name: Run tests
run: dart pub run test -j 2 -t node -r expanded
static_analysis:
name: Static analysis
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- name: Analyze Dart
run: dart analyze --fatal-warnings --fatal-infos .
2021-01-06 13:41:24 +01:00
dartdoc:
name: Dartdoc
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- name: dartdoc sass
run: dartdoc --quiet --no-generate-docs
--errors ambiguous-doc-reference,broken-link,deprecated
--errors unknown-directive,unknown-macro,unresolved-doc-reference
- name: dartdoc sass_api
run: cd pkg/sass_api && dartdoc --quiet --no-generate-docs
--errors ambiguous-doc-reference,broken-link,deprecated
--errors unknown-directive,unknown-macro,unresolved-doc-reference
double_check:
name: Double-check
runs-on: ubuntu-latest
needs:
- sass_spec_language
- sass_spec_js
- dart_tests
- node_tests
- static_analysis
- dartdoc
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- name: Run checks
run: dart pub run grinder double-check-before-release
bootstrap:
name: "Bootstrap ${{ matrix.bootstrap_version }}"
runs-on: ubuntu-latest
needs: [double_check]
strategy:
fail-fast: false
matrix:
bootstrap_version: [4, 5]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- run: dart pub run grinder fetch-bootstrap${{matrix.bootstrap_version}}
env: {GITHUB_BEARER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"}
- name: Build
run: dart bin/sass.dart --quiet build/bootstrap/scss:build/bootstrap-output
bourbon:
name: Bourbon
runs-on: ubuntu-latest
needs: [double_check]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- run: dart pub run grinder fetch-bourbon
env: {GITHUB_BEARER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"}
- name: Test
run: |
dart bin/sass.dart --quiet -I build/bourbon -I build/bourbon/spec/fixtures \
build/bourbon/spec/fixtures:build/bourbon-output
foundation:
name: Foundation
runs-on: ubuntu-latest
needs: [double_check]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- run: dart pub run grinder fetch-foundation
env: {GITHUB_BEARER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"}
# TODO(nweiz): Foundation has proper Sass tests, but they're currently not
# compatible with Dart Sass. Once they are, we should run those rather
# than just building the CSS output.
- name: Build
run: dart bin/sass.dart --quiet build/foundation-sites/assets:build/foundation-output
bulma:
name: Bulma
runs-on: ubuntu-latest
needs: [double_check]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- run: dart pub run grinder fetch-bulma
env: {GITHUB_BEARER_TOKEN: "${{ secrets.GITHUB_TOKEN }}"}
- name: Build
run: dart bin/sass.dart --quiet build/bulma/bulma.sass build/bulma-output.css
2021-01-06 13:41:24 +01:00
deploy_github_linux:
name: "Deploy Github: Linux"
runs-on: ubuntu-latest
needs: [bootstrap, bourbon, foundation, bulma]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- name: Deploy
run: dart pub run grinder pkg-github-release pkg-github-linux
env:
GH_TOKEN: "${{ secrets.GH_TOKEN }}"
GH_USER: sassbot
2021-01-06 13:41:24 +01:00
deploy_github_macos:
name: "Deploy Github: Mac OS"
runs-on: macos-latest
needs: [deploy_github_linux]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- name: Deploy
run: dart pub run grinder pkg-github-macos
env:
GH_TOKEN: "${{ secrets.GH_TOKEN }}"
GH_USER: sassbot
2021-01-06 13:41:24 +01:00
deploy_github_windows:
name: "Deploy Github: Windows"
runs-on: windows-latest
needs: [deploy_github_linux]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- name: Deploy
run: dart pub run grinder pkg-github-windows
env:
GH_TOKEN: "${{ secrets.GH_TOKEN }}"
GH_USER: sassbot
2021-01-06 13:41:24 +01:00
deploy_npm:
2021-01-08 23:36:24 +01:00
name: Deploy npm
2021-01-06 13:41:24 +01:00
runs-on: ubuntu-latest
needs: [bootstrap, bourbon, foundation, bulma]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- uses: actions/setup-node@v2
2021-01-08 23:36:24 +01:00
with: {node-version: "${{ env.DEFAULT_NODE_VERSION }}"}
2021-01-06 13:41:24 +01:00
- name: Deploy
run: dart pub run grinder pkg-npm-deploy
env:
NPM_TOKEN: "${{ secrets.NPM_TOKEN }}"
deploy_bazel:
2021-01-08 23:36:24 +01:00
name: Deploy Bazel
2021-01-06 13:41:24 +01:00
runs-on: ubuntu-latest
needs: [deploy_npm]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- uses: actions/setup-node@v2
2021-01-08 23:36:24 +01:00
with: {node-version: "${{ env.DEFAULT_NODE_VERSION }}"}
2021-01-06 13:41:24 +01:00
- name: Deploy
run: dart pub run grinder update-bazel
env:
GH_TOKEN: "${{ secrets.GH_TOKEN }}"
GH_USER: sassbot
2021-01-06 13:41:24 +01:00
deploy_pub:
name: "Deploy Pub"
runs-on: ubuntu-latest
needs: [bootstrap, bourbon, foundation, bulma]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- uses: actions/setup-node@v2
2021-01-08 23:36:24 +01:00
with: {node-version: "${{ env.DEFAULT_NODE_VERSION }}"}
2021-01-06 13:41:24 +01:00
- name: Deploy
run: dart pub run grinder pkg-pub-deploy
2021-01-08 23:36:24 +01:00
env: {PUB_CREDENTIALS: "${{ secrets.PUB_CREDENTIALS }}"}
2021-01-06 13:41:24 +01:00
deploy_sub_packages:
name: "Deploy Sub-Packages"
runs-on: ubuntu-latest
needs: [deploy_pub]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart pub get
- name: Deploy
run: dart pub run grinder deploy-sub-packages
env:
PUB_CREDENTIALS: "${{ secrets.PUB_CREDENTIALS }}"
GH_TOKEN: "${{ secrets.GH_TOKEN }}"
GH_USER: sassbot
2021-01-06 13:41:24 +01:00
deploy_homebrew:
name: "Deploy Homebrew"
runs-on: ubuntu-latest
needs: [bootstrap, bourbon, foundation, bulma]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- name: Deploy
run: dart pub run grinder pkg-homebrew-update
env:
GH_TOKEN: "${{ secrets.GH_TOKEN }}"
GH_USER: sassbot
2021-01-06 13:41:24 +01:00
deploy_chocolatey:
name: "Deploy Chocolatey"
runs-on: windows-latest
needs: [bootstrap, bourbon, foundation, bulma]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
2021-01-06 13:41:24 +01:00
- run: dart pub get
- name: Deploy
run: dart pub run grinder pkg-chocolatey-deploy
2021-01-08 23:36:24 +01:00
env: {CHOCOLATEY_TOKEN: "${{ secrets.CHOCOLATEY_TOKEN }}"}
2021-01-06 13:41:24 +01:00
deploy_website:
name: "Deploy sass-lang.com"
runs-on: ubuntu-latest
needs: [bootstrap, bourbon, foundation, bulma]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
2021-01-06 13:41:24 +01:00
steps:
- uses: actions/checkout@v2
- name: Deploy
run: tool/github-action/deploy/heroku.sh
2021-01-08 23:36:24 +01:00
env: {HEROKU_TOKEN: "${{ secrets.HEROKU_TOKEN }}"}
release_embedded_compiler:
name: "Release Embedded Compiler"
runs-on: ubuntu-latest
needs: [deploy_pub]
if: "startsWith(github.ref, 'refs/tags/') && github.repository == 'sass/dart-sass'"
steps:
- uses: actions/checkout@v2
with:
repository: sass/dart-sass-embedded
token: ${{ secrets.GH_TOKEN }}
- uses: dart-lang/setup-dart@v1
- name: Get version
id: version
run: echo "::set-output name=version::${GITHUB_REF##*/}"
- name: Update version
run: |
sed -i 's/version: .*/version: ${{ steps.version.outputs.version }}/' pubspec.yaml
dart pub remove sass
dart pub add sass:${{ steps.version.outputs.version }}
- uses: EndBug/add-and-commit@v8
with:
author_name: Sass Bot
author_email: sass.bot.beep.boop@gmail.com
message: Update Dart Sass version and release
tag: ${{ steps.version.outputs.version }}