使用 docker 在本地运行 Travis



我正在尝试使用他们的 docker 镜像(他们的 docker 镜像)在我的本地机器上运行 travis build。他们的指示在这里。

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

我已经搜索并尝试使用travis-clitravis-build但没有成功。我愿意接受有关在运行 travis 之前/期间/之后与 travis 构建(当然使用命令行)交互的建议(以便更快地调试)。

我设法从各种来源拼凑了一个 Dockerfile 和一些我自己的文件。有两个映像:一个用于可用的travis基础,另一个特定于"org/repo"GitHub 项目的项目(确保将出现项替换为真实的项目名称)。它使用本地未提交的存储库版本(因此sed s)。travis-local-build启动并运行后./build.sh将触发类似于 travis-ci.org 的 CI 生成。

Dockerfile.travis-local

#!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

Dockerfile.travis-local-build

#!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"]

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

我设法在特拉维斯博客中找到了一种使用 docker 的解决方案。我使用 docker 来包装整个项目,然后告诉 Travis 下载 docker 镜像,运行它并运行测试。

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

最新更新