Skip to content
Snippets Groups Projects
Commit 90dabd83 authored by James Kennington's avatar James Kennington
Browse files

Remove conda stages of CI build

parent 0d82e8af
No related branches found
No related tags found
1 merge request!393Remove conda stages of CI build
Pipeline #498041 passed with warnings
# This is a Dockerfile to build a conda GstLAL
# runtime container.
ARG CI_REGISTRY_IMAGE
ARG CI_COMMIT_REF_NAME
ARG CONDA_ENV
# Build stage
FROM $CI_REGISTRY_IMAGE/dependencies/conda-$CONDA_ENV:$CI_COMMIT_REF_NAME AS build
ARG CI_REGISTRY_IMAGE
ARG CI_COMMIT_REF_NAME
ARG CONDA_ENV
# Labeling/packaging stuff:
LABEL name="GstLAL Runtime Package, conda" \
maintainer="Patrick Godwin <patrick.godwin@ligo.org>" \
date="2021-10-14"
# Copy source to container
COPY gstlal /gstlal
COPY gstlal-ugly /gstlal-ugly
COPY gstlal-inspiral /gstlal-inspiral
COPY gstlal-burst /gstlal-burst
# Make RUN commands use bash:
SHELL ["/bin/bash", "-c"]
# Install gstlal
RUN . /opt/conda/etc/profile.d/conda.sh && \
conda activate gstlal-$CONDA_ENV && \
export PREFIX="$CONDA_PREFIX" && \
export CONDA_BUILD="1" && \
conda activate gstlal-$CONDA_ENV && \
cd /gstlal && \
./00init.sh && \
./configure --prefix=$CONDA_PREFIX --without-doxygen && \
make -j$NUM_CORES && \
make install -j$NUM_CORES
RUN rm -rf gstlal
# Install gstlal-ugly
RUN . /opt/conda/etc/profile.d/conda.sh && \
conda activate gstlal-$CONDA_ENV && \
export PREFIX="$CONDA_PREFIX" && \
export CONDA_BUILD="1" && \
conda activate gstlal-$CONDA_ENV && \
cd /gstlal-ugly && \
./00init.sh && \
./configure --prefix=$CONDA_PREFIX --without-doxygen && \
make -j$NUM_CORES && \
make install -j$NUM_CORES
RUN rm -rf gstlal-ugly
# Install gstlal-burst
RUN . /opt/conda/etc/profile.d/conda.sh && \
conda activate gstlal-$CONDA_ENV && \
export PREFIX="$CONDA_PREFIX" && \
export CONDA_BUILD="1" && \
conda activate gstlal-$CONDA_ENV && \
cd /gstlal-burst && \
./00init.sh && \
./configure --prefix=$CONDA_PREFIX --without-doxygen && \
make -j$NUM_CORES && \
make install -j$NUM_CORES
RUN rm -rf gstlal-burst
# Install gstlal-inspiral
RUN . /opt/conda/etc/profile.d/conda.sh && \
conda activate gstlal-$CONDA_ENV && \
export PREFIX="$CONDA_PREFIX" && \
export CONDA_BUILD="1" && \
conda activate gstlal-$CONDA_ENV && \
cd /gstlal-inspiral && \
./00init.sh && \
./configure --prefix=$CONDA_PREFIX --without-doxygen --disable-massmodel && \
make -j$NUM_CORES && \
make install -j$NUM_CORES
RUN rm -rf gstlal-inspiral
# Fix shebangs on executables
RUN . /opt/conda/etc/profile.d/conda.sh && \
conda activate gstlal-$CONDA_ENV && \
sed -i.tmp "s@/usr/bin/env python3@$CONDA_PREFIX/bin/python@g" ${CONDA_PREFIX}/bin/gstlal_*
# Run stage
FROM $CI_REGISTRY_IMAGE/dependencies/conda-$CONDA_ENV:$CI_COMMIT_REF_NAME AS run
ARG CONDA_ENV
# Replace created environment with the base environment
# Also grab conda global config settings
COPY --from=build /opt/conda /opt/conda
COPY --from=build /opt/conda/.condarc /opt/conda
# Set up entrypoint
COPY .gitlab-ci.conda_entrypoint.sh /bin/entrypoint.sh
RUN chmod +x /bin/entrypoint.sh
# Export environment variables
ENV PATH="/opt/conda/envs/gstlal-$CONDA_ENV/bin:${PATH}"
ENV PKG_CONFIG_PATH /opt/conda/envs/gstlal-$CONDA_ENV/lib/pkgconfig
ENV GST_PLUGIN_PATH /opt/conda/envs/gstlal-$CONDA_ENV/lib/gstreamer-1.0
ENV GSTLAL_FIR_WHITEN 0
ENV TMPDIR /tmp
# Give entrypoint knowledge about environment to source
ENV CONDA_ENV $CONDA_ENV
# Setup for interactive shell sessions (without polluting $HOME)
RUN echo ". /opt/conda/etc/profile.d/conda.sh && conda activate gstlal-${CONDA_ENV}" >> /root/.bashrc
ENTRYPOINT ["/bin/entrypoint.sh"]
CMD ["/bin/bash"]
# NOTE: this Dockerfile is adapted from https://github.com/conda-forge/miniforge-images/blob/master/ubuntu/Dockerfile
# removing tini as an entrypoint as it doesn't play nice with Singularity
ARG CONDA_ENV
FROM debian:bullseye-slim
ARG CONDA_ENV
ARG MINIFORGE_NAME=Mambaforge
ARG MINIFORGE_VERSION=4.10.3-7
ENV CONDA_DIR=/opt/conda
ENV PATH=${CONDA_DIR}/bin:${PATH}
# 1. Install just enough for conda to work
# 2. Keep $HOME clean (no .wget-hsts file), since HSTS isn't useful in this context
# 3. Install miniforge from GitHub releases
# 4. Apply some cleanup tips from https://jcrist.github.io/conda-docker-tips.html
# Particularly, we remove pyc and a files. The default install has no js, we can skip that
# 5. Activate base by default when running as any *non-root* user as well
# Good security practice requires running most workloads as non-root
# This makes sure any non-root users created also have base activated
# for their interactive shells.
# 6. Activate base by default when running as root as well
# The root user is already created, so won't pick up changes to /etc/skel
RUN apt-get update > /dev/null && \
apt-get install --no-install-recommends --yes \
wget bzip2 ca-certificates \
git > /dev/null && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
wget --no-hsts --quiet https://github.com/conda-forge/miniforge/releases/download/${MINIFORGE_VERSION}/${MINIFORGE_NAME}-${MINIFORGE_VERSION}-Linux-$(uname -m).sh -O /tmp/miniforge.sh && \
/bin/bash /tmp/miniforge.sh -b -p ${CONDA_DIR} && \
rm /tmp/miniforge.sh && \
conda clean -tipsy && \
find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \
find ${CONDA_DIR} -follow -type f -name '*.pyc' -delete && \
conda clean -afy
COPY gstlal/share/conda/envs/lock/gstlal-$CONDA_ENV-linux-64.lock .
SHELL ["/bin/bash", "-c"]
RUN conda config --set always_yes yes
RUN conda config --add channels conda-forge
RUN conda update -n base conda && \
conda clean -af
RUN conda create -n gstlal-$CONDA_ENV --file gstlal-$CONDA_ENV-linux-64.lock --force && \
conda clean -af
RUN rm -f gstlal-$CONDA_ENV-linux-64.lock
ENV PKG_CONFIG_PATH /opt/conda/envs/gstlal-$CONDA_ENV/lib/pkgconfig
ENV GST_PLUGIN_PATH /opt/conda/envs/gstlal-$CONDA_ENV/lib/gstreamer-1.0
ENTRYPOINT ["bin/bash"]
#!/usr/bin/env bash
. /opt/conda/etc/profile.d/conda.sh
conda activate gstlal-${CONDA_ENV}
exec "$@"
......@@ -39,38 +39,6 @@ stages:
- docs
- nightly-pages
# conda containers
.dependencies: &dependencies
stage: deps
variables: &conda-deps-vars
GIT_STRATEGY: fetch
IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_JOB_NAME:$CI_COMMIT_REF_NAME
before_script: [ ]
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- >
docker build --pull
--build-arg CONDA_ENV=$CONDA_ENV
-t $IMAGE_TAG
--file .gitlab-ci.Dockerfile.conda-deps
.
- docker push $IMAGE_TAG
needs: [ ]
only:
- schedules
- pushes
dependencies/conda-dev:
<<: *dependencies
variables:
<<: *conda-deps-vars
CONDA_ENV: dev
dependencies/conda-prod:
<<: *dependencies
variables:
<<: *conda-deps-vars
CONDA_ENV: prod
#
# build rpms
......@@ -89,7 +57,7 @@ dependencies/conda-prod:
- ./configure --enable-gtk-doc $EXTRA_CONFIG_FLAGS
- make
- make dist
# Install dependencies
# Install dependencies
- yum-builddep -y ${CI_JOB_NAME#level?:rpm:}.spec
- rpmbuild -tb -D "_topdir ${CI_PROJECT_DIR}/rpmbuild" -D 'debug_package %{nil}' -D 'build_cflags ${CFLAGS}' -D 'build_ldflags ${LDFLAGS}' ${CI_JOB_NAME#level?:rpm:}-*.tar.gz
artifacts:
......@@ -196,46 +164,6 @@ docker:release:gstlal-burst:rl8:
only:
- /gstlal-burst-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
.docker:conda: &docker-conda
interruptible: true
stage: docker
variables: &docker-conda-vars
GIT_STRATEGY: fetch
NUM_CORES: 4
before_script: [ ]
script:
- IMAGE_TAG=$CI_REGISTRY_IMAGE/conda-$CONDA_ENV:$CI_COMMIT_REF_NAME
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- >
docker build --pull
--build-arg CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE
--build-arg CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME
--build-arg CONDA_ENV=$CONDA_ENV
-t $IMAGE_TAG
--file .gitlab-ci.Dockerfile.conda
.
- docker push $IMAGE_TAG
needs:
- dependencies:conda:prod
only:
- schedules
- pushes
docker:conda:dev:
<<: *docker-conda
variables:
<<: *docker-conda-vars
CONDA_ENV: dev
needs:
- dependencies/conda-dev
docker:conda:prod:
<<: *docker-conda
variables:
<<: *docker-conda-vars
CONDA_ENV: prod
needs:
- dependencies/conda-prod
latest_image:
interruptible: true
......@@ -404,155 +332,22 @@ test:offline:rl8:
allow_failure: true
# test stages (conda)
test:gstlal:conda:
interruptible: true
image: $CI_REGISTRY_IMAGE/conda-dev:$CI_COMMIT_REF_NAME
stage: test-gstlal
needs:
- docker:conda:dev
before_script: [ ]
script:
- cd gstlal
- python3 -m pytest -c pytest.ini -m "not requires_full_build" --junitxml=report.xml
only:
- schedules
- pushes
allow_failure: true
artifacts:
when: always
reports:
junit: gstlal/report.xml
test:gstlal-full-build:conda:
interruptible: true
image: $CI_REGISTRY_IMAGE/conda-dev:$CI_COMMIT_REF_NAME
stage: test-gstlal-full-build
needs:
- docker:conda:dev
before_script: [ ]
script:
- cd gstlal
- python3 -m pytest -c pytest.ini -m "requires_full_build" --junitxml=report-full-build.xml
only:
- schedules
- pushes
allow_failure: true
artifacts:
when: always
reports:
junit: gstlal/report-full-build.xml
test:gstlal-inspiral:conda:
interruptible: true
image: $CI_REGISTRY_IMAGE/conda-dev:$CI_COMMIT_REF_NAME
stage: test-inspiral
needs:
- docker:conda:dev
before_script: [ ]
script:
- cd gstlal-inspiral
- python3 -m pytest -c pytest.ini --junitxml=report-inspiral.xml
only:
- schedules
- pushes
allow_failure: true
artifacts:
when: always
reports:
junit: gstlal/report-inspiral.xml
test:gstlal-ugly:conda:
interruptible: true
image: $CI_REGISTRY_IMAGE/conda-dev:$CI_COMMIT_REF_NAME
stage: test-gstlal-ugly
needs:
- docker:conda:dev
before_script: [ ]
script:
- cd gstlal-ugly
- python3 -m pytest -c pytest.ini --junitxml=report-ugly.xml
only:
- schedules
- pushes
allow_failure: true
artifacts:
when: always
reports:
junit: gstlal/report-ugly.xml
test:gstlal-burst:conda:
interruptible: true
image: $CI_REGISTRY_IMAGE/conda-dev:$CI_COMMIT_REF_NAME
stage: test-burst
needs:
- docker:conda:dev
before_script: [ ]
script:
- cd gstlal-burst
- python3 -m pytest -c pytest.ini --junitxml=report-burst.xml
only:
- schedules
- pushes
allow_failure: true
artifacts:
when: always
reports:
junit: gstlal/report-burst.xml
test:offline:conda:
interruptible: true
image: $CI_REGISTRY_IMAGE/conda-dev:$CI_COMMIT_REF_NAME
stage: test-offline
needs:
- docker:conda:dev
- test:gstlal:conda
- test:gstlal-inspiral:conda
- test:gstlal-burst:conda
before_script: [ ]
script:
# Set up directory structure and copy over built-dependencies from container:
- mkdir public
# Export variables for the offline tutorial
- export LAL_PATH=$CONDA_PREFIX
- export USER=gstlal_CI_test
# Get the necessary ROM data:
- git clone https://git.ligo.org/alexander.pace/gstlal-testing-data.git ${GSTLAL_DIR}/gstlal-testing-data
- export LAL_DATA_PATH=${GSTLAL_DIR}/gstlal-testing-data/
- cd gstlal-inspiral/tests
# Run tests
- make -f Makefile.offline_tutorial_test ENABLE_PLOTTING=0
only:
- schedules
- pushes
allow_failure: true
# Documentation
docs:
interruptible: true
image: $CI_REGISTRY_IMAGE/conda-dev:$CI_COMMIT_REF_NAME
image: $DOCKER_BRANCH
stage: docs
before_script: [ ]
script:
- |
export DEBIAN_FRONTEND=noninteractive
export TZ=America/New_York
apt-get --allow-releaseinfo-change update -y
apt-get install -y dvipng texlive-latex-base texlive-latex-extra
source /opt/conda/etc/profile.d/conda.sh
conda activate gstlal-dev
yum install -y dvipng texlive-pdftex
python3 -m pip install sphinx myst-parser sphinx-rtd-theme
mkdir -p docs/
cd doc; make html IS_CI=1
cd ..; cp -rf doc/_build/* docs/
needs:
- docker:conda:dev
- docker:rl8
artifacts:
paths:
- docs
......
#!/usr/bin/env python
#!/usr/bin/env python3
# Copyright 2018 Chad Hanna
#
import sys
......@@ -11,7 +11,7 @@ def process_source(prog, outfile):
if not line.startswith("###"):
continue
outfile.write(line.replace("### ", "").replace("###",""))
if len(sys.argv) == 1:
print("USAGE: sphinx-bindoc <output directory> <input directory> [patterns to exclude]")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment