Skip to content

Merge pull request #945 from SkySkimmer/vscoq-multiple-coqproject #1365

Merge pull request #945 from SkySkimmer/vscoq-multiple-coqproject

Merge pull request #945 from SkySkimmer/vscoq-multiple-coqproject #1365

Workflow file for this run

on:
push:
branches: [ main, coq-master ]
tags:
- "v*.*.*"
pull_request:
workflow_dispatch:
jobs:
build-extension:
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 16.x
- run: |
cd client
yarn run package
nix-dev-build:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
coq: [coq-8-18, coq-8-19, coq-master]
profile: [dev, fatalwarnings]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Configure Dune
run: |
mkdir -p ~/.config/dune
cat <<EOF > ~/.config/dune/config
(lang dune 3.2)
(display short)
EOF
- uses: cachix/install-nix-action@v22
with:
nix_path: nixpkgs=channel:nixos-unstable
- name: Check each yarn.nix up to date
run: |
cd client && nix-shell -p yarn2nix --run "yarn2nix > new_yarn.nix"
cd goal-view-ui && nix-shell -p yarn2nix --run "yarn2nix > new_yarn.nix"
cd ../search-ui && nix-shell -p yarn2nix --run "yarn2nix > new_yarn.nix" && cd ..
nix fmt
diff new_yarn.nix yarn.nix
diff goal-view-ui/new_yarn.nix goal-view-ui/yarn.nix
diff search-ui/new_yarn.nix search-ui/yarn.nix
- run: nix develop .#vscoq-language-server-${{ matrix.coq }} -c bash -c "cd language-server && dune build --profile ${{ matrix.profile }}"
- run: nix develop .#vscoq-client -c bash -c "cd client && yarn run install:all && yarn run build:all && yarn run compile"
- run: xvfb-run nix develop .#vscoq-client -c bash -c "cd client && yarn test"
if: runner.os == 'Linux'
- run: nix develop .#vscoq-client -c bash -c "cd client && yarn test"
if: runner.os != 'Linux'
- if: ${{ failure() }}
run: cat /tmp/vscoq_init_log.*
install-opam:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
ocaml-compiler: [4.14.x]
coq: [8.18.0, 8.19.0, 8.20+rc1, dev]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use OCaml ${{ matrix.ocaml-compiler }}
uses: avsm/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Install vscoq-language-server
env:
OPAMYES: true
run: |
opam repo add coq-core-dev https://coq.inria.fr/opam/core-dev
if [ "${{ matrix.coq }}" = "dev" ]; then opam install coq-core.dev; else opam pin add coq-core ${{ matrix.coq }}; fi
opam pin add vscoq-language-server ./language-server/ --with-doc --with-test -y
- run: |
eval $(opam env)
echo "vscoqtop=`which vscoqtop`" >> $GITHUB_ENV
vscoqtop -v
- uses: actions/setup-node@v3
with:
node-version: 16
- run: cd client && yarn run package
- run: eval $(opam env) && cd client && xvfb-run yarn test
env:
VSCOQPATH: ${{ env.vscoqtop }}
VSCOQARGS: "-bt"
- if: ${{ failure() }}
run: cat /tmp/vscoq_init_log.*
install-windows:
if: false
runs-on: windows-latest
steps:
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- name: Checkout
uses: actions/checkout@v3
- name: Build language server
run: .\language-server\build-windows-platform.bat
env:
COQ_VERSION: V8.18+rc1
- run: C:\ci\cygwin64\bin\bash.exe --login -c 'echo vscoqtop=$(cygpath -m $(which vscoqtop))' >> $Env:GITHUB_ENV
- uses: actions/setup-node@v3
with:
node-version: 16
- run: cd client && yarn run package && yarn test
env:
VSCOQPATH: ${{ env.vscoqtop }}
VSCOQARGS: "-bt"
dev-setup-opam:
strategy:
matrix:
os: [ubuntu-latest]
ocaml-compiler: [4.14.x]
profile: [dev, fatalwarnings]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use OCaml ${{ matrix.ocaml-compiler }}
uses: avsm/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
- name: Install deps
env:
OPAMYES: true
run: |
opam repo add coq-core-dev https://coq.inria.fr/opam/core-dev
opam install ./language-server/vscoq-language-server.opam --deps-only --with-doc --with-test
- name: Build vscoq-language-server
run: |
eval $(opam env)
cd language-server && dune build --profile ${{ matrix.profile }}
- name: Unit tests
run: |
eval $(opam env)
cd language-server && dune runtest
- uses: actions/setup-node@v3
with:
node-version: 16
- run: cd client && yarn run install:all && yarn run build:all && yarn run compile
- run: cd client && xvfb-run yarn test
- if: ${{ failure() }}
run: cat /tmp/vscoq_init_log.*
create-release:
runs-on: ubuntu-latest
needs: [build-extension, nix-dev-build, install-opam, dev-setup-opam]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4
- name: Create language-server archive
run: |
cd language-server
VERSION="${GITHUB_REF_NAME_SLUG#v}"
git archive -o ../vscoq-language-server-$VERSION.tar.gz --prefix=vscoq-language-server-$VERSION/ $GITHUB_SHA .
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: vscoq-language-server-*.tar.gz
fail_on_unmatched_files: true
draft: true
prerelease: false
generate_release_notes: true
publish-extension:
runs-on: ubuntu-latest
if: success()
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Copy licences
run: |
cd client
cp ../LICENSE . && cp ../README.md .
- name: Pre publish phase
run: |
cd client
yarn run package
- name: Publish to Open VSX Registry
uses: HaaLeo/[email protected]
id: publishToOpenVSX
with:
pat: 'stub'
packagePath: ./client/
yarn: true
preRelease: false
dryRun: true
- name: Publish to Visual Studio Marketplace
uses: HaaLeo/[email protected]
with:
pat: 'stub'
packagePath: ./client/
registryUrl: https://marketplace.visualstudio.com
extensionFile: ${{ steps.publishToOpenVSX.outputs.vsixPath }}
yarn: true
preRelease: false
dryRun: true