วิธีการเรียกใช้ travis-ci ในเครื่อง


524

ฉันเพิ่งเข้าร่วมโครงการและฉันยังใหม่กับ travis-ci ฉันไม่ต้องการผลักดันการเปลี่ยนแปลงทุกครั้งให้เป็น .travis.yml และการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ ทุกครั้งที่ทำกับแหล่งที่มาเพื่อเรียกใช้งานการสร้าง ด้วยเจนกินส์คุณสามารถดาวน์โหลดเจนกินส์และเรียกใช้ในเครื่อง เทรวิสเสนออะไรแบบนี้หรือไม่?

หมายเหตุ: ฉันเห็น travis-ci cli และดาวน์โหลดแล้ว แต่สิ่งที่ดูเหมือนจะทำคือเรียก API ของพวกเขาซึ่งเชื่อมต่อกับ repo GitHub ของฉันดังนั้นถ้าฉันไม่ผลักก็ไม่สำคัญว่าฉันจะเริ่มใหม่ การสร้างครั้งล่าสุด


3
คุณควรจะสามารถทำการทดสอบภายในเครื่องโดยไม่ต้องเรียกใช้ Travis CI ลองดูที่ส่วน "สคริปต์" ของ .travis.yml เพื่อดูคำสั่งที่จะเรียกใช้
Konstantin Haase

69
แต่การรันการทดสอบไม่ใช่ปัญหา - บ่อยครั้งที่ Travis build ล้มเหลวเนื่องจากการตั้งค่าและติดตั้งขั้นตอนในinstall:ส่วนและอาจเป็นสิ่งเหล่านี้ที่คำถามมีความกังวลมากขึ้น
Brandon Rhodes

4
ฉันจะเพิ่มว่าในโครงการที่ซับซ้อนด้วยเหตุผลหลายประการ (เช่นการเผยแพร่จุดที่แตกต่างกันหรือการโต้ตอบของระบบของรันไทม์, การทดสอบตามเวลาจริงภายในเช่นการทดสอบการหมดเวลา ecc.) การทดสอบตัวเองบางครั้งอาจทำงานแตกต่างกันในสภาพแวดล้อมท้องถิ่น .
Circlespainter

คำตอบ:


200

กระบวนการนี้ช่วยให้คุณสามารถสร้างงาน Travis build บนคอมพิวเตอร์ของคุณได้อย่างสมบูรณ์ นอกจากนี้คุณสามารถขัดจังหวะกระบวนการได้ตลอดเวลาและดีบัก ด้านล่างเป็นตัวอย่างที่ผมได้อย่างสมบูรณ์แบบในการทำซ้ำผลของการที่งาน # 191.1 ใน PHP

ข้อกำหนดเบื้องต้น

  • คุณมี repo สาธารณะบน GitHub
  • คุณรันงานสร้างอย่างน้อยหนึ่งรายการที่ Travis
  • คุณตั้งค่าDockerไว้ในคอมพิวเตอร์

ตั้งค่าสภาพแวดล้อมการสร้าง

การอ้างอิง: https://docs.travis-ci.com/user/common-build-problems/

  1. สร้าง ID บิลด์ชั่วคราวของคุณเอง

    BUILDID="build-$RANDOM"
    
  2. ดูบันทึกการสร้างเปิดปุ่มแสดงเพิ่มเติมสำหรับข้อมูลผู้ปฏิบัติงานและค้นหาบรรทัด INSTANCE วางไว้ที่นี่แล้วเรียกใช้ (แทนที่แท็กหลังเครื่องหมายจุดคู่ด้วยเครื่องหมายโคลอนที่มีล่าสุด) :

    INSTANCE="travisci/ci-garnet:packer-1512502276-986baf0"
    
  3. เรียกใช้เซิร์ฟเวอร์ headless

    docker run --name $BUILDID -dit $INSTANCE /sbin/init
    
  4. เรียกใช้ไคลเอนต์ที่แนบมา

    docker exec -it $BUILDID bash -l
    

