Skip to content

Commit

Permalink
adds building oci containers
Browse files Browse the repository at this point in the history
* Uses the haskell.nix container building infrastructure

* Is convoluted, containers are not directly built, only the manifest,
  or here a copy-to system

* Resulting tar is about 32 MByte, not tested yet
  • Loading branch information
choener committed Dec 23, 2024
1 parent b57e9ad commit e32e0f7
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 3 deletions.
48 changes: 48 additions & 0 deletions .github/workflows/ci-oci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# https://github.com/marketplace/actions/install-nix

# Builds oci container in a rather convoluted way.

name: "ci-oci"
on:
pull_request:
push:

concurrency:
group: ${{ github.ref }}
cancel-in-progress: true

jobs:
tests:
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v4

- name: Install nix
uses: cachix/install-nix-action@v27

# https://github.com/marketplace/actions/cache-nix-store
- name: Restore and cache Nix store
uses: nix-community/cache-nix-action@v5
with:
# restore and save a cache using this key
# TODO: Also hash the cabal.config and *cabal files, since we depend on them
primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix') }}
# if there's no cache hit, restore a cache by this prefix
restore-prefixes-first-match: nix-${{ runner.os }}-
# collect garbage until Nix store size (in bytes) is at most this number
# before trying to save a new cache
gc-max-store-size-linux: 1073741824
# do purge caches
purge: true
# purge all versions of the cache
purge-prefixes: cache-${{ runner.os }}-
# created more than this number of seconds ago relative to the start of the `Post Restore` phase
purge-created: 0
# except the version with the `primary-key`, if it exists
purge-primary-key: never

- run: nix build --accept-flake-config .#containers.x86_64-linux.wst.copyTo
- run: ./result/bin/copy-to oci-archive:oci.tar
- run: ls -alh oci.tar

18 changes: 18 additions & 0 deletions nix/containers.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{ repoRoot, inputs, pkgs, lib, system }:
{

# Builds a docker container for the cabal executable given as input. First we
# build the container json itself. Note the explicit architecture.
#
# $ nix build .#containers.x86_64-linux.wst
#
wst = lib.iogx.mkContainerFromCabalExe {
exe = inputs.self.packages.wst-poc;
name = "wst-poc";
description = "WST Proof of Concept";
packages = [ ];
sourceUrl = "https://github.com/input-output-hk/wsc-poc";
};

}

6 changes: 3 additions & 3 deletions nix/outputs.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{ repoRoot, inputs, pkgs, lib, system }:
let
project = repoRoot.nix.project;
containers = repoRoot.nix.containers;
in
[
(
project.flake
)
( project.flake )
{ inherit containers; }
]

0 comments on commit e32e0f7

Please sign in to comment.