运行 Travis 在本地使用 docker
Running Travis locally using docker
我正在尝试 运行 使用他们的 docker 图像(Their docker images). Their instructions are here.
在我的本地计算机上构建 travis
我能够下载 运行 docker 机器,我切换到 travis
用户,并克隆我的存储库。但是我不太明白如何 运行 travis.yml 文件以便开始构建。
我已经搜索并尝试使用 travis-cli
和 travis-build
但没有成功。我愿意接受有关与 travis build 交互的建议(当然使用命令行)before/while/after 运行ning travis(用于更快的调试)。
我设法在 Travis blog 中找到了 docker 的一种解决方案。我使用 docker 包装整个项目,然后告诉 Travis 下载 docker 图像、运行 它和 运行 测试。
通过这种方式,我可以使用我的本地容器进行快速调试,并且知道我的环境是干净的,如果测试在容器上工作,他们肯定在 Travis 上工作(因为他也使用相同的容器,并且生产使用它也是)。
我设法拼凑了一个来自各种来源的 Docker 文件,其中一些是我自己的。有两张图片:一张是 travis
可用的基础,一张是 "org/repo" GitHub 项目的特定项目(确保出现的地方被替换为真实的项目名称)。它使用本地未提交的存储库版本(因此 sed
s)。 travis-local-build
启动后 运行 ./build.sh
将触发类似于 travis-ci.org.
的 CI 构建
Docker文件.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 图像(Their docker images). Their instructions are here.
在我的本地计算机上构建 travis我能够下载 运行 docker 机器,我切换到 travis
用户,并克隆我的存储库。但是我不太明白如何 运行 travis.yml 文件以便开始构建。
我已经搜索并尝试使用 travis-cli
和 travis-build
但没有成功。我愿意接受有关与 travis build 交互的建议(当然使用命令行)before/while/after 运行ning travis(用于更快的调试)。
我设法在 Travis blog 中找到了 docker 的一种解决方案。我使用 docker 包装整个项目,然后告诉 Travis 下载 docker 图像、运行 它和 运行 测试。
通过这种方式,我可以使用我的本地容器进行快速调试,并且知道我的环境是干净的,如果测试在容器上工作,他们肯定在 Travis 上工作(因为他也使用相同的容器,并且生产使用它也是)。
我设法拼凑了一个来自各种来源的 Docker 文件,其中一些是我自己的。有两张图片:一张是 travis
可用的基础,一张是 "org/repo" GitHub 项目的特定项目(确保出现的地方被替换为真实的项目名称)。它使用本地未提交的存储库版本(因此 sed
s)。 travis-local-build
启动后 运行 ./build.sh
将触发类似于 travis-ci.org.
Docker文件.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 的新手,只使用了几个小时,所以我可能理解错了一些概念。评论中的任何指针。