เรียกใช้งาน

ตอนนี้คุณอยู่ในสภาพแวดล้อมของเทรวิส วิ่งsu - travisเพื่อเริ่มต้น

ขั้นตอนนี้ถูกกำหนดไว้อย่างดี แต่มีความน่าเบื่อและเป็นคู่มือมากขึ้น คุณจะพบทุกคำสั่งที่ Travis ทำงานในสภาพแวดล้อม เมื่อต้องการทำสิ่งนี้ค้นหาทุกอย่างในคอลัมน์ด้านขวาซึ่งมีแท็ก0.03sดังนี้

ทางด้านซ้ายคุณจะเห็นคำสั่งจริง เรียกใช้คำสั่งเหล่านั้นตามลำดับ

ผลลัพธ์

ตอนนี้เป็นเวลาที่ดีในการรันhistoryคำสั่ง คุณสามารถรีสตาร์ทกระบวนการและเล่นซ้ำคำสั่งเหล่านั้นเพื่อรันการทดสอบเดียวกันกับฐานรหัสที่อัปเดต

  • หาก repo ของคุณมีความเป็นส่วนตัว: ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"แล้วcat ~/.ssh/id_rsa.pubและคลิกที่นี่เพื่อเพิ่มคีย์
  • FYI: คุณสามารถgit pullจาก Docker ภายในเพื่อโหลดคอมมิทจากกล่อง dev ของคุณก่อนที่จะผลักดันพวกเขาไปที่ GitHub
  • หากคุณต้องการเปลี่ยนคำสั่งที่เทรวิสเรียกใช้มันเป็นความรับผิดชอบของคุณที่จะต้องพิจารณาว่าการแปลนั้นกลับไปสู่การทำงาน.travis.ymlอย่างไร
  • ฉันไม่รู้วิธีทำความสะอาดสภาพแวดล้อม Docker มันดูซับซ้อนบางทีหน่วยความจำรั่ว

22
ในบันทึกภายใต้ฉันไม่สามารถเห็นภาพเส้นทางนักเทียบท่าที่ถูกต้องเพียงบางอย่างเช่นinstance: travis-ci-garnet-trusty-1512502259-986baf0พยายามtravisci/ci-garnet:$INSTANCEแล้วtravisci/$INSTANCE- ไม่ทำงานไม่สามารถหาภาพได้ เพียงแค่ใช้ postfix (เช่นtravisci/ci-garnet:packer-1512502259-986baf0) ก็ใช้งานไม่ได้
Roy Shilkrot

4
ฉันประสบปัญหาเดียวกัน - ไม่สามารถดาวน์โหลดภาพที่กล่าวถึงในอินสแตนซ์ข้อมูลได้ นอกจากนี้ผมได้พยายามtravisci/ci-garnet:packer-1512502276-986baf0ภาพซึ่งเป็นข้อเสนอแนะในเอกสารเทรวิส อันนี้ใช้ได้ แต่ล้าสมัยแล้ว ตัวอย่างเช่น CMake เก่ากว่าที่มีใน Travis ไม่มีci-garnetการอัปโหลดเวอร์ชันใหม่ไปยังDocker Hubในช่วงหกเดือนที่ผ่านมาในขณะที่ก่อนหน้านี้มีการอัปเดตมากมายต่อเดือน
skalee

7
ลิงก์อ้างอิงของคุณใช้งานไม่ได้อีกต่อไป - เช่นส่วน 'การเรียกใช้ภาพภาชนะตามนักเทียบท่า' ถูกลบออกจากหน้านั้น บางทีความแตกต่างในผลลัพธ์ของอินสแตนซ์อาจเกิดจากการไม่ได้sudo: requiredตั้งค่าหรือ ในงานสร้างของฉันฉันเห็นtravis-ci-sardonyx-xenial-1547455603-2c98a19ว่าฉันสามารถแมปกับtravisci / ci-sardonyx ได้อย่างไร: packer-1547455648-2c98a19
maxschlepzig

