From e3361e25f505c591a4d14155b7693810887f4e93 Mon Sep 17 00:00:00 2001 From: Harrison Deng Date: Mon, 22 Jul 2024 02:48:20 +0000 Subject: [PATCH] Added devcontainer configurations and updated pipeline. --- .devcontainer/Dockerfile | 11 +++++++++++ .devcontainer/devcontainer.json | 24 ++++++++++++++++++++++++ .devcontainer/noop.txt | 3 +++ Jenkinsfile | 27 +++++++++++++-------------- environment.yml | 19 +++++++------------ 5 files changed, 58 insertions(+), 26 deletions(-) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/noop.txt diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..2738918 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,11 @@ +FROM mcr.microsoft.com/devcontainers/anaconda:1-3 + +# Copy environment.yml (if found) to a temp location so we update the environment. Also +# copy "noop.txt" so the COPY instruction does not fail if no environment.yml exists. +COPY environment.yml* .devcontainer/noop.txt /tmp/conda-tmp/ +RUN if [ -f "/tmp/conda-tmp/environment.yml" ]; then umask 0002 && /opt/conda/bin/conda env update -n base -f /tmp/conda-tmp/environment.yml; fi \ + && rm -rf /tmp/conda-tmp + +# [Optional] Uncomment this section to install additional OS packages. +# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ +# && apt-get -y install --no-install-recommends diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..70e91b2 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,24 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/anaconda +{ + "name": "Anaconda (Python 3)", + "build": { + "context": "..", + "dockerfile": "Dockerfile" + } + + // Features to add to the dev container. More info: https://containers.dev/features. + // "features": {}, + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + // "postCreateCommand": "python --version", + + // Configure tool-specific properties. + // "customizations": {}, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + // "remoteUser": "root" +} diff --git a/.devcontainer/noop.txt b/.devcontainer/noop.txt new file mode 100644 index 0000000..dde8dc3 --- /dev/null +++ b/.devcontainer/noop.txt @@ -0,0 +1,3 @@ +This file copied into the container along with environment.yml* from the parent +folder. This file is included to prevents the Dockerfile COPY instruction from +failing if no environment.yml is found. \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile index ae1790a..b80098b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,34 +1,33 @@ pipeline { - agent any + agent { + kubernetes { + cloud 'Reslate Systems' + defaultContainer 'conda' + } + } stages { stage("install") { steps { - sh 'mamba env update --file environment.yml --prefix ./env || mamba env create --force --file environment.yml --prefix ./env' - sh 'node --version && npm --version' - sh 'npm install' + sh 'conda update conda -y -q' + sh 'conda env update -n base --file environment.yml -q' + sh 'conda run -n base npm install' } } stage("test") { steps { - sh ''' - source ~/.bashrc - npm run test:junit - ''' - junit 'junit/*.xml' + sh 'conda run -n base npm run test:junit' + recordCoverage(tools: [[parser: 'JUNIT', pattern: 'junit/*.xml']]) } } stage("build") { steps { - sh 'npm run build:prod' + sh 'conda run -n base npm run build:prod' archiveArtifacts artifacts: 'dist/audioshowkit.js', fingerprint: true, followSymlinks: false, onlyIfSuccessful: true } } stage("generate docs") { steps { - sh ''' - source ~/.bashrc - npm run docs - ''' + sh 'conda run -n base npm run docs' publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, keepAll: true, reportDir: './docs', reportFiles: 'index.html', reportName: 'Documentation', reportTitles: '']) } } diff --git a/environment.yml b/environment.yml index e080144..ae30052 100644 --- a/environment.yml +++ b/environment.yml @@ -2,16 +2,11 @@ name: audioshowkit channels: - conda-forge dependencies: - - _libgcc_mutex=0.1 - - _openmp_mutex=4.5 - - ca-certificates=2022.9.24 - - icu=70.1 - - libgcc-ng=12.2.0 - - libgomp=12.2.0 - - libstdcxx-ng=12.2.0 - - libuv=1.44.2 - - libzlib=1.2.13 - - nodejs=18.12.1 - - openssl=3.0.7 - - zlib=1.2.13 + - ca-certificates + - icu + - libuv + - libzlib + - nodejs=20 + - openssl + - zlib prefix: ./env \ No newline at end of file