enso/.github/workflows/scala-new.yml
2022-02-16 17:04:18 +01:00

89 lines
2.7 KiB
YAML

# This is the new, in progress, Build Workflow for the Enso Engine.
name: Engine CI (new)
on:
push:
branches: [develop, "release/*"]
pull_request:
branches: ["*"]
workflow_dispatch:
jobs:
# Engine builds are slow and our runners limited in capacity. Thus we cancel any workflow runs for older commits
# on this branch.
cancel:
name: Cancel previous runs
runs-on:
# We can run pretty much on any runner. The label below is the one present everywhere.
- X64
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.1
with:
access_token: ${{ github.token }}
test_and_publish:
name: Engine
runs-on:
- ${{ matrix.os }}
- self-hosted
- engine
timeout-minutes: 90
strategy:
matrix:
# The macOS support is not yet done. For now, the GitHub-hosted runner
# in the old workflow should be relied upon.
os: [Windows, Linux]
fail-fast: false
steps:
- uses: actions/checkout@v2
with:
clean: false
path: ci-build
ref: deployed
repository: enso-org/ci-build
- uses: actions/checkout@v2
with:
path: enso
- run: cargo run --release --bin enso-build -- ${{ github.workspace }}/enso build
working-directory: ${{ github.workspace }}/ci-build
#####################
# PUBLISH ARTIFACTS #
#####################
- name: Publish the Engine Distribution Artifact
uses: actions/upload-artifact@v2
with:
name: ${{ env.ENGINE_DIST_NAME }}
# Irregular, engine is pre-zipped to avoid long paths issues of nodejs.
path: ${{ env.ENGINE_DIST_ARCHIVE }}
- name: Publish the Launcher
uses: actions/upload-artifact@v2
with:
name: ${{ env.LAUNCHER_DIST_NAME }}
path: ${{ env.LAUNCHER_DIST_ROOT }}
- name: Publish the Project Manager
uses: actions/upload-artifact@v2
with:
name: ${{ env.PROJECTMANAGER_DIST_NAME }}
path: ${{ env.PROJECTMANAGER_DIST_ROOT }}
- name: Publish the FlatBuffers Schemas
if: runner.os == 'Linux'
uses: actions/upload-artifact@v2
with:
name: Engine Protocol FlatBuffers Schemas
path: ${{ env.TARGET_DIR }}/fbs-upload/fbs-schema.zip
- name: Publish the Parser JS Bundle
if: runner.os == 'Linux'
uses: actions/upload-artifact@v2
with:
name: Parser JS Bundle
path: ${{ env.TARGET_DIR }}/scala-parser.js
- name: Publish the Manifest
if: runner.os == 'Linux'
uses: actions/upload-artifact@v2
with:
name: manifest
path: ${{ env.ENGINE_DIST_DIR }}/manifest.yaml