4
สำหรับฉันที่ใช้รุ่นล่าสุดของ travisci / ci-garnet บนศูนย์กลางนักเทียบท่า (travisci / ci-garnet: packer-1515445631-7dfb2e1) ทำอุบาย
taleb

3
หากคุณกำลังทำงานในกรณีเฉพาะภาษาของเทรวิสคุณยังสามารถใช้ภาพเฉพาะเช่นงูหลามหนึ่ง
Zaccharie Ramzi

162

Travis-ci เสนอโครงสร้างพื้นฐานแบบตู้คอนเทนเนอร์ใหม่ที่ใช้นักเทียบท่า สิ่งนี้มีประโยชน์มากหากคุณกำลังพยายามแก้ไขปัญหาเทรวิส - ซีโดยการทำซ้ำภายในเครื่อง นี้นำมาจากเทรวิส CI ของเอกสาร

การแก้ไขปัญหาเฉพาะที่ในรูปภาพ Docker

หากคุณมีปัญหาในการติดตามปัญหาที่แน่นอนในการสร้างมันมักจะช่วยในการเรียกใช้งานบิลด์ ในการทำเช่นนี้คุณจะต้องใช้โครงสร้างพื้นฐานของตู้สินค้าของเรา (เช่นมีsudo: falseในเครื่องของคุณ.travis.yml) และเพื่อทราบว่าภาพ Docker ที่คุณใช้บน Travis CI

เรียกใช้อิมเมจจากฐานคอนเทนเนอร์

  1. ดาวน์โหลดและติดตั้งหางเครื่องยนต์
  2. เลือกภาพจากหาง Hub ci-rubyหากคุณไม่ได้ใช้เลือกภาพเฉพาะภาษา เปิดเทอร์มินัลและเริ่มเซสชันนักเชื่อมต่อแบบโต้ตอบโดยใช้ URL รูปภาพ:

    docker run -it travisci/ubuntu-ruby:18.04 /bin/bash
    
  3. เปลี่ยนเป็นtravisผู้ใช้:

    su - travis
    
  4. โคลนที่เก็บ git ของคุณลงใน/โฟลเดอร์ของภาพ
  5. ติดตั้งการพึ่งพาใด ๆ ด้วยตนเอง
  6. รันคำสั่งการสร้าง Travis CI ด้วยตนเอง

6
@DustinGraham ซึ่งขึ้นอยู่กับวิธีการสร้างโครงการโดย Travis CI ที่ได้รับการกำหนดค่าให้สร้าง ในโครงการที่ผมทำงานในการสร้างคำสั่งได้รับการกำหนดค่าใน.travis.ymlไฟล์ภายใต้สคริปต์:make testย่อยและเป็น
Scott McLeod

102
> Manually install any dependencies ฟังดูเหมือนเป็นวิธีที่ดีที่จะจบลงด้วยผลลัพธ์ที่ไม่ตรงกับ Travis รุ่นปกติ
Gerry

6
@Gerry โดยการติดตั้งการพึ่งพาตนเองฉันถือว่าเขาหมายถึงการรันคำสั่งที่คุณมีในไฟล์กำหนดค่าเทรวิสของคุณที่จัดการการติดตั้งการพึ่งพา ดังนั้นมันจึงเป็นคำสั่งเดียวกันที่ Travis CI กำลังทำอยู่ไม่ใช่แค่อัตโนมัติ
Chathan Driehuys

8
ฉันรู้สึกว่านี่เป็นคำตอบสำหรับคำถามของฉัน แต่Manually tun your Travis CI build command... ชอบอะไรนะ? อย่างไร? มันคืออะไร? ฉันมี.travis.ymlไฟล์ ฉันพยายามสร้างเทรวิสแต่ก็สิ้นตาย
Brandon

