propellor spin

This commit is contained in:
Joey Hess 2014-05-21 12:58:53 -04:00
parent eeb2d688bd
commit 7ac991635c
Failed to extract signature
2 changed files with 16 additions and 26 deletions

View File

@ -94,8 +94,8 @@ hosts = -- (o) `
& Docker.configured
& Docker.docked hosts "amd64-git-annex-builder"
& Docker.docked hosts "i386-git-annex-builder"
& Docker.docked hosts "armel-git-annex-builder-companion"
& Docker.docked hosts "armel-git-annex-builder"
! Docker.docked hosts "armel-git-annex-builder-companion"
! Docker.docked hosts "armel-git-annex-builder"
& Docker.garbageCollected `period` Daily
& Apt.buildDep ["git-annex"] `period` Daily
@ -199,7 +199,7 @@ hosts = -- (o) `
& Apt.stdSourcesList Unstable
& Apt.unattendedUpgrades
-- This volume is shared with the armel builder.
& Docker.volume GitAnnexBuilder.homedir
& Docker.volume GitAnnexBuilder.gitbuilderdir
-- Install current versions of build deps from cabal.
& GitAnnexBuilder.tree "armel"
& GitAnnexBuilder.buildDepsNoHaskellLibs
@ -208,8 +208,7 @@ hosts = -- (o) `
-- using $COMPANION_PORT_22_TCP_ADDR as the hostname,
& Docker.expose "22"
& Apt.serviceInstalledRunning "ssh"
-- ssh key is shared via the home directory volume
& GitAnnexBuilder.sshKeyGen
& Ssh.authorizedKeys GitAnnexBuilder.builduser
, Docker.container "armel-git-annex-builder"
(image $ System (Debian Unstable) "armel")
& Apt.stdSourcesList Unstable
@ -217,6 +216,7 @@ hosts = -- (o) `
& Apt.installed ["openssh-client"]
& Docker.link "armel-git-annex-builder-companion" "companion"
& Docker.volumes_from "armel-git-annex-builder-companion"
& Ssh.keyImported SshRsa GitAnnexBuilder.builduser
-- TODO: automate installing haskell libs
-- (Currently have to run
-- git-annex/standalone/linux/install-haskell-packages

View File

@ -53,15 +53,18 @@ builder' buildepsprop buildarch crontimes timeout rsyncupload = combinePropertie
tree :: Architecture -> Property
tree buildarch = combineProperties "gitannexbuilder tree"
[ User.accountFor builduser
-- Home directory already exists when docker volume is used.
, File.ownerGroup homedir builduser builduser
, Apt.installed ["git"]
, check (not <$> doesDirectoryExist gitbuilderdir) $ userScriptProperty builduser
[ "git clone git://git.kitenet.net/gitannexbuilder " ++ gitbuilderdir
, "cd " ++ gitbuilderdir
, "git checkout " ++ buildarch
]
`describe` "gitbuilder setup"
-- gitbuilderdir directory already exists when docker volume is used,
-- but with wrong owner.
, File.dirExists gitbuilderdir
, File.ownerGroup gitbuilderdir builduser builduser
, check (not <$> (doesDirectoryExist (gitbuilderdir </> ".git"))) $
userScriptProperty builduser
[ "git clone git://git.kitenet.net/gitannexbuilder " ++ gitbuilderdir
, "cd " ++ gitbuilderdir
, "git checkout " ++ buildarch
]
`describe` "gitbuilder setup"
, check (not <$> doesDirectoryExist builddir) $ userScriptProperty builduser
[ "git clone git://git-annex.branchable.com/ " ++ builddir
]
@ -90,16 +93,3 @@ cabalDeps = flagFile go cabalupdated
where
go = userScriptProperty builduser ["cabal update && cabal install git-annex --only-dependencies || true"]
cabalupdated = homedir </> ".cabal" </> "packages" </> "hackage.haskell.org" </> "00-index.cache"
-- Ensure a ssh key is set up, and allow it to be used to ssh in
sshKeyGen :: Property
sshKeyGen = combineProperties "sshkeygen"
[ flagFile gen privkey
, flagFile auth authkeys
]
where
gen = userScriptProperty builduser ["ssh-keygen -t RSA -N '' -f " ++ privkey]
auth = userScriptProperty builduser ["cp " ++ pubkey ++ " " ++ authkeys]
privkey = homedir </> ".ssh" </> "id_rsa"
pubkey = privkey ++ ".pub"
authkeys = homedir </> ".ssh" </> "authorized_keys"