用 GitHub Actions 如何测试 Haskell 包?

5

最近,由于配置简单且所有示例操作都成功了,我将我的Julia项目从Travis CI转移到了GitHub actions,并决定尝试使用相同的方法来处理我的Haskell项目。但是我发现没有一个Haskell操作示例能正常运行,其中大多数失败于安全性或gcc编译器标志错误,即使对于在Travis CI中有效的完全相同的命令。

是否有可用的Haskell GitHub Actions示例?我怀疑我只是没有找到最新的可工作示例。

1个回答

3

经过反复试验,我最终得到了大致如下的解决方案:test.yml,它非常完美地运行:

name: Tests

on:
  pull_request:
  push:
    branches: [hackage, develop]

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        ghc: ['8.8.3', '8.10.5']
        cabal: ['2.4.1.0', '3.0.0.0']
        os: [ubuntu-latest]
        resolver: [lts-3.22 , lts-17, lts-18, lts]
        exclude:
          # GHC 8.8+ only works with cabal v3+
          - ghc: 8.8.3
            cabal: 2.4.1.0
    name: ${{ matrix.resolver }} (${{ matrix.ghc }}/${{ matrix.cabal }})
    steps:

      - name: Check out
        uses: actions/checkout@v2

      - name: Setup Haskell
        uses: haskell/actions/setup@v1
        with:
          ghc-version: ${{ matrix.ghc }}
          cabal-version: ${{ matrix.cabal }}
          enable-stack: true

      - name: Versions
        run: |
          stack --version
          cabal --version
          ghc --version

      - name: Initalize stack for LTS
        run: |
          stack update
          stack init --resolver ${{ matrix.resolver }} --force

      - name: Build package dependencies
        run: |
          stack --resolver ${{ matrix.resolver }} build --no-run-tests --no-run-benchmarks --only-dependencies

      - name: Build package
        run: |
          stack --resolver ${{ matrix.resolver }} build --no-run-tests --no-run-benchmarks

      - name: Build testing dependencies
        run: |
          stack --resolver ${{ matrix.resolver }} build --no-run-tests --no-run-benchmarks --test --bench

      - name: Run tests
        run: |
          stack --resolver ${{ matrix.resolver }} build --test --no-run-benchmarks

      - name: Package list
        run: |
          stack --resolver ${{ matrix.resolver }} exec ghc-pkg list || true

(虽然我不确定构建步骤是否完全按照我打算的顺序进行,并且对于缓存应该放在哪里也有些疑问。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接