2
@Brandon ภายใน .travis.yml ของคุณมักจะมีส่วนย่อยของสคริปต์ที่ถูกเรียกโดย Travis เพื่อสร้างแหล่งที่มาของคุณ จุดของคำตอบนี้คือการตั้งค่าสภาพแวดล้อมในท้องถิ่นที่เป็นเหมือนหนึ่งที่เทรวิสจะได้รับการดำเนินงานใน ต่อไปคุณจะเรียกใช้คำสั่งเหล่านี้ด้วยตัวคุณเองแทนที่จะใช้เทรวิสเพื่อเรียกใช้คำสั่งเหล่านี้ให้คุณ วิธีนี้คุณสามารถเห็นผลของการเรียกใช้แต่ละคำสั่งด้วยตัวคุณเองภายในสภาพแวดล้อมนี้ - ซึ่งสามารถให้ข้อมูลเชิงลึกเกี่ยวกับปัญหาการสร้างที่หนึ่งอาจมีที่เทรวิสที่มิฉะนั้นจะไม่สามารถเข้าถึงได้
Scott McLeod

86

UPDATE: ตอนนี้ผมมีครบวงจรที่สมบูรณ์แบบ all-in-one คำตอบดูhttps://stackoverflow.com/a/49019950/300224 ใช้เวลาเพียง 3 ปีในการคิดออก!

ตามเอกสารของเทรวิส: https://github.com/travis-ci/travis-ciมีการผสมผสานของโครงการที่สมรู้ร่วมคิดในการส่งมอบบริการเว็บ Travis CI ที่เรารู้จักและชื่นชอบ ชุดย่อยของโครงการต่อไปนี้ปรากฏขึ้นเพื่ออนุญาตการmake testทำงานในท้องถิ่นโดยใช้.travis.ymlในโครงการของคุณ:

เทรวิสสร้าง

travis-buildสร้างสคริปต์การสร้างสำหรับแต่ละงาน ใช้การกำหนดค่าจาก.travis.ymlไฟล์และสร้างbashสคริปต์ที่จะทำงานในสภาพแวดล้อมการสร้างโดย travis-workers

เทรวิส-ตำรา

travis-cookbooksดำรงตำแหน่ง เชฟตำราที่ใช้ในการจัดหาการสร้างสภาพแวดล้อม

เทรวิสงาน

travis-workersมีหน้าที่เรียกใช้งาน build script ในสภาพแวดล้อมที่สะอาด มันสตรีมเอาท์พุทบันทึกไปยังเทรวิส - ล็อกและผลักดันการอัพเดตสถานะ

(โครงการย่อยอื่น ๆ มีหน้าที่สื่อสารกับ GitHub เว็บอินเตอร์เฟสอีเมลและ API ของพวกเขา)


4
ฉันเชื่อว่าโครงการที่จะใช้เพียงสามองค์ประกอบและการmake testทำงานจะดีมาก แสดงความคิดเห็นหากคุณต้องการทำงานกับฉันด้วย
William Entriken

4
มีหัวข้อเกี่ยวกับเรื่องนี้เป็นเรื่องเกี่ยวกับการซื้อคืนเทรวิส
hurrymaplelad

5
GitHub หยุดทำงานในวันนี้เพราะ DDOS github.com/blog/1981-large-scale-ddos-attack-on-github-comนี่คือเหตุผลที่เราต้องทำการทดสอบในพื้นที่
William Entriken

20
ฉันจะติดตั้งและเรียกใช้จริงได้travis-buildอย่างไร? ไม่มีคำแนะนำใน repo
DisgruntledGoat

1
@sindhus ไม่ขอโทษ ทางออกเดียวที่ฉันพบคือการแยกรายการซื้อคืนทำการเปลี่ยนแปลงต่อไปจนกว่า Travis ทำงานได้จากนั้นคัดลอกไฟล์กำหนดค่าไปยัง repo หลักและทำการคอมมิท แก้ไข: ลองนึกถึงมันคุณสามารถใช้สาขาชั่วคราวสำหรับสิ่งนั้นลบสาขาระยะไกลเมื่อเสร็จแล้วและรีบูต / สควอชให้คอมมิชชันหนึ่ง
DisgruntledGoat

