enso/.github/workflows/scala.yml

228 lines
7.6 KiB
YAML
Raw Normal View History

2020-03-24 22:35:42 +03:00
name: Enso CI
2020-03-24 15:52:02 +03:00
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
# Please ensure that this is in sync with graalAPIVersion in build.sbt
2020-05-21 13:46:06 +03:00
graalVersion: 20.1.0
2020-03-24 15:52:02 +03:00
javaVersion: java8
# Please ensure that this is in sync with project/build.properties
2020-06-01 15:03:30 +03:00
sbtVersion: 1.3.12
2020-04-10 22:24:37 +03:00
excludedPaths: |
.github/PULL_REQUEST_TEMPLATE.md
.github/CODEOWNERS
.github/ISSUE_TEMPLATE/*
/doc/*
.gitignore
.scalafmt.conf
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE
README.md
2020-03-24 15:52:02 +03:00
jobs:
# This job is responsible for testing the codebase
2020-03-24 22:35:42 +03:00
test:
name: Test
2020-03-24 15:52:02 +03:00
runs-on: ${{ matrix.os }}
2020-03-24 22:35:42 +03:00
timeout-minutes: 30
2020-03-24 15:52:02 +03:00
strategy:
matrix:
os: [windows-latest, macOS-latest, ubuntu-latest]
fail-fast: false
steps:
2020-05-15 11:07:58 +03:00
- uses: actions/checkout@v2
- name: Setup conda
uses: s-weigand/setup-conda@v1
with:
update-conda: false
conda-channels: anaconda, conda-forge
- name: Setup Conda Environment on Windows
if: runner.os == 'Windows'
run: |
conda create --name enso
conda init powershell
- name: Activate Conda Environment on Windows
if: runner.os == 'Windows'
run: conda activate enso
- name: Install FlatBuffers Compiler
run: conda install --freeze-installed flatbuffers=1.12.0
- name: Setup GraalVM Environment
uses: DeLaGuardo/setup-graalvm@2.0
with:
graalvm-version: ${{ env.graalVersion }}.${{ env.javaVersion }}
- name: Set Up SBT
run: |
curl --retry 4 --retry-connrefused -fsSL -o sbt.tgz https://piccolo.link/sbt-${{env.sbtVersion}}.tgz
2020-05-15 11:07:58 +03:00
tar -xzf sbt.tgz
echo ::add-path::$GITHUB_WORKSPACE/sbt/bin/
2020-04-10 22:24:37 +03:00
2020-05-15 11:07:58 +03:00
# Caches
- name: Cache Ivy
uses: actions/cache@v1.1.2
with:
path: ~/.ivy2/cache
key: ${{ runner.os }}-ivy-${{ hashFiles('**/build.sbt') }}
restore-keys: ${{ runner.os }}-ivy-
- name: Cache SBT
uses: actions/cache@v1.1.2
with:
path: ~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('project/**') }}
restore-keys: ${{ runner.os }}-sbt-
- name: Cache Coursier and Mill
uses: actions/cache@v1.1.2
with:
path: ~/.cache
key: ${{ runner.os }}-coursier-${{ hashFiles('**build.sbt') }}
restore-keys: ${{ runner.os }}-coursier-
2020-05-15 11:07:58 +03:00
# Build
- name: Build Enso
run: sbt --no-colors compile
2020-04-10 22:24:37 +03:00
2020-05-15 11:07:58 +03:00
# Tests
- name: Test Enso
run: sbt --no-colors test
- name: Benchmark the Parser
run: sbt -no-colors syntax/bench
- name: Check Runtime Benchmark Compilation
run: sbt -no-colors runtime/Benchmark/compile
- name: Build the Uberjar
run: sbt -no-colors runner/assembly
- name: Test the Uberjar
run: ./enso.jar --run tools/ci/Test.enso
2020-04-10 22:24:37 +03:00
# This job is responsible for building the artifacts
2020-04-10 22:24:37 +03:00
build:
2020-03-24 22:35:42 +03:00
name: Build
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
2020-05-15 11:07:58 +03:00
- name: Checkout (PR)
uses: actions/checkout@v2
if: github.event_name == 'pull_request'
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Checkout (Branch)
uses: actions/checkout@v2
if: github.event_name != 'pull_request'
- name: Setup conda
uses: s-weigand/setup-conda@v1
with:
update-conda: true
conda-channels: anaconda, conda-forge
- name: Install FlatBuffers Compiler
run: conda install flatbuffers=1.12.0
- name: Setup GraalVM Environment
uses: DeLaGuardo/setup-graalvm@2.0
with:
graalvm-version: ${{ env.graalVersion }}.${{ env.javaVersion }}
- name: Set Up SBT
run: |
curl -fSL -o sbt.tgz https://piccolo.link/sbt-${{env.sbtVersion}}.tgz
tar -xzf sbt.tgz
echo ::add-path::$GITHUB_WORKSPACE/sbt/bin/
2020-05-15 11:07:58 +03:00
# Caches
- name: Cache Ivy
uses: actions/cache@v1.1.2
with:
path: ~/.ivy2/cache
key: ${{ runner.os }}-ivy-${{ hashFiles('**/build.sbt') }}
restore-keys: ${{ runner.os }}-ivy-
- name: Cache SBT
uses: actions/cache@v1.1.2
with:
path: ~/.sbt
key: ${{ runner.os }}-sbt-${{ hashFiles('project/**') }}
restore-keys: ${{ runner.os }}-sbt-
- name: Cache Coursier and Mill
uses: actions/cache@v1.1.2
with:
path: ~/.cache
key: ${{ runner.os }}-coursier-${{ hashFiles('**build.sbt') }}
restore-keys: ${{ runner.os }}-coursier-
2020-04-10 22:24:37 +03:00
2020-05-15 11:07:58 +03:00
# Build Artifacts
- name: Build the Uberjar
run: sbt --no-colors runner/assembly
- name: Include CLI in Distribution
2020-05-15 11:07:58 +03:00
run: |
DIST_DIR=enso-$(./enso.jar --version --json | jq -r '.version')
mkdir $DIST_DIR
mkdir $DIST_DIR/component
mv enso.jar $DIST_DIR/component
cp -r distribution/std-lib $DIST_DIR/std-lib
cp -r distribution/bin $DIST_DIR/bin
chmod +x $DIST_DIR/bin/enso
chmod +x $DIST_DIR/bin/project-manager
echo ::set-env name=DIST_DIR::$DIST_DIR
2020-05-15 11:07:58 +03:00
- name: Build the Parser JS Bundle
run: sbt -no-colors syntaxJS/fullOptJS
2020-05-15 14:05:44 +03:00
- name: Build the Project Manager Uberjar
run: |
sbt --no-colors runtime/assembly
sbt --no-colors project-manager/assembly
- name: Include Project Manager in Distribution
run: |
DIST_DIR=${{ env.DIST_DIR }}
mv ./runtime.jar $DIST_DIR/component
mv ./project-manager.jar $DIST_DIR/component
2020-05-15 11:07:58 +03:00
# Publish
- name: Publish the Distribution Artifact
2020-05-15 11:07:58 +03:00
uses: actions/upload-artifact@v1.0.0
with:
name: ${{ env.DIST_DIR }}
path: ${{ env.DIST_DIR }}
2020-05-15 11:07:58 +03:00
- name: Prepare the FlatBuffers Schemas for Upload
run: |
mkdir fbs-upload
cp -r "engine/language-server/src/main/schema" fbs-upload/fbs-schema/
zip -r -m -ll "fbs-upload/fbs-schema.zip" "fbs-upload/fbs-schema/"
- name: Publish the FlatBuffers Schemas
uses: actions/upload-artifact@v1.0.0
with:
name: Engine Protocol FlatBuffers Schemas
path: ./fbs-upload/fbs-schema.zip
- name: Prepare Parser JS Bundle for Upload
run: |
mkdir parser-upload
cp ./target/scala-parser.js parser-upload
- name: Publish the Parser JS Bundle
uses: actions/upload-artifact@v1.0.0
with:
name: Parser JS Bundle
path: ./target/scala-parser.js
- name: Prepare AWS Session
run: |
aws configure --profile s3-upload <<-EOF > /dev/null 2>&1
${{ secrets.PARSER_S3_ACCESS_KEY_ID }}
${{ secrets.PARSER_S3_SECRET_ACCESS_KEY }}
us-west-2
text
EOF
- name: Upload Parser JS Bundle to S3
run: |
aws s3 sync ./parser-upload s3://packages-luna/parser-js/nightly/`git rev-parse HEAD` --profile s3-upload --acl public-read --delete
- name: Upload FlatBuffers Schemas to S3
run: |
aws s3 sync ./fbs-upload s3://packages-luna/fbs-schema/nightly/`git rev-parse HEAD` --profile s3-upload --acl public-read --delete
- name: Upload Distribution to S3
2020-05-15 14:05:44 +03:00
run: |
aws s3 sync ${{ env.DIST_DIR }} s3://packages-luna/project-manager/nightly/`git rev-parse HEAD` --profile s3-upload --acl public-read --delete
2020-05-15 11:07:58 +03:00
- name: Teardown AWS Session
run: |
aws configure --profile s3-upload <<-EOF > /dev/null 2>&1
null
null
null
text
EOF