mirror of
https://github.com/haskell/ghcide.git
synced 2024-12-15 04:43:41 +03:00
ed6cf474d3
* Use a separate finder cache for each typecheck call On a large DAML project, we occasionally saw error about missing modules during typechecking during concurrent compilations. This was caused by the fact that we modified the IORef in the HscEnv which is shared between concurrent compilations.
200 lines
8.7 KiB
YAML
200 lines
8.7 KiB
YAML
# Build master commits
|
|
trigger:
|
|
batch: false
|
|
branches:
|
|
include:
|
|
- master
|
|
|
|
# Enable PR triggers that target the master branch
|
|
pr:
|
|
autoCancel: true # cancel previous builds on push
|
|
branches:
|
|
include:
|
|
- master
|
|
|
|
jobs:
|
|
- job: ghcide_stack_86
|
|
timeoutInMinutes: 60
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
steps:
|
|
- checkout: self
|
|
- task: CacheBeta@0
|
|
inputs:
|
|
key: stack-cache-v1 | $(Agent.OS) | $(Build.SourcesDirectory)/stack.yaml | $(Build.SourcesDirectory)/ghcide.cabal
|
|
path: .azure-cache
|
|
cacheHitVar: CACHE_RESTORED
|
|
displayName: "Cache stack artifacts"
|
|
- bash: |
|
|
mkdir -p ~/.stack
|
|
tar xzf .azure-cache/stack-root.tar.gz -C $HOME
|
|
displayName: "Unpack cache"
|
|
condition: eq(variables.CACHE_RESTORED, 'true')
|
|
- bash: |
|
|
./fmt.sh
|
|
displayName: "HLint via ./fmt.sh"
|
|
- bash: |
|
|
sudo apt-get install -y g++ gcc libc6-dev libffi-dev libgmp-dev make zlib1g-dev
|
|
if ! which stack >/dev/null 2>&1; then
|
|
curl -sSL https://get.haskellstack.org/ | sh
|
|
fi
|
|
displayName: 'Install Stack'
|
|
- bash: stack setup
|
|
displayName: 'stack setup'
|
|
- bash: stack build --only-dependencies
|
|
displayName: 'stack build --only-dependencies'
|
|
- bash: stack test --ghc-options=-Werror || stack test --ghc-options=-Werror || stack test --ghc-options=-Werror
|
|
# ghcide stack tests are flaky, see https://github.com/digital-asset/daml/issues/2606.
|
|
displayName: 'stack test --ghc-options=-Werror'
|
|
- bash: |
|
|
mkdir -p .azure-cache
|
|
tar czf .azure-cache/stack-root.tar.gz -C $HOME .stack
|
|
displayName: "Pack cache"
|
|
- bash: |
|
|
set -euo pipefail
|
|
MESSAGE=$(git log --pretty=format:%s -n1)
|
|
curl -XPOST \
|
|
-i \
|
|
-H 'Content-type: application/json' \
|
|
--data "{\"text\":\"<!here> *FAILED* $(Agent.JobName): <https://dev.azure.com/digitalasset/ghcide/_build/results?buildId=$(Build.BuildId)|$MESSAGE>\n\"}" \
|
|
$(Slack.URL)
|
|
condition: and(failed(), eq(variables['Build.SourceBranchName'], 'master'))
|
|
- job: ghcide_stack_84
|
|
timeoutInMinutes: 60
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
steps:
|
|
- checkout: self
|
|
- task: CacheBeta@0
|
|
inputs:
|
|
key: stack-cache-v1 | $(Agent.OS) | $(Build.SourcesDirectory)/stack84.yaml | $(Build.SourcesDirectory)/ghcide.cabal
|
|
path: .azure-cache
|
|
cacheHitVar: CACHE_RESTORED
|
|
displayName: "Cache stack artifacts"
|
|
- bash: |
|
|
mkdir -p ~/.stack
|
|
tar xzf .azure-cache/stack-root.tar.gz -C $HOME
|
|
displayName: "Unpack cache"
|
|
condition: eq(variables.CACHE_RESTORED, 'true')
|
|
- bash: |
|
|
./fmt.sh
|
|
displayName: "HLint via ./fmt.sh"
|
|
- bash: |
|
|
sudo apt-get install -y g++ gcc libc6-dev libffi-dev libgmp-dev make zlib1g-dev
|
|
if ! which stack >/dev/null 2>&1; then
|
|
curl -sSL https://get.haskellstack.org/ | sh
|
|
fi
|
|
displayName: 'Install Stack'
|
|
- bash: stack setup --stack-yaml=stack84.yaml
|
|
displayName: 'stack setup --stack-yaml=stack84.yaml'
|
|
- bash: stack build --only-dependencies --stack-yaml=stack84.yaml
|
|
displayName: 'stack build --only-dependencies --stack-yaml=stack84.yaml'
|
|
- bash: stack test --stack-yaml=stack84.yaml --ghc-options=-Werror || stack test --stack-yaml=stack84.yaml --ghc-options=-Werror || stack test --stack-yaml=stack84.yaml --ghc-options=-Werror
|
|
# ghcide stack tests are flaky, see https://github.com/digital-asset/daml/issues/2606.
|
|
displayName: 'stack test --stack-yaml=stack84.yaml --ghc-options=-Werror'
|
|
- bash: |
|
|
mkdir -p .azure-cache
|
|
tar czf .azure-cache/stack-root.tar.gz -C $HOME .stack
|
|
displayName: "Pack cache"
|
|
- bash: |
|
|
set -euo pipefail
|
|
MESSAGE=$(git log --pretty=format:%s -n1)
|
|
curl -XPOST \
|
|
-i \
|
|
-H 'Content-type: application/json' \
|
|
--data "{\"text\":\"<!here> *FAILED* $(Agent.JobName): <https://dev.azure.com/digitalasset/ghcide/_build/results?buildId=$(Build.BuildId)|$MESSAGE>\n\"}" \
|
|
$(Slack.URL)
|
|
condition: and(failed(), eq(variables['Build.SourceBranchName'], 'master'))
|
|
- job: ghcide_stack_88
|
|
timeoutInMinutes: 60
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
steps:
|
|
- checkout: self
|
|
- task: CacheBeta@0
|
|
inputs:
|
|
key: stack-cache-v1 | $(Agent.OS) | $(Build.SourcesDirectory)/stack88.yaml | $(Build.SourcesDirectory)/ghcide.cabal
|
|
path: .azure-cache
|
|
cacheHitVar: CACHE_RESTORED
|
|
displayName: "Cache stack artifacts"
|
|
- bash: |
|
|
mkdir -p ~/.stack
|
|
tar xzf .azure-cache/stack-root.tar.gz -C $HOME
|
|
displayName: "Unpack cache"
|
|
condition: eq(variables.CACHE_RESTORED, 'true')
|
|
- bash: |
|
|
./fmt.sh
|
|
displayName: "HLint via ./fmt.sh"
|
|
- bash: |
|
|
sudo apt-get install -y g++ gcc libc6-dev libffi-dev libgmp-dev make zlib1g-dev
|
|
if ! which stack >/dev/null 2>&1; then
|
|
curl -sSL https://get.haskellstack.org/ | sh
|
|
fi
|
|
displayName: 'Install Stack'
|
|
- bash: stack setup --stack-yaml=stack88.yaml
|
|
displayName: 'stack setup --stack-yaml=stack88.yaml'
|
|
- bash: stack build --only-dependencies --stack-yaml=stack88.yaml
|
|
displayName: 'stack build --only-dependencies --stack-yaml=stack88.yaml'
|
|
- bash: stack test --stack-yaml=stack88.yaml --ghc-options=-Werror || stack test --stack-yaml=stack88.yaml --ghc-options=-Werror || stack test --stack-yaml=stack88.yaml --ghc-options=-Werror
|
|
# ghcide stack tests are flaky, see https://github.com/digital-asset/daml/issues/2606.
|
|
displayName: 'stack test --stack-yaml=stack88.yaml --ghc-options=-Werror'
|
|
- bash: |
|
|
mkdir -p .azure-cache
|
|
tar czf .azure-cache/stack-root.tar.gz -C $HOME .stack
|
|
displayName: "Pack cache"
|
|
- bash: |
|
|
set -euo pipefail
|
|
MESSAGE=$(git log --pretty=format:%s -n1)
|
|
curl -XPOST \
|
|
-i \
|
|
-H 'Content-type: application/json' \
|
|
--data "{\"text\":\"<!here> *FAILED* $(Agent.JobName): <https://dev.azure.com/digitalasset/ghcide/_build/results?buildId=$(Build.BuildId)|$MESSAGE>\n\"}" \
|
|
$(Slack.URL)
|
|
condition: and(failed(), eq(variables['Build.SourceBranchName'], 'master'))
|
|
- job: ghcide_stack_ghc_lib_88
|
|
timeoutInMinutes: 60
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
steps:
|
|
- checkout: self
|
|
- task: CacheBeta@0
|
|
inputs:
|
|
key: stack-cache-v1 | $(Agent.OS) | $(Build.SourcesDirectory)/stack-ghc-lib.yaml | $(Build.SourcesDirectory)/ghcide.cabal
|
|
path: .azure-cache
|
|
cacheHitVar: CACHE_RESTORED
|
|
displayName: "Cache stack artifacts"
|
|
- bash: |
|
|
mkdir -p ~/.stack
|
|
tar xzf .azure-cache/stack-root.tar.gz -C $HOME
|
|
displayName: "Unpack cache"
|
|
condition: eq(variables.CACHE_RESTORED, 'true')
|
|
- bash: |
|
|
./fmt.sh
|
|
displayName: "HLint via ./fmt.sh"
|
|
- bash: |
|
|
sudo apt-get install -y g++ gcc libc6-dev libffi-dev libgmp-dev make zlib1g-dev
|
|
if ! which stack >/dev/null 2>&1; then
|
|
curl -sSL https://get.haskellstack.org/ | sh
|
|
fi
|
|
displayName: 'Install Stack'
|
|
- bash: stack setup --stack-yaml=stack-ghc-lib.yaml
|
|
displayName: 'stack setup --stack-yaml=stack-ghc-lib.yaml'
|
|
- bash: stack build --only-dependencies --stack-yaml=stack-ghc-lib.yaml
|
|
displayName: 'stack build --only-dependencies --stack-yaml=stack-ghc-lib.yaml'
|
|
- bash: stack test --stack-yaml=stack-ghc-lib.yaml --ghc-options=-Werror || stack test --stack-yaml=stack-ghc-lib.yaml --ghc-options=-Werror || stack test --stack-yaml=stack-ghc-lib.yaml --ghc-options=-Werror
|
|
# ghcide stack tests are flaky, see https://github.com/digital-asset/daml/issues/2606.
|
|
displayName: 'stack test --stack-yaml=stack-ghc-lib.yaml --ghc-options=-Werror'
|
|
- bash: |
|
|
mkdir -p .azure-cache
|
|
tar czf .azure-cache/stack-root.tar.gz -C $HOME .stack
|
|
displayName: "Pack cache"
|
|
- bash: |
|
|
set -euo pipefail
|
|
MESSAGE=$(git log --pretty=format:%s -n1)
|
|
curl -XPOST \
|
|
-i \
|
|
-H 'Content-type: application/json' \
|
|
--data "{\"text\":\"<!here> *FAILED* $(Agent.JobName): <https://dev.azure.com/digitalasset/ghcide/_build/results?buildId=$(Build.BuildId)|$MESSAGE>\n\"}" \
|
|
$(Slack.URL)
|
|
condition: and(failed(), eq(variables['Build.SourceBranchName'], 'master'))
|