23

คล้ายกับของ Scott McLeod แต่สิ่งนี้ก็สร้างสคริปต์ทุบตีเพื่อเรียกใช้ขั้นตอนจาก .travis.yml

การแก้ไขปัญหาเฉพาะที่ใน Docker ด้วยสคริปต์ Bash ที่สร้างขึ้น

# choose 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 - 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
# to create ~/.travis
travis version
ln -s `pwd` ~/.travis/travis-build
bundle install

# Create project dir, assuming your project is `AUTHOR/PROJECT` on GitHub
cd ~/builds
mkdir AUTHOR
cd AUTHOR
git clone https://github.com/AUTHOR/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

travis # to create ~/.travisผมสามารถที่จะทำตามขั้นตอนลงไป เทรวิสต้องการคำสั่งเพื่อดำเนินการ
Eivind GussiåsLøkseth

3
sudo - travissu - travisควรจะเป็น
Berend de Boer

1
เมื่อทำขั้นตอนการคอมไพล์ฉันได้รับ:/home/travis/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError)
Berend de Boer

2
@BerenddeBoer: หากคุณยังไม่ได้คิดเรื่องนี้ที่นี่เป็นวิธีการกำจัดของปัญหา cd ~/.travis/travis-build/ bundle install bundler add travis bundler binstubs travis cd <REPO_YOU_WANT_TO_RUN_COMPILE_IN> ~/.travis/travis-build/bin/travis compile
Venkateshwaran Selvaraj

2
รวบรวมเทรวิสหรือไม่ถูกต้องอีกต่อไป? ฉันเห็นคอมไพล์คำสั่งที่ไม่รู้จัก: / travis -h ไม่แสดง: ////
Dawid Drozd

16

ใช้wwtd (สิ่งที่เทรวิสต้องทำ)ทับทิมพลอยเพื่อทำการทดสอบบนเครื่องท้องถิ่นของคุณอย่างคร่าวๆ

มันจะสร้างบิวด์เมทริกใหม่และเรียกใช้การตั้งค่าแต่ละอย่างซึ่งยอดเยี่ยมในการตั้งค่าการตรวจสอบสติก่อนที่จะผลักดัน

gem i wwtd
wwtd

หมายเหตุสำคัญ: rubyสนับสนุนเท่านั้น
msangel

ควรเป็นไปได้ที่จะเพิ่มการสนับสนุนสำหรับภาษาอื่น ๆ เช่นกันเพราะมัน shells เพื่อเรียกใช้ขั้นตอน
ทำรายได้

ไม่สบาย ใช้งานได้ดี! ขอบคุณ!
ppetraki

14

TL; DRใช้ภาพที่ระบุhttps://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in-a-docker-imageร่วมกับhttps://github.com/ เทรวิส-CI


แก้ไข 2019-12-06

#troubleshooting-locally-in-a-docker-imageส่วนก็ถูกแทนที่ด้วย#running-builds-in-debug-modeซึ่งยังอธิบายวิธีการSSH กับงานทำงานในโหมดการแก้ปัญหา

แก้ไข 2019-07-26

#troubleshooting-locally-in-a-docker-imageส่วนนี้ไม่ได้เป็นส่วนหนึ่งของเอกสารอีกต่อไป นี่คือเหตุผล


แม้ว่ามันจะยังอยู่ในประวัติคอมไพล์: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 https://github.com/travis-ci/docs-travis-ci-com/pull/2193

มองหา (ค่อนข้างเก่าไม่สามารถหาใหม่กว่า) เวอร์ชั่นภาพที่: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661



ฉันต้องการตรวจสอบว่าทำไมหนึ่งในการทดสอบในงานสร้างของฉันล้มเหลวเนื่องจากข้อผิดพลาดที่ฉันไม่ได้รับภายในเครื่อง

