diff options
author | Richard Maw <richard.maw@gmail.com> | 2014-10-22 19:13:20 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2014-10-24 14:26:05 +0000 |
commit | 8b37ecabaa5cb30c55f6ea2492d1e0ac3f612748 (patch) | |
tree | ab7ca4cfe596c2ac245a7599a21289db6147e21a | |
parent | 7e027adeb6b40c02c04c78c5a6957c7d79bba75c (diff) | |
download | morph-8b37ecabaa5cb30c55f6ea2492d1e0ac3f612748.tar.gz |
yarns: Add yarns for system-integrations
These were previously completely untested, so their unsafe mounting
wasn't noticed, but now both are fixed.
-rw-r--r-- | yarns/building.yarn | 30 | ||||
-rw-r--r-- | yarns/implementations.yarn | 8 |
2 files changed, 38 insertions, 0 deletions
diff --git a/yarns/building.yarn b/yarns/building.yarn index 52742ac8..253b3b3c 100644 --- a/yarns/building.yarn +++ b/yarns/building.yarn @@ -9,6 +9,36 @@ Morph Building Tests THEN morph build the system systems/base-system.morph of the branch master FINALLY the git server is shut down +System integrations +------------------- + +`system-integration` is a field in chunk morphologies that allows you to +have some scripts run at system artifact construction time, because some +things need to be done after every chunk is built, such as `ldconfig`, +so every library path in `/etc/ld.so.conf` can be found, and it can look +up libraries more quickly. + + SCENARIO using system integrations + GIVEN a workspace + AND a git server + WHEN the user checks out the system branch called master + AND the user attempts to build the system systems/test-system.morph in branch master + THEN morph succeeded + +In our example, we have a system integration that creates /etc/passwd, +so when we deploy the system, we can check whether it exists. + + GIVEN a cluster called test-cluster.morph in system branch master + AND a system in cluster test-cluster.morph in branch master called test-system + AND system test-system in cluster test-cluster.morph in branch master builds systems/test-system.morph + AND system test-system in cluster test-cluster.morph in branch master has deployment type: tar + WHEN the user attempts to deploy the cluster test-cluster.morph in branch master with options test-system.location="$DATADIR/test.tar" + THEN morph succeeded + AND tarball test.tar contains etc/passwd + +Distbuilding +------------ + SCENARIO distbuilding ASSUMING the morph-cache-server can be run GIVEN a workspace diff --git a/yarns/implementations.yarn b/yarns/implementations.yarn index c6d245d0..6110148e 100644 --- a/yarns/implementations.yarn +++ b/yarns/implementations.yarn @@ -300,6 +300,14 @@ another to hold a chunk. install-commands: - copy files + system-integration: + test-chunk-bins: + 00-passwd: + - | + create file /etc/passwd + root:x:0:0:Super user:/root:/bin/sh + daemon:x:1:1:daemon:/usr/sbin:/bin/sh + nobody:x:65534:65534:nobody:/nonexistent:/bin/false EOF install -m644 -D /dev/stdin << 'EOF' "stage2-chunk.morph" |