Shell gitlab runner无法使用`pyenv,pip`

Shell gitlab runner无法使用`pyenv,pip`,shell,gitlab,gitlab-ci-runner,Shell,Gitlab,Gitlab Ci Runner,我在Debian9。和sudo su成为root用户。之后,我运行命令gitlab runner register。但出于某些原因。我得到的隔离环境与通过ssh登录服务器时不同 gitlab-runner --version Version: 10.8.0 Git revision: 079aad9e Git branch: GO version: go1.8.7 Built: 2018-05-22T03:24:56+00:00 OS/Arch: linux

我在Debian9。和
sudo su
成为
root
用户。之后,我运行命令
gitlab runner register
。但出于某些原因。我得到的隔离环境与通过ssh登录服务器时不同

gitlab-runner --version
Version:      10.8.0
Git revision: 079aad9e
Git branch:
GO version:   go1.8.7
Built:        2018-05-22T03:24:56+00:00
OS/Arch:      linux/amd64
当我把
env
放在
脚本之前时,我发现了不同的环境。
然后我将
source~/.bashrc
放入其中。也不做任何改变。 如何让
shell
runner使用我的普通登录用户环境

更新:
当我执行
env
(通过在脚本之前输入
)时,我得到了这个输出

$ env
CI_RUNNER_EXECUTABLE_ARCH=linux/amd64
CI_COMMIT_TITLE=add config
CI_JOB_TOKEN=xxxxxxxxxxxxxxxxxxxx
CI_BUILD_REF_NAME=master
CI_REGISTRY_PASSWORD=xxxxxxxxxxxxxxxxxxxx
CI_RUNNER_TAGS=provider, oauth, mp
CI_SHARED_ENVIRONMENT=true
CI_JOB_NAME=test
CI_SERVER_VERSION=10.8.4
DJANGO_SETTINGS_MODULE=config.settings.local
LANG=en_US.UTF-8
GITLAB_CI=true
CI_SERVER_REVISION=2268d0c
CI_PROJECT_VISIBILITY=private
OLDPWD=/home/gitlab-runner
INVOCATION_ID=7dd516612949410c8ca8e4e59696f9fd
CI_COMMIT_SHA=9030892858b5ca92c7b36a81f573f187e6d14090
CI_COMMIT_MESSAGE=add config

CI_BUILD_STAGE=test
CI_PROJECT_URL=https://mbx-git.magicboxasia.com/sarit/mhu_ped_oauth_provider
CI_COMMIT_REF_SLUG=master
CI_SERVER_NAME=GitLab
CI_RUNNER_VERSION=10.8.0
CI_BUILD_NAME=test
CI=true
XDG_SESSION_ID=c5
CI_REGISTRY_USER=gitlab-ci-token
USER=gitlab-runner
CI_PROJECT_ID=96
CI_PIPELINE_ID=4399
CI_COMMIT_DESCRIPTION=
PWD=/home/gitlab-runner/builds/f304ea76/0/sarit/mhu_ped_oauth_provider
GITLAB_FEATURES=
HOME=/home/gitlab-runner
JOURNAL_STREAM=8:19161
CI_REGISTRY=docker-registry.magicboxasia.com
CI_BUILD_TOKEN=xxxxxxxxxxxxxxxxxxxx
CI_BUILD_ID=5514
CONFIG_FILE=/etc/gitlab-runner/config.toml
GITLAB_USER_NAME=Sarit Ritwirune
CI_PROJECT_PATH_SLUG=sarit-mhu-ped-oauth-provider
DATABASE_URL=postgres://postgres:postgres@postgres:5432/mp_oauth_provider
POSTGRES_DB=poinkdb
GITLAB_USER_EMAIL=sarit@magicboxasia.com
CI_COMMIT_REF_NAME=master
CI_REGISTRY_IMAGE=docker-registry.magicboxasia.com/sarit/mhu_ped_oauth_provider
CI_SERVER_TLS_CA_FILE=/home/gitlab-runner/builds/f304ea76/0/sarit/mhu_ped_oauth_provider.tmp/CI_SERVER_TLS_CA_FILE
CI_RUNNER_ID=42
CI_SERVER=yes
CI_JOB_ID=5514
CI_REPOSITORY_URL=https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@mbx-git.magicboxasia.com/sarit/mhu_ped_oauth_provider.git
MAIL=/var/mail/gitlab-runner
SHELL=/bin/bash
GITLAB_USER_LOGIN=sarit
CI_RUNNER_REVISION=079aad9e
CI_CONFIG_PATH=.gitlab-ci.yml
CI_PROJECT_NAME=mhu_ped_oauth_provider
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
SHLVL=2
CI_RUNNER_DESCRIPTION=MP OAuth Provider
CI_PROJECT_PATH=sarit/mhu_ped_oauth_provider
LOGNAME=gitlab-runner
XDG_RUNTIME_DIR=/run/user/999
GITLAB_USER_ID=39
CI_BUILD_BEFORE_SHA=e36e718d09f89095972ddf60ebf1fc1931282ae4
CI_BUILD_REF=9030892858b5ca92c7b36a81f573f187e6d14090
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
CI_PIPELINE_SOURCE=push
CI_PROJECT_NAMESPACE=sarit
CI_PROJECT_DIR=/home/gitlab-runner/builds/f304ea76/0/sarit/mhu_ped_oauth_provider
CI_JOB_STAGE=test
CI_BUILD_REF_SLUG=master
_=/usr/bin/env
$ python -V
Python 2.7.13

我不确定这是否是最佳实践,但我通过此直接设置
路径
,以便让
gitlab运行程序
使用与我在
ssh
远程到服务器时相同的方法。但至少它起作用了

variables:
    PATH: "/home/gitlab-runner/.pyenv/plugins/pyenv-virtualenv/shims:/home/gitlab-runner/.pyenv/shims:/home/gitlab-runner/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"

类似于直接在gitlab ci中设置变量

job: 
  variables:
    MY_CUSTOM_VARIABLE:my_variable
最好在项目的主目录中放置一个环境文件,例如file.ci/env。 在项目目录中(与.gitlab ci.yml级别相同):

然后,在
.gitlab ci.yml
中,将文件复制到生成上下文中:

before_script:
  - . .ci/env
您可以在其中放置自定义或修改的变量,如下所示:

任何自定义变量 Pyenv和pipenv上下文变量:
您是如何设置gitlab runner的?如果您使用
sudo
设置亚军,它将创建一个单独的
gitlab runner
帐户,因此将使用不同的用户环境。我有单独的
gitlab runner
。但问题并不存在。问题是当我让它运行
python、pip、pyenv返回未找到的命令。
python、pip、pyenv是否全局安装?您是否尝试过成为
gitlab运行程序
并访问那里的命令?@Rekovni肯定。我已经定好了。这只发生在
10.8.0
之前的项目中
10.7.0
没有这个问题。在最坏的情况下,我将使用
docker
runner而不是
shell
runner谢谢你的回答。下次我会在新项目中尝试你的答案。
before_script:
  - . .ci/env
export MY_CUSTOM_VARIABLE=my_variable
export PYENV_ROOT="$HOME/.pyenv"
export PATH=/home/gitlab-runner/.pyenv/shims:/home/gitlab-runner/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export PIPENV_PYTHON="$PYENV_ROOT/shims/python"