ทำงาน

สิ่งที่ใช้งานได้จริงคือการใช้ภาพที่ระบุในการแก้ไขปัญหาเฉพาะที่ในหน้าเอกสารภาพนักเทียบท่า ในกรณีของฉันมันเป็นtravisci/ci-garnet:packer-1512502276-986baf0ในกรณีของฉันมันเป็น

ผมสามารถที่จะเพิ่มtravise compileขั้นตอนต่อไปอธิบายที่https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli

dm@z580:~$ docker run --name travis-debug -dit travisci/ci-garnet:packer-1512502276-986baf0 /sbin/init
dm@z580:~$ docker images
REPOSITORY                       TAG                          IMAGE ID            CREATED             SIZE
travisci/ci-garnet               packer-1512502276-986baf0    6cbda6a950d3        11 months ago       10.2GB
dm@z580:~$ docker exec -it travis-debug bash -l
root@912e43dbfea4:/# su - travis
travis@912e43dbfea4:~$ cd builds/
travis@912e43dbfea4:~/builds$ git clone https://github.com/travis-ci/travis-build
travis@912e43dbfea4:~/builds$ cd travis-build
travis@912e43dbfea4:~/builds/travis-build$ mkdir -p ~/.travis
travis@912e43dbfea4:~/builds/travis-build$ ln -s $PWD ~/.travis/travis-build
travis@912e43dbfea4:~/builds/travis-build$ gem install bundler
travis@912e43dbfea4:~/builds/travis-build$ bundle install --gemfile ~/.travis/travis-build/Gemfile
travis@912e43dbfea4:~/builds/travis-build$ bundler binstubs travis
travis@912e43dbfea4:~/builds/travis-build$ cd ..
travis@912e43dbfea4:~/builds$ git clone --depth=50 --branch=master https://github.com/DusanMadar/PySyncDroid.git DusanMadar/PySyncDroid
travis@912e43dbfea4:~/builds$ cd DusanMadar/PySyncDroid/
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ ~/.travis/travis-build/bin/travis compile > ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ sed -i 's,--branch\\=\\\x27\\\x27,--branch\\=master,g' ci.sh
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ bash ci.sh

ทุกอย่างจาก .travis.ymlถูกดำเนินการตามที่คาดไว้ (ติดตั้งการอ้างอิง, ทดสอบการทำงาน, ... )

โปรดทราบว่าก่อนที่จะทำงานbash ci.shฉันต้องเปลี่ยน--branch\=\'\'\เป็น--branch\=master\(ดูsed -i ...คำสั่งที่สองเป็นคำสั่งสุดท้าย) ในci.shใน

หากไม่ได้ผลคำสั่งร้องจะช่วยในการระบุหมายเลขบรรทัดเป้าหมายและคุณสามารถแก้ไขบรรทัดด้วยตนเอง

travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$ cat ci.sh | grep -in branch
840:    travis_cmd git\ clone\ --depth\=50\ --branch\=\'\'\ https://github.com/DusanMadar/PySyncDroid.git\ DusanMadar/PySyncDroid --echo --retry --timing
889:export TRAVIS_BRANCH=''
899:export TRAVIS_PULL_REQUEST_BRANCH=''
travis@912e43dbfea4:~/builds/DusanMadar/PySyncDroid$

ใช้งานไม่ได้

ปฏิบัติตามคำตอบที่ยอมรับแล้วสำหรับคำถามนี้ แต่ไม่พบภาพ ( travis-ci-garnet-trusty-1512502259-986baf0) ที่กล่าวถึงโดยinstanceที่https://hub.docker.com/u/travisci/ https://hub.docker.com/u/travisci/

รูปร่างของผู้ปฏิบัติงานรุ่นที่ชี้ไปยังเทรวิส-CI / ผู้ปฏิบัติงานกระทำและเทรวิงานการติดตั้งการอ้างอิงquay.io/travisci/เป็นสตรีภาพ ดังนั้นฉันจึงลอง

