updated build pipeline

This commit is contained in:
Jan Kieseler
2024-05-07 13:58:10 +02:00
parent 5acbe7ec66
commit a7c454648d
3 changed files with 85 additions and 52 deletions
+15 -3
View File
@@ -81,10 +81,22 @@ RUN apt-get install -y tk # for dawn
RUN python3 -m pip install jupyterlab jupyterhub==3.1.1 batchspawner
RUN ln -s /usr/bin/python3 /usr/bin/python
#finally the package
ARG INCUBATOR_VER
RUN python3 -m pip install torch-scatter -f https://data.pyg.org/whl/torch-2.1.0+cu118.html
#finally the package; use the commit hash to check out the correct version and only get them here, such that the rest can be cached
ARG BUILD_DATE
LABEL org.label-schema.build-date=$BUILD_DATE
ARG COMMIT
ARG USER
# copy minicalosim and checkout the correct commit
ADD minicalosim /root/minicalosim
RUN cd && cd minicalosim && mkdir -p build && cd build && cmake ../ && make -j4 &&\
RUN cd /root/minicalosim && git checkout $COMMIT && \
mkdir -p build && cd build && rm -rf * && cmake ../ && make -j4 &&\
cp minicalo* ../bind/G4Calo.py /usr/local/lib/python3.8/dist-packages/
# clean up
RUN rm -rf /root/minicalosim
+69
View File
@@ -0,0 +1,69 @@
#!/usr/bin/bash
# a simple parser for the args <commit> and --no-cache
# if no commit is given, the latest commit is used
# if --no-cache is given, the --no-cache flag is passed to the docker build command
# if only --no-cache is given, the latest commit is used
# check if commit is given as argument, if not use the latest commit
# check if an argument is given at all
if [ -n "$1" ]; then
#check if the first arg is --no-cache
if [ "$1" == "--no-cache" ]; then
FORCE_NO_CACHE="--no-cache"
COMMIT=$(git rev-parse --short HEAD)
else
COMMIT=$1
#check if this is a valid commit
if ! git cat-file -e $COMMIT^{commit} 2>/dev/null; then
echo "ERROR: Commit $COMMIT not found in local repository."
exit 1
fi
fi
else #default to last commit
COMMIT=$(git rev-parse --short HEAD)
fi
# COMMIT is a valid commit at this point. If COMMIT is the last commit and changes are not commited, the user is warned.
#check if the commit is the last commit
if [ "$COMMIT" == "$(git rev-parse --short HEAD)" ]; then
# check if we have uncommitted changes and if so warn the user.
if [ -n "$(git status --porcelain)" ]; then
echo "WARNING: You are building the latest commit ${COMMIT}, but you have uncommitted changes."
echo " This means that the image will not be reproducible."
echo " If you want to build the latest commit, please commit your changes first."
read -p "Do you want to continue anyway? [y/N] " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
fi
# check if the commit has been pushed
REMOTE_COMMIT=$(git ls-remote https://gitlab.etp.kit.edu/jkiesele/minicalosim.git | grep $COMMIT)
if [ -z "$REMOTE_COMMIT" ]; then
echo "ERROR: Commit $COMMIT not found in remote repository."
exit 1
fi
# check if no-cache is given as second argument
if [ "$2" == "--no-cache" ]; then
FORCE_NO_CACHE="--no-cache"
fi
#switch to directory this script is located in
cd "$(dirname "$0")"
cd ../../ #switch to the root directory of the project
echo "Building minicalosim:$COMMIT"
#print the current working directory
echo "Current working directory: $(pwd)"
docker build $FORCE_NO_CACHE -t jkiesele/minicalosim:$COMMIT --build-arg USER=$USER --build-arg BUILD_DATE="$(date)" --build-arg COMMIT=$COMMIT -f minicalosim/docker/Dockerfile .
echo "sucessfully built container jkiesele/minicalosim:${COMMIT}"