Skip to content
Snippets Groups Projects

Add stages to ci

Merged Stefan Possanner requested to merge fix-deploy into master
1 file
+ 55
32
Compare changes
  • Side-by-side
  • Inline
+ 55
32
@@ -8,8 +8,20 @@ default:
# Try to use only one job per stage.
# Stupid GitLab fails to load the cache for second jobs.
cache: # Global `cache`.
key: 'python-env'
paths:
- g2p-env-$CI_PIPELINE_ID
- g2p-env-$CI_PIPELINE_ID/
before_script:
- apt-get -qq update && apt-get -qq install -y gcc gfortran libblas-dev liblapack-dev
- source g2p-env-$CI_PIPELINE_ID/bin/activate
- pip list
- ENV_PATH=$(python3 -c "import sysconfig; print(sysconfig.get_path('platlib'))")
#- ENV_PATH=$(python3 -m site --user-site)
- LIBDIR=$(python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
- echo $ENV_PATH
- echo $LIBDIR
- ls
artifacts:
reports:
@@ -18,7 +30,7 @@ default:
path: coverage.xml
paths:
- logs/execution.log
- dist/*
- dist/
after_script: # Global `after_script`.
- ls g2p-env-$CI_PIPELINE_ID
@@ -28,31 +40,56 @@ variables:
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
stages:
- startup
- build
- install_and_test
- release
# Changes (e.g. apt install, pip install) do not persist across different GitLab CI jobs.
# => Consolidate everything in GitLab CI into a single job, because the design is dumb.
# => Since we only have one job, and GitLab Pages requires the job to be called `pages` for it to work, we now call this job `pages`.
install_and_test:
stage: install_and_test
# python virtual environment into cache
default_venv:
stage: startup
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_REF_PROTECTED == "false" && $CI_PIPELINE_SOURCE == "push"
before_script: # Overrides global `before_script`.
- echo "Hello, $GITLAB_USER_LOGIN!"
- python -V # Print out python version for debugging.
- if: $CI_PIPELINE_SOURCE == "push"
before_script:
- uname -s # get system info
- uname -v
- uname -m
- uname -o
- echo "Hello ${GITLAB_USER_NAME} !"
- echo "This is job ${CI_JOB_ID}"
script:
- echo "Creating virtual environment..."
- pip install -U virtualenv
- python3 -m venv g2p-env-$CI_PIPELINE_ID
- ls
- pwd
# Install everything.
- apt-get -qq update && apt-get -qq install -y gcc gfortran libblas-dev liblapack-dev libopenmpi-dev openmpi-bin
- python -m venv g2p-env-$CI_PIPELINE_ID
- source g2p-env-$CI_PIPELINE_ID/bin/activate
- python3 -m pip install --upgrade pip
- pip install -U pip build pytest pytest-cov coverage twine
- pip list
# build on mpcdf server
default_build:
stage: build
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_PIPELINE_SOURCE == "push"
needs: ['default_venv']
script:
- python3 -m build # build gvec_to_python (.whl)
install_and_test:
stage: install_and_test
rules:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_REF_PROTECTED == "false" && $CI_PIPELINE_SOURCE == "push"
needs: ['default_build']
script:
# Build: build python package, install package.
- echo "Run python build:"
- python -m build
# install package
- ls -lah dist
- echo "Install dist:"
- pip install -U dist/gvec_to_python-*.whl --force-reinstall
@@ -77,7 +114,7 @@ deploy:
- if: $CI_COMMIT_TAG
when: never
- if: $CI_COMMIT_REF_NAME == "master"
needs: ["install_and_test"]
needs: ["default_build"]
script:
- twine upload dist/*
@@ -119,18 +156,4 @@ release_job:
url: 'https://pypi.org/project/gvec_to_python/'
# OLD, TO BE DELETED
# deploy:
# stage: release
# rules:
# - if: $CI_COMMIT_TAG
# when: never
# - if: $CI_COMMIT_REF_NAME == "master"
# before_script:
# - apt-get -qq update && apt-get -qq install -y gcc gfortran libblas-dev liblapack-dev libopenmpi-dev openmpi-bin
# - pip install -U pip build twine
# script:
# - python -m build
# - ls -lah dist
# - twine upload dist/*
Loading