dm@z580:~$ docker run -it -u travis quay.io/travisci/travis-python /bin/bash
travis@370c23a773c9:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:   precise
travis@370c23a773c9:/$
dm@z580:~$ docker images 
REPOSITORY                       TAG                          IMAGE ID            CREATED             SIZE
quay.io/travisci/travis-python   latest                       753a216d776c        3 years ago         5.36GB

ไม่น่าเชื่อถือแน่นอน (Ubuntu 14.04) และไม่เล็ก


1
วิธีการทำงานก็ทำเพื่อฉัน แต่นอกจากนี้ผมต้องตั้งค่าสภาพแวดล้อมเพื่อประโยชน์ของhttp_proxy git cloneเมื่อเริ่มต้นgit cloneพ่น gnutls_handshakeข้อยกเว้น ดังนั้นฉันจึงขอบังคับใช้การติดตั้งbundlerเวอร์ชันเฉพาะgem install bundler -v 1.16.6เพราะbundler binstubs travisล้มเหลวก่อนหน้านี้ ปรับปรุงbundlerรุ่นที่ต้องการด้วยการเรียกใช้ 'ชุดข้อมูลเทรวิส `
palik

1
นี่เป็นคำตอบที่ดีที่สุดที่นี่เพราะมันจะอธิบายวิธีการรวบรวมtravis.ymlเป็นเชลล์สคริปต์ที่ปฏิบัติการได้ ทำได้ดีมาก! การปรับปรุงเพียงอย่างเดียวนี้จะเป็นกลไกที่จะหลีกเลี่ยงการแทนที่สตริงด้วยตนเองเมื่อระบุสาขาที่จะสร้าง
Ben Johnson

1
@BenJohnson ฉันได้เพิ่มsedคำสั่งที่ระบุจุดที่คุณทำ bash ci.shดูคำสั่งก่อนที่จะใช้
DušanMaďar

ลิงก์ * การแก้ไขปัญหาเฉพาะที่ในรูปภาพ Docker * ไม่สามารถใช้งานได้อีกต่อไป
juliangonzalez

1
@juliangonzalez แก้ไขด้วยข้อมูลที่ดีที่สุดฉันสามารถขุดได้
DušanMaďar

7

คุณสามารถลองใช้Trevorซึ่งใช้ Docker เพื่อเรียกใช้งานเทรวิสของคุณ

จากคำอธิบาย:

ฉันมักจะต้องทำการทดสอบสำหรับ Node.js หลายรุ่น แต่ฉันไม่ต้องการสลับรุ่นด้วยตนเองโดยใช้ n / nvm หรือส่งรหัสไปที่ Travis CI เพื่อทำการทดสอบ

นั่นเป็นเหตุผลที่ฉันสร้าง Trevor มันอ่าน .travis.yml และทำการทดสอบในทุกเวอร์ชั่นที่คุณร้องขอเช่นเดียวกับ Travis CI ตอนนี้คุณสามารถทดสอบก่อนที่จะดันและรักษาประวัติคอมไพล์ของคุณ


2
FYI สำหรับผู้ที่ต้องการลองใช้ ... ไม่รองรับ PHP
Craig Wayne

2
ดูเหมือนว่าจะเป็นเฉพาะสำหรับ node.js จะเป็นการดีที่จะขยายออกไป
João Neto

6

ฉันไม่แน่ใจว่าอะไรคือสาเหตุดั้งเดิมของคุณในการใช้งานเทรวิสในพื้นที่ถ้าคุณแค่ต้องการที่จะเล่นกับมันแล้วหยุดอ่านที่นี่เป็นมันไม่เกี่ยวข้องสำหรับคุณ

หากคุณมีประสบการณ์กับโฮสต์เทรวิสและคุณต้องการรับประสบการณ์เดียวกันในดาต้าเซ็นเตอร์ของคุณเองอ่านต่อ

