aboutsummaryrefslogtreecommitdiff
path: root/doc/docker-container.org
diff options
context:
space:
mode:
authorBonfaceKilz2020-09-22 04:31:05 +0300
committerBonfaceKilz2020-09-22 04:32:42 +0300
commit9f49e2dbdf4e06fcb39ed5146560937f228682a7 (patch)
treea65f7790df25a9f2c19b33158609dc976a9b5870 /doc/docker-container.org
parentf184e2b4762d1ec5608d600dcb87406679212e39 (diff)
downloadgenenetwork2-9f49e2dbdf4e06fcb39ed5146560937f228682a7.tar.gz
Update documentation on testing and CI
* README.md: Update section on testing. * doc/docker-container.org: Add it.
Diffstat (limited to 'doc/docker-container.org')
-rw-r--r--doc/docker-container.org86
1 files changed, 86 insertions, 0 deletions
diff --git a/doc/docker-container.org b/doc/docker-container.org
new file mode 100644
index 00000000..3c9864c5
--- /dev/null
+++ b/doc/docker-container.org
@@ -0,0 +1,86 @@
+#+TITLE: Genenetwork2 Dockerized
+
+* Table of Contents :TOC:
+- [[#introduction][Introduction]]
+- [[#creating-the-docker-images][Creating the Docker Images]]
+- [[#pushing-to-dockerhub][Pushing to DockerHub]]
+
+* Introduction
+
+The CI(Continuous Integration) system for Genenetwork2 uses [[https://github.com/features/actions][Github
+Actions]]. As such, it's important to have a way to run tests using
+facilities provided by GUIX in a reproducible way. This project
+leverages GUIX to generate a docker container from which the unittests
+are ran from.
+
+Find instructions on how to set docker up inside GUIX [[https://github.com/pjotrp/guix-notes/blob/master/CONTAINERS.org#run-docker][here]]. This
+document will not get into that. It's assumed that you have a working
+dockec setup.
+
+The rest of this document outlines how the docker container used in
+the CI builds were created.
+
+* Creating the Docker Images
+
+First create the image by running:
+
+#+begin_src sh
+# For the Python 2 version:
+env GUIX_PACKAGE_PATH="/home/bonface/projects/guix-bioinformatics::/home/bonface/projects/guix-past/modules" \
+ ./pre-inst-env guix pack -f docker --no-grafts \
+ -S /usr/bin=/bin -S /etc/profile=/etc/profile \
+ -S /share/genenetwork2=/share/genenetwork2 \
+ -S /share/javascript=/share/javascript \
+ -S /lib=/lib \
+ -S /usr/gn2-profile=/ \
+ coreutils bash genenetwork2
+
+# For the Python 3 version:
+env GUIX_PACKAGE_PATH="/home/bonface/projects/guix-bioinformatics::/home/bonface/projects/guix-past/modules" \
+ ./pre-inst-env guix pack -f docker --no-grafts \
+ -S /usr/bin=/bin -S /etc/profile=/etc/profile \
+ -S /share/genenetwork2=/share/genenetwork2 \
+ -S /share/javascript=/share/javascript \
+ -S /lib=/lib \
+ -S /usr/gn2-profile=/ \
+ coreutils bash python3-genenetwork2
+ #+end_src
+
+The output will look something similar to:
+
+: /gnu/store/dj1xh19jq1l9vwq24w3nay2954x0wabb-docker-pack.tar.gz
+
+Load the docker image by running:
+
+: docker load --input /gnu/store/dj1xh19jq1l9vwq24w3nay2954x0wabb-docker-pack.tar.gz
+
+Results look something similar to:
+
+#+begin_export ascii
+a93f52b7f565: Loading layer 3.174GB/3.174GB
+Loaded image: coreutils-genenetwork2:latest
+#+end_export
+
+Assuming you have a docker instance running, you could always run
+commands in it e.g:
+
+: docker run "coreutils-genenetwork2:latest" python --version
+
+
+* Pushing to DockerHub
+
+We use DockerHub to store the docker images from which we use on our
+CI environment using Github Actions.
+
+To push to dockerhub, first get the image name by running =docker
+images=. Push to dockerhub using a command similar to:
+
+: docker push bonfacekilz/python2-genenetwork2:latest
+
+Right now, we have 2 images on DockerHub:
+
+- https://hub.docker.com/repository/docker/bonfacekilz/python2-genenetwork2:
+ Contains the python2 version of gn2. Don't use this. Please use the
+ python3 image!
+- https://hub.docker.com/repository/docker/bonfacekilz/python3-genenetwork2:
+ Contains the python3 version of gn2.