Skip to content

Commit

Permalink
Merge branch 'feature/ci_multi_python_v3.0' into 'release/v3.0'
Browse files Browse the repository at this point in the history
CI: Support switching between various versions of Python (backport v3.0)

See merge request idf/esp-idf!3535
  • Loading branch information
projectgus committed Oct 24, 2018
2 parents 9b4e911 + 00fec53 commit 099ae5a
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ variables:
python $APPLY_BOT_FILTER_SCRIPT || exit 0

before_script:
- source tools/ci/setup_python.sh
# apply bot filter in before script
- *apply_bot_filter
# add gitlab ssh key
Expand All @@ -54,13 +55,15 @@ before_script:

.do_nothing_before:
before_script: &do_nothing_before
- source tools/ci/setup_python.sh
# apply bot filter in before script
- *apply_bot_filter
- echo "Not setting up GitLab key, not fetching submodules"
- source tools/ci/configure_ci_environment.sh

.add_gitlab_key_before:
before_script: &add_gitlab_key_before
- source tools/ci/setup_python.sh
# apply bot filter in before script
- *apply_bot_filter
- echo "Not fetching submodules"
Expand Down
49 changes: 49 additions & 0 deletions tools/ci/setup_python.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#! /bin/bash

# Regexp for matching job names which are incompatible with Python 3
py3_incomp='assign_test|UT|IT'

if [ -z ${PYTHON_VER+x} ] || [[ $CI_JOB_NAME =~ $py3_incomp ]]; then
# Use this version of the Python interpreter if it was not defined before or
# the given job is not compatible with Python 3
PYTHON_VER=2.7.15
fi

if [ -f /opt/pyenv/activate ];
then
source /opt/pyenv/activate
pyenv global $PYTHON_VER || {
echo 'Python' $PYTHON_VER 'is not installed.'
INSTALLED_PY_VERS=$(pyenv versions --bare)

while [ ${#PYTHON_VER} -gt 0 ]
do
echo 'Tring to locate a match for' $PYTHON_VER

for ver in ${INSTALLED_PY_VERS[@]}
do
if [[ $ver == $PYTHON_VER* ]];
then
pyenv global $ver
break 2
fi
done

# Removing last character and trying to find some match.
# For example, if 3.4.8 was selected but isn't installed then it will try to
# find some other installed 3.4.X version, and then some 3.X.X version.
PYTHON_VER=${PYTHON_VER: : -1}
done
}
python --version || {
echo 'No matching Python interpreter is found!'
exit 1
}
elif command -v python -V 1>/dev/null 2>&1;
then
python --version
echo 'No /opt/pyenv/activate exists and Python from path is used.'
else
echo 'No /opt/pyenv/activate exists and no Python interpreter is found!'
exit 1
fi

0 comments on commit 099ae5a

Please sign in to comment.