Support per-file _CoqProject #1363
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
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 |