GithubHelp home page GithubHelp logo

aaron-23 / builder Goto Github PK

View Code? Open in Web Editor NEW

This project forked from goodrain/builder

0.0 1.0 0.0 10.28 MB

builder for rainbond

Home Page: http://www.rainbond.com

Shell 83.27% Ruby 13.63% Dockerfile 0.18% Makefile 0.10% Go 0.21% PHP 2.52% Python 0.09% Procfile 0.01%

builder's Introduction

Build Status

Builder

该项目为Rainbond项目的子项目。 借助于 DockerBuildpacks 来生成 Heroku 风格的 slug 为app提供运行环境。

组件做了哪那些事呢?

源码会通过 buildpacks 运行, 如果源码被检测是被支持的app则就会进行编译,生成gzip的压缩包形式,以备在各处运行。

本地构建 Builder 镜像

首先, 你需要有Docker,:

$ ./release.sh local

本地调试

以 Java 代码为例: code 目录保存代码 slug 目录保存slug.tgz

docker run -ti --rm --name=builder \
-e LANG_GOODRAIN_ME="https://buildpack.oss-cn-shanghai.aliyuncs.com" \
-e RUNTIME=1.8 \
-e LANGUAGE=Java-maven \
-e SLUG_VERSION=demo \
-e DEBUG_INFO=true \
-e MAVEN_MIRROR_URL="http://mirrors.163.com/maven/repository/maven-public/" \
-v $(pwd)/slug:/tmp/slug/ \
-v $(pwd)/code:/tmp/app \
goodrain.me/builder local

标准输出输入用法

当容器运行起来后,它准备通过标准输入设备接收app源码包。所以让我们通过git archive 来得到源码包:

	$ id=$(git archive master | docker run -i -a stdin goodrain.me/builder)
	$ docker wait $id
	$ docker cp $id:/tmp/slug.tgz .

我们运行 builder容器,docker等待其正常退出,然后将只做好的slug包复制到当期目录。如果我们通过 docker attach 连接到容器可以看到Heroku的build日志。当然也可以通过下面的方式 查看build的输出信息:

	$ git archive master | docker run -i -a stdin -a stdout goodrain.me/builder

我们也可以查找id,将slug复制到容器外面来,通过如下简单的方式来实现!

	$ git archive master | docker run -i -a stdin -a stdout goodrain.me/builder - > myslug.tgz

上面的 - 参数,它会发送所有build的stderr输出(在这里我们无法连接)stdout输出的内容就是slug,可以看到可以轻松的将输出重定向到一个压缩包文件。

最后, 你也可以将压缩包文件PUT到指定的htpt服务器上,http地址作为builder的参数即可,如下:

$ git archive master | docker run -i -a stdin -a stdout goodrain.me/builder http://fileserver/path/for/myslug.tgz

缓存

为了加快building速度,最好在building的时候挂载一个持久化存储目录到/tmp/cache,这样在第一次build时就可以可缓存的文件存在这个目录中,下次构建时可以直接使用。例如我希望挂载 /cache/abc 目录,构建时添加 -v /tmp/app-cache:/tmp/cache:rw 选项:

docker run -v /tmp/app-cache:/tmp/cache:rw -i -a stdin -a stdout goodrain.me/builder

注意:挂载的目录需要为 rain 属主,否则构建会出错!

Buildpacks

如你所见,builder支持heroku官方的buildpacks和众多的第三方buildpacks。当然你也可以添加自定义buildpack然后重新生成builder镜像。

基础环境

builder环境基于 cedarish 创建,它模拟了 Heroku Cedar stack 环境。所有的 buildpacks 都运行在这个镜像中,如果某些buildpack出错,需要对该镜像进行修改。

builder's People

Contributors

1909490139 avatar aaron-23 avatar barnettzqg avatar dazuimao1990 avatar dependabot[bot] avatar fanyangyang avatar golangav avatar sycki avatar yangkaa avatar yiduzui avatar ysbot-ergo avatar ysicing avatar zhouyq avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.