Create js/native with copy_files under styled-ppx.css/bs-css #1329
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Ppx CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
permissions: | |
contents: write | |
pull-requests: write | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
name: Build | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, macos-latest] # Missing windows-latest | |
ocaml-compiler: | |
- 4.14.x | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
# https://github.com/mmottl/pcre-ocaml/issues/18 | |
# https://github.com/actions/runner-images/issues/6634 | |
- name: Install pcre (only MacOS) | |
if: matrix.os == 'macos-latest' | |
run: brew install pcre | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
- name: Use OCaml ${{ matrix.ocaml-compiler }} | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: ${{ matrix.ocaml-compiler }} | |
- name: Load opam cache when not Windows | |
if: runner.os != 'Windows' | |
id: opam-cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: ~/.opam | |
key: opam-${{ matrix.os }}-${{ hashFiles('**.opam') }} | |
- name: Load opam cache when Windows | |
if: runner.os == 'Windows' | |
id: opam-cache-windows | |
uses: actions/cache/restore@v3 | |
with: | |
path: _opam | |
key: opam-${{ matrix.os }}-${{ hashFiles('**.opam') }} | |
- name: Install dependencies | |
run: make install | |
- name: Install pins | |
run: make pin | |
- name: Build | |
run: make build | |
- name: Test ppx snapshot | |
run: make test_ppx_snapshot | |
- name: Test Typecheck | |
run: make test_typecheck | |
- name: Test CSS Support | |
run: make test_css_support | |
- name: Test CSS Lexer | |
run: make test_css_lexer | |
- name: Test CSS Parser | |
run: make test_parser | |
- name: Test CSS Parser | |
run: make test_reason_css_parser | |
- name: Test CSS Spec Parser | |
run: make test_css_spec_parser | |
- name: Test CSS Spec type generation | |
run: make test_css_spec_types | |
- name: Test string interpolation | |
run: make test_string_interpolation | |
- name: Release static | |
run: make release-static | |
- name: Upload artifacts for ${{ matrix.os }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.os }} | |
path: _build/default/bin/bin.exe | |
- name: Save cache when not Windows | |
uses: actions/cache/save@v3 | |
if: steps.opam-cache.outputs.cache-hit != 'true' && runner.os != 'Windows' | |
with: | |
path: ~/.opam | |
key: opam-${{ matrix.os }}-${{ hashFiles('**.opam') }} | |
- name: Save cache when Windows | |
uses: actions/cache/save@v3 | |
if: steps.opam-cache-windows.outputs.cache-hit != 'true' && runner.os == 'Windows' | |
with: | |
path: _opam | |
key: opam-${{ matrix.os }}-${{ hashFiles('**.opam') }} | |
e2e: | |
name: Browser tests | |
runs-on: ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ matrix.os }} | |
path: _build/default/bin | |
- name: Grant permission to run ppx | |
run: chmod +x _build/default/bin/bin.exe | |
- name: Install dependencies | |
working-directory: ./e2e/rescript-v9-JSX3 | |
run: npm install --force | |
- name: Build | |
working-directory: ./e2e/rescript-v9-JSX3 | |
run: npm run build | |
- name: Test | |
working-directory: ./e2e/rescript-v9-JSX3 | |
run: npm run test | |
publish: | |
name: Publish | |
needs: build | |
if: github.repository_owner == 'davesnx' | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
- name: Make NPM release skeleton | |
run: node scripts/release-make-skeleton.js | |
- name: Print short SHA | |
id: sha | |
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
- name: Download linux artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: ubuntu-20.04 | |
path: _release/platform-linux-x64 | |
- name: Download macOS artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: macos-latest | |
path: _release/platform-darwin-x64 | |
# - name: Download windows artifacts | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: windows-latest | |
# path: _release/platform-windows-x64 | |
- name: Release nightly NPM package | |
if: ${{ success() && github.event_name == 'pull_request' && github.event.pull_request.user.login == 'davesnx' }} | |
id: nightly | |
working-directory: ./_release | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} | |
run: | | |
npm config set //registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN | |
npm config set scope "@davesnx" | |
npm version prerelease --preid ${{ steps.sha.outputs.sha_short }} -no-git-tag-version | |
npm publish --access public --tag nightly | |
echo "version=$(npm view @davesnx/styled-ppx@nightly version)" >> $GITHUB_OUTPUT | |
- name: Release NPM package | |
if: ${{ success() && github.event_name != 'pull_request' }} | |
working-directory: ./_release | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} | |
run: | | |
npm config set //registry.npmjs.org/:_authToken=$NODE_AUTH_TOKEN | |
npm config set scope "@davesnx" | |
REMOTE=$(npm view @davesnx/styled-ppx version) | |
CURRENT=$(jq -r '.version' package.json) | |
if [ "$REMOTE" != "$CURRENT" ] | |
then | |
npm publish --access public | |
else | |
echo "New verison and remote version are equal, nothing to publish" | |
fi | |
- uses: mshick/add-pr-comment@v2 | |
if: ${{ steps.nightly.outputs.version }} | |
with: | |
message: | | |
New **nightly** version has been published to the NPM registry: [@davesnx/styled-ppx@${{ steps.nightly.outputs.version }}](https://www.npmjs.com/package/@davesnx/styled-ppx/v/${{ steps.nightly.outputs.version }}). | |
Install it with `npm install @davesnx/styled-ppx@nightly` or `npm install @davesnx/styled-ppx@${{ steps.nightly.outputs.version }}`. | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
allow-repeats: false |