2016年12月19日星期一

OpenShift_017:如何定制 build 的过程?

环境:OSE 3.0.1

OpenShift 3 使用 s2i 工具把源代码 build 成 image。
在构建过程中,如果想要加入自己的一些操作怎么办?
s2i 允许你添加一些脚本,脚本可以使用任何语言编写,只要在 builder image 中可以执行。

脚本默认位置在源代码根目录下的 .sti/bin 目录下。也可以由 --scipts-url 参数指定。
脚本一共有 5 个:
(1)assemble 编译源代码,并放到适当的目录。必选。
(2)run 执行应用。必选。
(3)save-artifacts 收集所有依赖包,加速构建过程。可选。
(4)usegage 使用说明。 可选。
(5)test/run 测试 image 是否工作正常。 可选。

下面定制一个 php 的 build 过程。

[student@workstation ~]$ git clone http://workstation.pod0.example.com/php-custom
[student@workstation php-custom]$ cd php-custom
[student@workstation php-custom]$ mkdir -p .sti/bin
[student@workstation php-custom]$ cp assemble .sti/bin
修改 assemble,修改后的完整内容如下:
#!/bin/bash
set -e
echo "---> Installing application source..."
cp -Rf /tmp/src/. ./

#add code here
DATE=`date`
echo "---> Creating the built html file"
echo "Built date: $DATE" > ./built.html

if [ -f composer.json ]; then
        echo "Found 'composer.json', installing dependencies using composer.phar... "
        # Install Composer
        php -r "readfile('https://getcomposer.org/installer');" | php
        # Install App dependencies using Composer
        ./composer.phar install --no-interaction --no-ansi --no-scripts --optimize-autoloader
        if [ ! -f composer.lock ]; then
                echo -e "\nConsider adding a 'composer.lock' file into your source repository.\n"
        fi
fi

[student@workstation php-custom]$ git add .
[student@workstation php-custom]$ git commit -m "Added custom assemble process"
[student@workstation php-custom]$ git push
[student@workstation php-custom]$ cd

[student@workstation ~]$ oc login -u developer -p openshift
[student@workstation ~]$ oc new-project php-custom
[student@workstation ~]$ oc new-app http://workstation.pod0.example.com/php-custom
[student@workstation ~]$ oc build-logs php-custom-1
......
I1218 23:37:53.795201       1 docker.go:400] Attaching to container
I1218 23:37:53.798921       1 docker.go:457] Starting container
I1218 23:37:54.002178       1 docker.go:467] Waiting for container
I1218 23:37:54.052017       1 sti.go:393] ---> Installing application source...
I1218 23:37:54.062962       1 sti.go:393] ---> Creating the built html file
I1218 23:37:54.327394       1 docker.go:473] Container exited
I1218 23:37:54.327414       1 docker.go:479] Invoking postExecution function
I1218 23:37:54.327433       1 sti.go:220] No .sti/environment provided (no environment file found in application sources)
......

可以看到打出了 ---> Creating the built html file 这一行内容。

没有评论: