Skip to content

chore: fix CHANGES #2161

chore: fix CHANGES

chore: fix CHANGES #2161

Workflow file for this run

name: Main workflow
on:
pull_request:
push:
branches:
- master
tags:
- "*"
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
# Concurrent workflows are grouped by the PR or branch that triggered them
# (github.ref) and the name of the workflow (github.workflow). The
# 'cancel-in-progress' option then make sure that only one workflow is running
# at a time. This doesn't prevent new jobs from running, rather it cancels
# already running jobs before scheduling new jobs.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'pull_request' || github.sha }}
cancel-in-progress: true
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
# macos-13 is faster than latest (macos-12)
- macos-13
- ubuntu-latest
# Disabled as discussed in
# https://github.com/ocamllabs/vscode-ocaml-platform/pull/1106
# - windows-latest
ocaml-compiler:
- 4.14.x
node-version:
- 20.x
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set-up OCaml ${{ matrix.ocaml-compiler }} on Unix
uses: ocaml/setup-ocaml@v2
if: runner.os != 'Windows'
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
dune-cache: true
opam-depext-flags: --with-test
- name: Set-up OCaml ${{ matrix.ocaml-compiler }} on Windows
uses: ocaml/setup-ocaml@v2
if: runner.os == 'Windows'
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
dune-cache: false
opam-depext-flags: --with-test
opam-repositories: |
opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset
default: https://github.com/ocaml/opam-repository.git
- name: Set-up Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Install ocaml-lsp-server
run: opam install ocaml-lsp-server
- name: Install opam packages
run: opam install . --deps-only --with-test
- name: Install npm packages
run: |
yarn --frozen-lockfile --cwd astexplorer
yarn --frozen-lockfile
- name: Check formatting
run: yarn fmt:check
- name: Build extension
run: opam exec -- make build-release
- name: Package extension
run: yarn package
- name: Upload artifact
if: runner.os == 'Linux'
uses: actions/upload-artifact@v3
with:
name: ocaml-platform-${{ github.sha }}
path: ocaml-platform.vsix
- name: Test extension
uses: coactions/setup-xvfb@v1
with:
run: yarn test
env:
OPAMSWITCH: ${{ github.workspace }}
- name: Publish extension to VSCode Marketplace
if: success() && runner.os == 'Linux' && contains(github.ref, 'refs/tags')
run: yarn deploy:vsce
env:
VSCE_PAT: ${{ secrets.VSCODE_MARKETPLACE_TOKEN }}
- name: Publish extension to Open VSX
if: success() && runner.os == 'Linux' && contains(github.ref, 'refs/tags')
run: yarn deploy:ovsx --pat "$OVSX_PAT"
env:
OVSX_PAT: ${{ secrets.OPEN_VSX_TOKEN }}
- name: Create release
if: runner.os == 'Linux' && contains(github.ref, 'refs/tags')
id: create_release
uses: actions/create-release@v1
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: true
env:
GITHUB_TOKEN: ${{ github.token }}
- name: Upload release asset
if: runner.os == 'Linux' && contains(github.ref, 'refs/tags')
uses: actions/upload-release-asset@v1
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./ocaml-platform.vsix
asset_name: ocaml-platform.vsix
asset_content_type: application/zip
env:
GITHUB_TOKEN: ${{ github.token }}
lint-fmt:
strategy:
matrix:
ocaml-compiler:
- 4.14.x
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set-up OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
dune-cache: true
- name: Lint fmt
uses: ocaml/setup-ocaml/lint-fmt@v2