【问题标题】: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 有一些疑问。)