Haskellパイプラインの例

Updated 2 years ago by Admin

このガイドでは、Haskellプロジェクトの継続的インテグレーションパイプラインの構成について説明します。Droneを初めて使用する場合は、最初にチュートリアルとビルド構成ガイドをお読みください。


ビルドとテスト

cabalコマンドを実行するパイプラインを示しています。これらのコマンドは、実行時にDockerHubからダウンロードされたHaskell Dockerコンテナ内で実行されます。

kind: pipeline
type: kubernetes
name: default

steps:
- name: test
image: haskell
commands:
- cabal install --only-dependencies --enable-tests
- cabal configure --enable-tests
- cabal build
- cabal test

パイプラインでは、任意のDockerレジストリから任意のDockerイメージを使用できることに注意してください。 Haskellの公式画像を使用することも、自分の画像を持参することもできます。


複数のバージョンをテストする

Droneのマルチパイプライン機能を使用して、Haskellの複数のバージョンに対して同時にテストすることができます。これは、他の継続的インテグレーションシステムに見られるマトリックス機能と同等です。

---
kind: pipeline
type: kubernetes
name: haskell8

steps:
- name: test
image: haskell:8
commands:
- cabal install --only-dependencies --enable-tests
- cabal configure --enable-tests
- cabal build
- cabal test

---
kind: pipeline
type: kubernetes
name: haskell7

steps:
- name: test
image: haskell:7
commands:
- cabal install --only-dependencies --enable-tests
- cabal configure --enable-tests
- cabal build
- cabal test

...

この構文が冗長すぎる場合は、jsonnetを使用することをお勧めします。 jsonnetに慣れていない場合は、ガイドをお読みください。

local Pipeline(version) = {
kind: "pipeline",
type: "kubernetes",
name: "haskell"+version,
steps: [
{
name: "test",
image: "haskell:"+version,
commands: [
"cabal install --only-dependencies --enable-tests",
"cabal configure --enable-tests",
"cabal build",
"cabal test"
]
}
]
};

[
Pipeline("7"),
Pipeline("8"),
]


How did we do?