繁体   English   中英

Apache项目的Gitlab CI

[英]Gitlab CI for apache project

最近我开始在 Gitlab 上工作,作为学习的一部分,我将重点放在 Gitlab CI 流程上,以用于我未来的项目。 我已经安装了 gitlab runner 和 executor 作为 docker。 到这里一切都很好。 我有一个包含 HTML 页面的网站,我将其部署在默认的 apache web 服务器路径 (/var/www/html) 中。 这是我用于构建的 .gitlab-ci.yml 文件:

image: centos:7

test:app:
 script:
   - yum install -y httpd git ssh
   - cp -R HTML/* /var/www/html/

到这里为止,构建正在正常进行,但是为了使 apache 启动并运行测试,我无法做到这一点。 当我在脚本中添加此命令时,例如:

image: centos:7

test:app:
 script:
   - yum install -y httpd git ssh
   - cp -R HTML/* /var/www/html/
   - sudo apachectl start or /usr/sbin/httpd start

...我收到“找不到命令”的错误。

如何制作 apache 实例并进行测试?

Docker 容器默认以 root 身份运行,因此无需 sudo,而且我不相信来自 Docker Hub 的 centos 映像包含该工具。

将进程作为容器运行时,您不会通过 systemd 或任何其他 init 系统启动它,您需要将其作为前台进程生成,以便 docker 附加到该进程。 它变成 pid 1,它是唯一启动的进程(没有 ssh 守护进程或您可能期望的其他进程),当它退出或被杀死时,容器将停止。 根据已经创建的 Docker Hub 上的存储库,使用 apache 执行此操作的方法是以下 Dockerfile 条目:

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

这是一个非常古老的问题,但我想答案不会受到伤害。

最近,我发现了如何在 gitlab-ci-job 中使用 apache 服务来提供存储库中的 html 文件。 诀窍是在您的 gitlab-ci-file 中启用FF_NETWORK_PER_BUILD ,并为 apache 服务器使用自定义 docker 容器,以便它在 builds-directory 中查找它需要服务的文件。

我为此写了一篇博文: Running apache and php-fpm as services in a gitlab-ci job ,包含所有细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM