Merge branch 'hash-zip-before-unpack' of gitlab.com:domaindrivenarchitecture/c4k-website into hash-zip-before-unpack
This commit is contained in:
commit
8220178ea2
6 changed files with 107 additions and 0 deletions
|
@ -1,8 +1,13 @@
|
||||||
FROM c4k-website-build
|
FROM c4k-website-build
|
||||||
|
|
||||||
|
# Prepare Entrypoint Script
|
||||||
|
ADD resources /tmp
|
||||||
|
|
||||||
|
RUN /tmp/install.sh
|
||||||
RUN apt update
|
RUN apt update
|
||||||
RUN apt -yqq --no-install-recommends --yes install curl default-jre-headless
|
RUN apt -yqq --no-install-recommends --yes install curl default-jre-headless
|
||||||
|
|
||||||
|
|
||||||
RUN curl -L -o /tmp/serverspec.jar \
|
RUN curl -L -o /tmp/serverspec.jar \
|
||||||
https://github.com/DomainDrivenArchitecture/dda-serverspec-crate/releases/download/2.0.0/dda-serverspec-standalone.jar
|
https://github.com/DomainDrivenArchitecture/dda-serverspec-crate/releases/download/2.0.0/dda-serverspec-standalone.jar
|
||||||
|
|
||||||
|
|
36
infrastructure/c4k-website-build/test/resources/entrypoint.sh
Executable file
36
infrastructure/c4k-website-build/test/resources/entrypoint.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
mkdir $BUILDDIR
|
||||||
|
mkdir $SOURCEDIR
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
source /usr/local/bin/functions.sh
|
||||||
|
|
||||||
|
filename="website.zip"
|
||||||
|
hashfilename="hashfile"
|
||||||
|
|
||||||
|
echo "Check for new content"
|
||||||
|
touch $HASHFILEDIR/$hashfilename
|
||||||
|
currentHash=$( cat $HASHFILEDIR/$hashfilename )
|
||||||
|
newHash=$( get-hash-data )
|
||||||
|
|
||||||
|
if [[ $currentHash == $newHash ]]
|
||||||
|
then
|
||||||
|
echo "Nothing to do"
|
||||||
|
else
|
||||||
|
write-hash-data $currentHash $hashfilename
|
||||||
|
echo "Downloading website data"
|
||||||
|
get-website-data $filename
|
||||||
|
unzip-website-data $filename
|
||||||
|
echo "Executing Custom Scripts, if applicable"
|
||||||
|
execute-scripts-when-existing
|
||||||
|
echo "Building website"
|
||||||
|
build-website
|
||||||
|
echo "Moving files"
|
||||||
|
move-website-files-to-target
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
.git
|
||||||
|
.gitignore
|
45
infrastructure/c4k-website-build/test/resources/functions.sh
Normal file
45
infrastructure/c4k-website-build/test/resources/functions.sh
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function get-website-data() {
|
||||||
|
curl -H "Authorization: token $AUTHTOKEN" -o $SOURCEDIR/$1 $GITREPOURL
|
||||||
|
}
|
||||||
|
|
||||||
|
function get-hash-data() {
|
||||||
|
curl -s -H "Authorization: token $AUTHTOKEN" $GITCOMMITURL | jq '.sha'
|
||||||
|
}
|
||||||
|
|
||||||
|
function write-hash-data() {
|
||||||
|
echo $1 > $HASHFILEDIR/$2
|
||||||
|
}
|
||||||
|
|
||||||
|
function unzip-website-data() {
|
||||||
|
unzip $SOURCEDIR/$1 -d $BUILDDIR
|
||||||
|
}
|
||||||
|
|
||||||
|
function execute-scripts-when-existing() {
|
||||||
|
websitedir=$(ls $BUILDDIR)
|
||||||
|
if [[ -f $BUILDDIR/$websitedir/$SCRIPTFILE ]]
|
||||||
|
then
|
||||||
|
checksum="$(sha256sum $BUILDDIR/$websitedir/$SCRIPTFILE | grep -oE "^[a-z0-9]+")"
|
||||||
|
if [[ "$SHA256SUM" == "$checksum" ]]
|
||||||
|
then
|
||||||
|
chmod +x $BUILDDIR/$websitedir/$SCRIPTFILE
|
||||||
|
(cd $BUILDDIR; dir=$(ls); cd $dir; ./$SCRIPTFILE) #make sure paths defined in scriptfile are relative to $dir
|
||||||
|
else
|
||||||
|
printf "Provided SHA256 Sum does not match calculated sum. Exiting."
|
||||||
|
printf "Calculated SHA256: $checksum"
|
||||||
|
printf "Given SHA256: $SHA256SUM"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "No script file provided."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function build-website() {
|
||||||
|
(cd $BUILDDIR; dir=$(ls); cd $dir; lein run;)
|
||||||
|
}
|
||||||
|
|
||||||
|
function move-website-files-to-target() {
|
||||||
|
(cd $BUILDDIR; dir=$(ls); cd $dir; rsync -ru --exclude-from "/etc/exclude.pattern" --delete resources/public/* $WEBSITEROOT;)
|
||||||
|
}
|
8
infrastructure/c4k-website-build/test/resources/install.sh
Executable file
8
infrastructure/c4k-website-build/test/resources/install.sh
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
mkdir /etc/lein/
|
||||||
|
|
||||||
|
install -m 0700 /tmp/entrypoint.sh /
|
||||||
|
install -m 0700 /tmp/functions.sh /usr/local/bin/
|
||||||
|
install -m 0700 /tmp/exclude.pattern /etc/
|
||||||
|
install -m 0700 /tmp/project.clj /etc/lein/
|
11
infrastructure/c4k-website-build/test/resources/project.clj
Normal file
11
infrastructure/c4k-website-build/test/resources/project.clj
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
(defproject org.domaindrivenarchitecture/c4k-website-build "0.1.1-SNAPSHOT"
|
||||||
|
:description "website c4k-build package"
|
||||||
|
:url "https://domaindrivenarchitecture.org"
|
||||||
|
:license {:name "Apache License, Version 2.0"
|
||||||
|
:url "https://www.apache.org/licenses/LICENSE-2.0.html"}
|
||||||
|
:dependencies [[org.clojure/clojure "1.9.0"]
|
||||||
|
[dda/cryogen-bootstrap "0.1.5"]]
|
||||||
|
:plugins [[lein-ring "0.12.5"]]
|
||||||
|
:main cryogen.core
|
||||||
|
:ring {:init cryogen.server/init
|
||||||
|
:handler cryogen.server/handler})
|
Loading…
Reference in a new issue