Skip to content

ReScript 11

ReScript 11 #66

Workflow file for this run

name: CI
on:
pull_request:
branches:
- master
push:
branches:
- release
jobs:
check:
name: PR check
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' && github.base_ref == 'master' }}
strategy:
matrix:
os: [ubuntu-latest]
ocaml-version: [4.14.1]
node-version: [16.x]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Print Yarn cache
id: print-yarn-cache
run: echo "yarn-cache=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Restore Yarn cache
id: yarn-cache
uses: actions/cache@v1
with:
path: ${{ steps.print-yarn-cache.outputs.yarn-cache }}
key: ${{ matrix.os }}-yarn-${{ hashFiles('yarn.lock', '*/yarn.lock') }}
- name: Install Yarn deps
run: yarn install
- name: Setup OCaml ${{ matrix.ocaml-version }}
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-version }}
- name: Install Opam deps
run: opam install . --deps-only --with-test
- name: Build PPX
run: opam exec -- dune build
- name: Build ReScript lib
run: |
cd lib
yarn run build
cd ../examples
yarn run build
- name: Run PPX tests
run: opam exec -- dune exec test.exe
- name: Run integration tests
run: |
cd specs
yarn run test
build_linux:
name: Build on ${{ matrix.container-os }}
runs-on: ${{ matrix.host-os }}
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/release' }}
strategy:
matrix:
host-os: [ubuntu-latest]
container-os: [linux-alpine]
ocaml-version: [4.14.1]
node-version: [16.x]
container:
image: alex35mil/alpine-ocaml-opam-node-yarn:alpine-3.19-ocaml-4.14-node-16.20-yarn-1.22-o5gm
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Print Yarn cache
id: print-yarn-cache
run: echo "yarn-cache=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Restore Yarn cache
id: yarn-cache
uses: actions/cache@v1
with:
path: ${{ steps.print-yarn-cache.outputs.yarn-cache }}
key: ${{ matrix.container-os }}-yarn-${{ hashFiles('yarn.lock', '*/yarn.lock') }}
- name: Install Yarn deps
run: yarn install
- name: Setup OCaml ${{ matrix.ocaml-version }}
run: opam init -a --disable-sandboxing --compiler=${{ matrix.ocaml-version }}
- name: Install Opam deps
run: opam install . --deps-only --with-test
- name: Build PPX
run: opam exec -- dune build --profile static
- name: Build ReScript lib
run: |
cd lib
yarn run build
cd ../examples
yarn run build
- name: Run PPX tests
run: opam exec -- dune exec test.exe
# NOTE: Integration tests are broken on Alpine
# - name: Run integration tests
# run: |
# cd specs
# yarn run test
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: ${{ matrix.container-os }}
path: _build/default/ppx/bin/bin.exe
build_macos:
name: Build on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/release' }}
strategy:
matrix:
os: [macos-13, macos-14]
ocaml-version: [4.14.1]
node-version: [16.x]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Print Yarn cache
id: print-yarn-cache
run: echo "yarn-cache=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Restore Yarn cache
id: yarn-cache
uses: actions/cache@v1
with:
path: ${{ steps.print-yarn-cache.outputs.yarn-cache }}
key: ${{ matrix.os }}-yarn-${{ hashFiles('yarn.lock', '*/yarn.lock') }}
- name: Install Yarn deps
run: yarn install
- name: Setup OCaml ${{ matrix.ocaml-version }}
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-version }}
- name: Install Opam deps
run: opam install . --deps-only --with-test
- name: Build PPX
run: opam exec -- dune build
- name: Build ReScript lib
run: |
cd lib
yarn run build
cd ../examples
yarn run build
- name: Run PPX tests
run: opam exec -- dune exec test.exe
- name: Run integration tests
run: |
cd specs
yarn run test
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: ${{ matrix.os }}
path: _build/default/ppx/bin/bin.exe
build_windows:
name: Build on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
# if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/release' }}
strategy:
matrix:
os: [windows-latest]
ocaml-version: [4.14.1]
node-version: [16.x]
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Setup Node ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: Print Yarn cache
id: print-yarn-cache
run: echo "::set-output name=yarn-cache::$(yarn cache dir)" # Using the old way as the new way doesn't work on windows
- name: Restore Yarn cache
id: yarn-cache
uses: actions/cache@v1
with:
path: ${{ steps.print-yarn-cache.outputs.yarn-cache }}
key: ${{ matrix.os }}-yarn-${{ hashFiles('yarn.lock', '*/yarn.lock') }}
- name: Install Yarn deps
run: yarn install
- name: Install Esy
run: npm install -g esy@0.7.2
- name: Install Esy deps
run: esy install
- name: Print Esy cache
id: print-esy-cache
run: node .github/workflows/scripts/print-esy-cache.js
- name: Restore Esy cache
id: esy-cache
uses: actions/cache@v1
with:
path: ${{ steps.print-esy-cache.outputs.esy-cache }}
key: ${{ matrix.os }}-esy-${{ hashFiles('**/index.json') }}
- name: Build ppx
run: esy build
- name: Build ReScript lib
run: |
cd lib
yarn run build
cd ../examples
yarn run build
- name: Run ppx tests
# FIXME: Snapshot tests are broken on Win
# if: matrix.os != 'windows-latest'
run: esy x test.exe
- name: Run integration tests
run: |
cd specs
yarn run test
- name: Upload artifacts
uses: actions/upload-artifact@v1
with:
name: ${{ matrix.os }}
path: _build/default/ppx/bin/bin.exe
# rc:
# needs:
# - build
# - build_linux
# name: Prepare RC
# runs-on: ubuntu-latest
#
# steps:
# - name: Checkout repo
# uses: actions/checkout@v2
#
# - name: Setup Node ${{ matrix.node-version }}
# uses: actions/setup-node@v1
# with:
# node-version: 16.x
#
# - name: Download Linux artifacts
# uses: actions/download-artifact@v1
# with:
# name: ubuntu-latest
# path: _bin/linux
#
# - name: Download macOS artifacts
# uses: actions/download-artifact@v1
# with:
# name: macOS-latest
# path: _bin/darwin
#
# - name: Download Windows artifacts
# uses: actions/download-artifact@v1
# with:
# name: windows-latest
# path: _bin/windows
#
# - name: Move artifacts
# run: |
# mkdir -p _release/bin
# mv _bin/darwin/bin.exe _release/bin/re-formality-ppx-darwin-x64.exe
# mv _bin/windows/bin.exe _release/bin/re-formality-ppx-win-x64.exe
# mv _bin/linux/bin.exe _release/bin/re-formality-ppx-linux-x64.exe
# rm -rf _bin
#
# - name: Move lib files
# run: |
# mkdir -p _release/src
# cp README.md _release/README.md
# cp lib/bsconfig.json _release/bsconfig.json
# cp -a lib/src/. _release/src/
# cp .github/workflows/scripts/postinstall.js _release/postinstall.js
# node .github/workflows/scripts/write-package-json.js
#
# - name: Upload release
# uses: actions/upload-artifact@v1
# with:
# name: release
# path: _release