github-actions-0.1.1.0: Github Actions
Copyright(c) 2025 Bellroy Pty Ltd
LicenseBSD-3-Clause
MaintainerBellroy Tech Team <haskell@bellroy.com>
Safe HaskellNone
LanguageHaskell2010

Language.Github.Actions.Job.Container

Description

This module provides the JobContainer type for configuring Docker containers that jobs run inside of in GitHub Actions workflows.

Job containers allow you to run job steps inside a Docker container with a specific environment, dependencies, and configuration. This provides consistency across different runner environments and enables the use of custom tooling.

For more information about GitHub Actions job containers, see: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer

Synopsis

Documentation

data JobContainer Source #

Container configuration for running a job inside a Docker container.

Job containers provide an isolated, consistent environment for job execution. This is useful for ensuring specific tool versions, operating system environments, or complex dependency setups.

Example usage:

import Language.Github.Actions.Job.Container
import qualified Data.Map as Map

-- Node.js development container
nodeContainer :: JobContainer
nodeContainer = JobContainer
 { image = Just "node:18"
 , env = Just $ Map.fromList [(NODE_ENV, "test")]
 , credentials = Nothing
 , options = Nothing
 , ports = Nothing
 , volumes = Nothing
 }

-- Database testing container with services
dbTestContainer :: JobContainer
dbTestContainer = JobContainer
 { image = Just "ubuntu:22.04"
 , env = Just $ Map.fromList [(DEBIAN_FRONTEND, "noninteractive")]
 , credentials = Nothing
 , options = Just "--network postgres"
 , ports = Just ["8080:8080"]
 , volumes = Just ["${{ github.workspace }}:/workspace"]
 }

For more details, see: https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer

Constructors

JobContainer 

Fields

Instances

Instances details
FromJSON JobContainer Source # 
Instance details

Defined in Language.Github.Actions.Job.Container

ToJSON JobContainer Source # 
Instance details

Defined in Language.Github.Actions.Job.Container

Generic JobContainer Source # 
Instance details

Defined in Language.Github.Actions.Job.Container

Associated Types

type Rep JobContainer 
Instance details

Defined in Language.Github.Actions.Job.Container

type Rep JobContainer = D1 ('MetaData "JobContainer" "Language.Github.Actions.Job.Container" "github-actions-0.1.1.0-BjHhRMO6iQ17qdsNXwhDab" 'False) (C1 ('MetaCons "JobContainer" 'PrefixI 'True) ((S1 ('MetaSel ('Just "credentials") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Map Text Text))) :*: (S1 ('MetaSel ('Just "env") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Map Text Text))) :*: S1 ('MetaSel ('Just "image") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))) :*: (S1 ('MetaSel ('Just "options") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "ports") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])) :*: S1 ('MetaSel ('Just "volumes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text]))))))
Show JobContainer Source # 
Instance details

Defined in Language.Github.Actions.Job.Container

Eq JobContainer Source # 
Instance details

Defined in Language.Github.Actions.Job.Container

Ord JobContainer Source # 
Instance details

Defined in Language.Github.Actions.Job.Container

type Rep JobContainer Source # 
Instance details

Defined in Language.Github.Actions.Job.Container

type Rep JobContainer = D1 ('MetaData "JobContainer" "Language.Github.Actions.Job.Container" "github-actions-0.1.1.0-BjHhRMO6iQ17qdsNXwhDab" 'False) (C1 ('MetaCons "JobContainer" 'PrefixI 'True) ((S1 ('MetaSel ('Just "credentials") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Map Text Text))) :*: (S1 ('MetaSel ('Just "env") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Map Text Text))) :*: S1 ('MetaSel ('Just "image") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))) :*: (S1 ('MetaSel ('Just "options") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "ports") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])) :*: S1 ('MetaSel ('Just "volumes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text]))))))