使用docker在本地运行Travis

使用docker在本地运行Travis,docker,containers,travis-ci,Docker,Containers,Travis Ci,我正在尝试使用他们的docker映像()在本地计算机上运行travis build。他们的指示是 我能够下载并运行docker机器,我切换到travisuser,并克隆我的repo。但是我不太明白如何运行travis.yml文件以便开始构建 我已经搜索并尝试使用traviscli和travisbuild,但没有成功。我愿意在运行travis之前/期间/之后与travis build(当然是使用命令行)进行交互(,以便更快地调试)。我设法找到了一种docker参与的解决方案。我使用docker包装

我正在尝试使用他们的docker映像()在本地计算机上运行travis build。他们的指示是

我能够下载并运行docker机器,我切换到
travis
user,并克隆我的repo。但是我不太明白如何运行travis.yml文件以便开始构建


我已经搜索并尝试使用
traviscli
travisbuild
,但没有成功。我愿意在运行travis之前/期间/之后与travis build(当然是使用命令行)进行交互(,以便更快地调试)。

我设法找到了一种docker参与的解决方案。我使用docker包装整个项目,然后告诉Travis下载docker映像,运行它,然后运行测试


通过这种方式,我可以使用本地容器进行快速调试,并且知道我的环境是干净的,如果测试在容器上工作,它们肯定在Travis上工作(因为他也使用同一个容器,生产也使用它)。

我设法拼凑了一个来自不同来源的Dockerfile,还有一些是我自己的。有两个图像:一个是可用的
travis
的基础,另一个是特定于“org/repo”GitHub项目的项目(确保用真实的项目名称替换出现的项目)。它使用本地未提交的存储库版本(因此是
sed
s)。
travis本地构建
启动并运行后,
/build.sh
将触发类似于travis-CI.org的CI构建

Dockerfile.travis-local Dockerfile.travis-local-build
免责声明:我是Docker的新手,只使用了几个小时,所以我可能弄错了一些概念。评论中的任何指针。

travis build
.travis.yml
转换为
build.sh
。你有什么问题吗?@ббчбчбббббббббббббббб@Nir,基于您应该执行的帮助
~/.travis/travis build/bin/travis compile
,但至少在我的情况下,它没有工作。我有一个不可恢复的错误,尽管我有一个干净的
.travis.yml
基于
travis lint
。链接到帖子是关于在travis中使用Docker,而不是在Docker中使用travis。是的,但这是我发现的最好的解决方案,它并不完美,而且travis在Docker中也不存在。所以我想我会分享它,那就一文不值了。
#!docker build -f Dockerfile.travis-local -t travis-local .

FROM travisci/ci-amethyst:packer-1512508255-986baf0
USER travis

WORKDIR /home/travis
RUN git clone https://github.com/travis-ci/travis-build.git

WORKDIR travis-build
RUN bash -lc "gem install travis"
RUN bash -lc travis # to create ~/.travis
RUN ln -s $(pwd) ~/.travis/travis-build
RUN bash -lc "bundle install"
#RUN bash -lc "bundler add travis"
RUN bash -lc "bundler binstubs travis"
RUN echo alias travis="~/.travis/travis-build/bin/travis" >> ~/.bashrc
#!docker build -f Dockerfile.travis-local-build -t travis-local-build . && docker run -ti travis-local-build

FROM travis-local
USER travis

WORKDIR /home/travis/build
ADD --chown=travis . org/repo

WORKDIR org/repo
RUN chmod +x gradlew
# Alias not recognized, but in interactive mode `travis compile` works without path.
RUN bash -lc "~/.travis/travis-build/bin/travis compile --no-interactive > build.sh"
RUN sed -re 's/^.*travis_wait_for_network '\''.*$/echo DISABLED &/mg' build.sh --in-place
RUN sed -re 's/^.*apt-get update.*$/echo DISABLED &/mg' build.sh --in-place
RUN sed -re 's/^.*travis_cmd git.*(fetch|reset|checkout).*$/echo DISABLED &/mg' build.sh --in-place
RUN chmod +x build.sh

WORKDIR /home/travis/build
RUN sudo ln -s org/repo/build.sh build.sh
CMD ["bash"]