circleCI 2.0不添加环境变量

时间:2018-05-16 15:27:58

标签: ubuntu continuous-integration yaml circleci circleci-2.0


我最近从TravisCI切换到circleCI 2.0,当我尝试:export PATH="$MINICONDA/bin:$PATH"时,我遇到了一个问题, 它不会添加路径变量。
我尝试使用SSH连接进行调试。我首先检查路径变量是否已设置(它不是),稍后我尝试手动设置它并且它有效。但是,它在自动执行构建时不起作用。
以下是错误消息:

 Complete output from command python setup.py egg_info: Traceback (most
 recent call last):   File "<string>", line 1, in <module>   File
 "/tmp/pip-build-m_klG2/snakemake/setup.py", line 13
     print("At least Python 3.5 is required.\n", file=sys.stderr)

基本上,没有看到通过conda安装的python(3.6)并尝试使用默认的python(2.7)运行pip install -r python-requirements.txt命令。 我一定错过了什么,但我无法理解。 我在下面提供了完整的config.yml文件。如果你能解释这个问题,我将非常感激。

 version: 2
 jobs:
   build:
     branches:
       only:
         -dev
     machine: true
     working_directory: ~/repo
     steps:
       - checkout
       - run:
           name: install miniconda
           command: |
             cd /home/circleci
             export MINICONDA=$HOME/miniconda
             export PATH="$MINICONDA/bin:$PATH"
             hash -r
             wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
             bash miniconda.sh -b -f -p $MINICONDA
             conda config --set always_yes yes
             conda update conda
             conda info -a
             conda create -n testenv python=3.6.0
             source activate testenv
       - run:
           name: install requirements
           command: |
             cd /home/circleci/repo
             pip install -r python-requirements.txt
             pip install pytest-ordering
       - run:
           name: download sample dataset
           command: |
             cd /home/circleci/repo/unit_tests/test_data
             wget http://cf.10xgenomics.com/samples/cell-exp/2.1.0/t_3k/t_3k_filtered_gene_bc_matrices.tar.gz
             tar -xvfz t_3k_filtered_gene_bc_matrices.tar.gz
       - run:
           name: run tests
           command: |
             cd /home/circleci/repo
             pytest ./unit_tests
       - store_artifacts:
           path: test-reports
           destination: test-reports

2 个答案:

答案 0 :(得分:2)

这似乎是environment flag的一个很好的用例。

- run:
    name: install miniconda
    environment:
      MINICONDA: $HOME/miniconda
      PATH: $MINICONDA/bin:$PATH
    command: |
      cd /home/circleci
      hash -r
      wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
      bash miniconda.sh -b -f -p $MINICONDA
      conda config --set always_yes yes
      conda update conda
      conda info -a
      conda create -n testenv python=3.6.0
      source activate testenv

答案 1 :(得分:2)

最后,我使用the docs 2.0中的插值环境变量解决了它。

步骤:

  1. 将环境变量附加到〜/ .bashrc
    echo 'export MINICONDA=$HOME/miniconda' >> ~/.bashrc

  2. 在你想要访问这些变量的规则中找到〜/ .bashrc source ~/.bashrc

  3. 配置文件:

        version: 2
        jobs:
          build:
            branches:
              only:
                -dev
            machine: true
            working_directory: ~/repo
            steps:
              - checkout
              - run:
                  name: install miniconda
                  command: |
                    cd /home/circleci
                    echo 'export MINICONDA=$HOME/miniconda' >> ~/.bashrc
                    echo 'export PATH="$MINICONDA/bin:$PATH"' >> ~/.bashrc
                    source ~/.bashrc
                    hash -r
                    wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
                    bash miniconda.sh -b -f -p $MINICONDA
                    conda config --set always_yes yes
                    conda update conda
                    conda info -a
                    conda create -n testenv python=3.6.0
                    echo 'source activate testenv' >> ~/.bashrc
                    source ~/.bashrc
              - run:
                  name: install requirements
                  command: |
                    source ~/.bashrc
                    cd /home/circleci/repo
                    # a requirement has install-time dependency on numpy
                    pip install numpy
                    pip install -r python-requirements.txt
                    pip install pytest-ordering
              - run:
                  name: download sample dataset
                  command: |
                    cd /home/circleci/repo/unit_tests/test_data
                    wget http://cf.10xgenomics.com/samples/cell-exp/2.1.0/t_3k/t_3k_filtered_gene_bc_matrices.tar.gz
                    tar -zxvf t_3k_filtered_gene_bc_matrices.tar.gz
    
              - run:
                  name: run tests
                  command: |
                    source ~/.bashrc
                    cd /home/circleci/repo
                    pytest ./unit_tests
              - store_artifacts:
                  path: test-reports
        destination: test-reports
    
    
      [1]: https://circleci.com/docs/2.0/env-vars/#interpolating-environment-variables