【问题标题】:GitHub actions for testing Haskell package?用于测试 Haskell 包的 GitHub 操作?
【发布时间】:2021-07-17 01:07:02
【问题描述】:

最近我被 Travis CI 吸引到我的 Julia 项目的 GitHub 操作,原因是易于配置和开箱即用的成功与所有我找到的示例操作,并认为我' d 尝试与我的Haskell project 相同。但是 没有 我发现的示例 Haskell Actions 有任何功能,大多数都因安全或 gcc 编译器标志错误而失败,即使对于在 Travis CI 中工作的完全相同的命令也是如此。

是否有运行 Haskell GitHub Actions 的示例?我怀疑我只是没有在正确的地方寻找最新的工作示例。

【问题讨论】:

    标签: haskell github-actions


    【解决方案1】:

    最终,经过多次尝试和错误,我最终得到了roughly this,它完美运行:

    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
    

    (虽然我不确定构建步骤的顺序是否完全正确for what I intend,并且对where caching should go 有一些疑问。)

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 2020-10-26
      • 2021-05-01
      • 2021-05-16
      • 2020-10-11
      • 2020-09-07
      • 1970-01-01
      • 2021-06-26
      相关资源
      最近更新 更多