web-dev-qa-db-ja.com

デバッグ用にtravis-ciビルド環境を再現する方法

Travis-ciでビルドの失敗が見られますが、ローカルマシンでは再現できません。 VMこれはtravis-ci linuxビルド環境と同一です。デバッグコードを追加するコミットを送信します。

61
David Roundy

コンテナベースのビルドには、 ローカルでdockerイメージをセットアップする方法に関する指示 があります。

残念ながら、かなりの数の手順がまだ手動です。起動して実行するために必要なコマンドは次のとおりです。

# change the image according to the language chosen in .travis.yml
$ docker run -it -u travis quay.io/travisci/travis-jvm /bin/bash

# now that you are in the docker image, switch to the travis user
Sudo su - travis

# Install a recent Ruby (default is 1.9.3)
rvm install 2.3.0
rvm use 2.3.0

# Install travis-build to generate a .sh out of .travis.yml
cd builds
git clone https://github.com/travis-ci/travis-build.git
cd travis-build
gem install travis
travis # to create ~/.travis
ln -s `pwd` ~/.travis/travis-build
bundle install

# Create project dir, assuming your project is `me/project` on GitHub
cd ~/builds
mkdir me
cd me
git clone https://github.com/me/project.git
cd project
# change to the branch or commit you want to investigate
travis compile > ci.sh
# You most likely will need to edit ci.sh as it ignores matrix and env
bash ci.sh
40
eregon

Travis Build を使用してライブラリ(つまり、~/.travis/に配置する必要があります)を使用して、シェルベースのビルドスクリプト(travis compile)を生成できます。 SSHを使用してVMにアップロードされ、実行されました。

以下の手順は、正しい軌道に乗るためのガイダンスです(何か不足している場合はお知らせください)。

Docker

コンテナを実行するコマンドの例( Docker Hub にあります):

docker run -it travisci/ubuntu-Ruby:18.04 /bin/bash

コンテナを実行し、リポジトリのクローンを作成してから、手動でテストします。

参照: コンテナベースのDockerイメージのローカルでの実行

SSHアクセス

これを確認してください answer 。基本的に、バウンスホストをセットアップしてから、SSHトンネルを実行するようにビルドを構成する必要があります。

次に.travis.ymlの例を示します。

Sudo: required
dist: trusty

language: python
python: "2.7"

script:
- echo travis:$sshpassword | Sudo chpasswd
- Sudo sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' /etc/ssh/sshd_config
- Sudo service ssh restart
- Sudo apt-get install sshpass
- sshpass -p $sshpassword ssh -R 9999:localhost:22 -o StrictHostKeyChecking=no travisci@$bouncehostip

ローカル設定

ローカル環境でテストする手順は次のとおりです。

cd ~
git clone https://github.com/travis-ci/travis-build.git
ln -s ~/travis-build/ ~/.travis/travis-build
Sudo gem install bundler
bundle install --gemfile ~/.travis/travis-build/Gemfile
cd repo-dir/
travis login -g <github_token>
vim .travis.yaml
travis lint # to validate script
travis compile # to transform into Shell script

Vagrant/VM

travis compileの結果としてbashスクリプトを生成する.travis.ymlを実行した後、vagrantを使用して、提供されたVagrantfileと次の手順を使用してこのスクリプトを仮想化環境で実行できます。

vagrant up
vagrant ssh
cd /vagrant
bundle exec rspec spec

それをテストするには、おそらくさらにツールをインストールする必要があります。


Travis CIテストの試行およびエラーコミットを行うときに不要なコミットを生成しないようにするいくつかのgitヒントを次に示します。

  1. リポジトリをフォークします(または別のブランチを使用します)。
  2. 最初のコミットの後、--amendを追加し続けて、以前のコミットを置き換えます。

    git commit --amend -m 'Same message.' -a
    
  3. 修正されたコミットを強制的にプッシュします(たとえば、既に開かれているPRに):

    git Push fork -f
    
  4. 現在、Travis CIは同じコミットを何度も再チェックします。


travis-ciをローカルで実行する方法 も参照してください。

12
kenorb

私は今、同じ問題に直面しています。以前はCircleCIを使用していました。sshを介してVMにログインするだけでしたが、Travis-CI VMでは機能しません。

Travis-ci VM Travis-Cookbooks を介してクローンを設定することにより、(ある点まで)デバッグできました。 をインストールする必要があります。 VirtualBox および Vagrant このリポジトリのクローンを作成する前に、まずコンピューター上で。

Travis-Cookbookのクローンを作成したら、フォルダーを開き、command Prompt | terminalを起動してvagrant upと入力します。 Vagrantがお使いのマシンでVM(長時間かかる場合があります))のセットアップを完了すると、vagrant sshを実行してssh経由で接続できます。

そこから、独自のリポジトリのクローンを作成する(または単にコードをVMにコピーする)必要があり、.travis.ymlファイルから手順を適用します。

12
Timka

エレゴンの答えはtravis compile、次のようなエラーがあります。

/home/travis/.rvm/rubies/Ruby-2.3.0/lib/Ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError)

次の調整で動作するようになりました:(#CHANGEDでマークされた調整。ノード環境を使用しています)

# change the image according to the language chosen in .travis.yml
# Find images at https://quay.io/organization/travisci
docker run -it quay.io/travisci/travis-node-js /bin/bash

# now that you are in the docker image, switch to the travis user
su travis

# Install a recent Ruby (default is 1.9.3) to make bundle install work
rvm install 2.3.0 
rvm use 2.3.0

# Install travis-build to generate a .sh out of .travis.yml
Sudo mkdir builds         # CHANGED
cd builds
Sudo git clone https://github.com/travis-ci/travis-build.git
cd travis-build
gem install travis
travis # to create ~/.travis
ln -s `pwd` ~/.travis/travis-build
bundle install
bundler add travis        # CHANGED
Sudo mkdir bin            # CHANGED
Sudo chmod a+w bin/       # CHANGED
bundler binstubs travis   # CHANGED

# Create project dir, assuming your project is `me/project` on GitHub
cd ~/builds
mkdir me
cd me
git clone https://github.com/me/project.git
cd project
# change to the branch or commit you want to investigate
~/.travis/travis-build/bin/travis compile > ci.sh # CHANGED
# You most likely will need to edit ci.sh as it ignores matrix and env
# In particular I needed to edit --branch=’’ to the branch name
bash ci.sh
3
ario