ตั้งแต่ธ.ค. 2557 Travis CI ให้บริการเวอร์ชันภายในองค์กร

http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/

การกำหนดราคาเป็นส่วนหนึ่งของบทความเช่นกัน:

การออกใบอนุญาตจะทำต่อที่นั่งโดยที่ใบอนุญาตทุกใบมีผู้ใช้ 20 คน ราคาเริ่มต้นที่ 6,000 ดอลลาร์ต่อใบอนุญาตซึ่งรวมถึงผู้ใช้ 20 คนและบิลด์ 5 รายการพร้อมกัน มีตัวเลือกพรีเมี่ยมพร้อมบิลด์ไม่ จำกัด สำหรับ $ 8,500


3
ฉันก็สนใจเรื่องนี้เช่นกัน ฉันพยายามกำหนดค่างานทราวิสสำหรับโครงการที่น่าอึดอัดใจจริงๆ ความมุ่งมั่นเหล่านั้นทั้งหมดในวันที่ 26 เม.ย. มีการเล่นซอกับไฟล์ .travis.yml ( github.com/gregturn/issue-aggregator/commits/master ) ฉันหวังว่าจะมีวิธีที่ง่ายกว่าในการแก้ไขการกำหนดค่าโดยไม่ต้องผลักดันการแก้ไขทุก ๆ ครั้ง
gregturn

4
@gregturn วิธีแก้ปัญหาที่น่าเกลียด แต่ลดความเครียดที่ฉันเกิดขึ้นคือการโคลน repo ของฉันไปเป็น repo GitHub ตัวที่สอง ดังนั้น repo whackamoleเป็นสำเนาของโครงการที่ฉันต้องการจะทำงานจริง ๆ และฉันสามารถตั้งค่างานสร้างเทรวิสชั่วคราวสำหรับโครงการนั้นในขณะที่ฉันทำงานกับข้อบกพร่องของการสร้างอัตโนมัติ เมื่อฉันถูกตอกตะปูให้เอา "โอ๊ะ" หลายสิบตัวออกไปแล้วผลักไปที่ repo ของ GitHub ตัวจริง (และอาจลบwhackamolerepo GitHub และงานเทรวิสที่เกี่ยวข้อง)
tripleee

3
สงสัยว่าค่าธรรมเนียมใบอนุญาต $ 6,000 เป็นเพียงครั้งเดียวหรือรายปี
Erik

0

เป็นไปได้ที่ SSH ไปยังสภาพแวดล้อม Travis CI ผ่านโฮสต์การตีกลับ คุณลักษณะนี้ไม่ได้สร้างใน Travis CI แต่สามารถทำได้โดยขั้นตอนต่อไปนี้

  1. บนโฮสต์ตีกลับให้สร้างtravisผู้ใช้และตรวจสอบให้แน่ใจว่าคุณสามารถ SSH ได้
  2. ใส่บรรทัดเหล่านี้ในscript:ส่วนของคุณ.travis.yml(เช่นตอนท้าย)

    - 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 travis@$bouncehostip
    

    $bouncehostipIP / โฮสต์ของโฮสต์การตีกลับของคุณอยู่ที่ไหนและ$sshpasswordเป็นรหัสผ่าน SSH ที่คุณกำหนด ตัวแปรเหล่านี้สามารถเพิ่มเป็นตัวแปรที่เข้ารหัสได้

  3. ผลักดันการเปลี่ยนแปลง คุณควรจะสามารถเชื่อมต่อ SSH กับโฮสต์การตีกลับของคุณ

ที่มา: เชลล์เข้าไปเทรวิส CI รูปร่างสิ่งแวดล้อม


นี่คือตัวอย่างเต็มรูปแบบ:

# use the new container infrastructure
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

ดู: c-mart/travis-shellที่ GitHub


ดูเพิ่มเติม: วิธีสร้างสภาพแวดล้อมการสร้าง travis-ci สำหรับการดีบัก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.