CI #5308
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
name: CI | |
on: | |
push: | |
branches: | |
- main | |
- release | |
pull_request: { } | |
create: { tags: [v*] } | |
schedule: | |
# Additionally run once per week (At 00:00 on Sunday) to avoid loosing cache | |
# (GH deletes it after 7 days of not using it). | |
- cron: '0 0 * * 0' | |
env: | |
WASP_TELEMETRY_DISABLE: 1 | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
cancel: | |
name: Cancel redundant actions already in progress | |
runs-on: ubuntu-latest | |
steps: | |
- name: Cancel actions in progress of same workflow and same branch | |
uses: styfle/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
build: | |
name: Build Wasp | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
ghc: | |
- "8.10.7" | |
cabal: | |
- "3.6.2.0" | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
steps: | |
- name: Configure git | |
working-directory: ~ | |
# For waspc parser tests, we need to make sure git doesn't convert line | |
# endings to CRLF during checkout on Windows because that would cause | |
# the test cases to fail. | |
run: | | |
git config --global core.autocrlf input | |
git config --global core.eol lf | |
- name: Checkout the repo | |
uses: actions/checkout@v2 | |
- name: Set up Haskell | |
id: setup-haskell-cabal | |
uses: haskell/actions/setup@v1 | |
with: | |
ghc-version: ${{ matrix.ghc }} | |
cabal-version: ${{ matrix.cabal }} | |
- name: Verify Haskell setup | |
run: | | |
ghc --version | |
cabal --version | |
- name: Set up Node | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '16' | |
- name: Cache | |
uses: actions/cache@v2 | |
with: | |
path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} | |
# TODO: Right now, actions/cache updates cache only if cache was not fetched. | |
# This is not ideal for us, because we would ideally update cache even if it | |
# was fetched, because we want to cache any newly installed packages. | |
# This was working normally on Travis and Appveyor. | |
# There is an issue for this, and for now we are using proposed "fix" from it, | |
# https://github.com/actions/cache/issues/342#issuecomment-673371329, | |
# which mitigates the problem by creating new cache for each job and then using | |
# the feature of restore-keys which makes sure that next cache picked is the | |
# latest one. However, this keeps creating new cache each time which is not | |
# ideal because caches keep getting evicted, so for example if Win job | |
# fails multiple times while others don't, its cache will likely get evicted, | |
# making it even slower to test and fix (uffff). | |
# When they fix this, we should remove ${{ github.run_id }} from the end of the key. | |
key: wasp-build-${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('waspc/waspc.cabal') }}-${{ hashFiles('waspls/waspls.cabal') }}-${{ hashFiles('cabal.project') }}-${{ github.run_id }} | |
restore-keys: wasp-build-${{ runner.os }}-${{ matrix.ghc }}- | |
- name: "Check Haskell code formatting" | |
if: matrix.os == 'ubuntu-latest' | |
uses: mrkkrp/ormolu-action@v5 # ormolu 4.0.0. | |
- name: "[waspc] Build external dependencies" | |
working-directory: waspc | |
run: cabal build --enable-tests --enable-benchmarks --only-dependencies | |
- name: "[waspc] Build our code" | |
working-directory: waspc | |
run: cabal build all | |
- name: "[waspc] Run tests" | |
working-directory: waspc | |
run: cabal test | |
- name: "[waspls] Build external dependencies" | |
working-directory: waspls | |
run: cabal build --enable-tests --enable-benchmarks --only-dependencies | |
- name: "[waspls] Build our code" | |
working-directory: waspls | |
run: cabal build all | |
- name: "[waspls] Run tests" | |
working-directory: waspls | |
run: cabal test | |
- name: Create binary packages (Unix) | |
if: startsWith(github.ref, 'refs/tags/v') && (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest') | |
run: | | |
OS_NAME=`case "${{ runner.os }}" in Linux) echo "linux";; macOS) echo "macos";; *) exit 1;; esac` | |
mkdir artifacts | |
./waspc/tools/make_binary_package.sh "artifacts/wasp-$OS_NAME-x86_64.tar.gz" | |
./waspls/tools/make_binary_package.sh "artifacts/waspls-$OS_NAME-x86_64.tar.gz" | |
- name: Create Github release | |
uses: ncipollo/release-action@v1 | |
if: startsWith(github.ref, 'refs/tags/v') && (matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest') | |
with: | |
draft: true | |
allowUpdates: true | |
artifacts: "waspc/artifacts/*" | |
artifactErrorsFailBuild: true | |
replacesArtifacts: true | |
token: ${{ secrets.GITHUB_TOKEN }} |