Skip to content

experimental - allow payloadless variant constructors in input unions #167

experimental - allow payloadless variant constructors in input unions

experimental - allow payloadless variant constructors in input unions #167

Workflow file for this run

name: CI
on:
push:
branches: [main]
tags: "*.*.*"
pull_request:
branches: [main]
jobs:
test:
strategy:
fail-fast: false
matrix:
# Stay on the oldest Ubuntu version that's still supported by Github Actions
# to avoid glibc incompatibilities as far as possible.
os: [
macos-13, # x64
macos-14, # ARM,
ubuntu-20.04,
windows-latest,
]
# syntax explanation:
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#example-including-additional-values-into-combinations
include:
- os: macos-13
artifact-folder: darwin
- os: macos-14
artifact-folder: darwinarm64
- os: ubuntu-20.04
artifact-folder: linux
- os: windows-latest
artifact-folder: win32
runs-on: ${{matrix.os}}
steps:
# needed for Windows testing
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- uses: actions/checkout@v3
- name: Cache OCaml's opam
uses: actions/cache@v3
with:
path: ~/.opam
key: ${{matrix.os}}-rescript-vscode-v4
- name: Use OCaml
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: 4.14.x
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: opam install dune cppo
# - run: npm run res:build
# These 2 runs (or just the second?) are for when you have opam dependencies. We don't.
# Don't add deps. But if you ever do, un-comment these and add an .opam file.
# - run: opam pin add resgraph.dev . --no-action
# - run: opam install . --deps-only --with-doc --with-test
- name: Build and test
run: opam exec -- make test
# Also avoids artifacts upload permission loss:
# https://github.com/actions/upload-artifact/tree/ee69f02b3dfdecd58bb31b4d133da38ba6fe3700#permission-loss
- name: Compress files
run: |
cd bin
mkdir ${{matrix.artifact-folder}}
mv dev/resgraph.exe ${{matrix.artifact-folder}}
tar -cvf binary.tar ${{matrix.artifact-folder}}
- uses: actions/upload-artifact@v3
with:
name: ${{matrix.os}}
path: bin/binary.tar
package:
needs: test
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 16
- run: npm ci
- run: npm run res:build
- name: Download MacOS x86 binary
uses: actions/download-artifact@v3
with:
name: macos-13
path: ./bin
- run: tar -xvf binary.tar
working-directory: ./bin
- name: Download MacOS ARM binary
uses: actions/download-artifact@v3
with:
name: macos-14
path: ./bin
- run: tar -xvf binary.tar
working-directory: ./bin
- name: Download Linux binary
uses: actions/download-artifact@v3
with:
name: ubuntu-20.04
path: ./bin
- run: tar -xvf binary.tar
working-directory: ./bin
- name: Download Windows binary
uses: actions/download-artifact@v3
with:
name: windows-latest
path: ./bin
- run: tar -xvf binary.tar
working-directory: ./bin
- name: Cleanup tar file
run: rm binary.tar
working-directory: ./bin
- name: Store short commit SHA for filename
id: vars
env:
COMMIT_SHA: ${{ github.event.pull_request.head.sha || github.sha }}
run: echo "::set-output name=sha_short::${COMMIT_SHA:0:7}"
- name: Store tag name
id: tag_name
if: startsWith(github.ref, 'refs/tags/')
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
- name: Package release
run: npm pack
- name: Rename package
run: mv resgraph*.tgz resgraph.tgz
- uses: actions/upload-artifact@v3
with:
name: resgraph.tgz
path: resgraph.tgz
- name: Publish release version if wanted
if: startsWith(github.ref, 'refs/tags/')
uses: JS-DevTools/npm-publish@v1
with:
token: ${{ secrets.NPM_TOKEN }}
package: ./package.json