Concourse CI: 项目结构
Concourse CI: project structure
场景:
一个多月以来,我一直在努力实现一个 concourse ci 管道,而我的单个 yml
文件变得有点安静。我知道最好将管道分解成几个文件并在您的管道中引用它们。
问题:
有人可以提供构建您的大厅 ci 管道的最佳实践吗?
我的思考过程:
offering-pipeline
|
|_ ci:
| |
| |_ images:
| | |_ Dockerfile
| |
| |_ misc:
| | |_ python-requirements.txt
| |
| |_ ci-pipeline.yml
|
|_ project:
|_ project-pipeline.yml
|
|_ jobs
|
|_ scripts :
|
|_ build:
| |_ build_xyz.
|
|_ deploy:
| |_ deploy_xyz.
|
|_ test:
| |_ test_xyz.
|
|_ publish:
|_ publish_xyz.
谢谢,
-安倍.
第一步是将所有任务提取到文件中。每个管道都有一个任务文件夹、一个模板文件夹和一个脚本文件夹。在这些之上(在根目录中)我有一个 pipeline.yml 包含管道根结构,以及一个 Makefile 和 Makefile.constants 用于在大厅中设置管道..
因为我没有那么多构建、测试、发布任务,所以我对它们有一个命名约定,而不是每个文件夹中有 1-4 个文件的负载。
我在 atom 中的管道文件夹中的树:
注意:pipeline.yml 文件仍然很长(约 500 行)
Makefile,${} 来自包含的内容文件:
#Setup Makefile constants for urls etc:
include ../Makefile.constants
#Setup Makefile constants for repo:
include ./Makefile.constants
set-pipe:
fly -t dev_refactor set-pipeline \
--config pipeline.yml \
--pipeline ${PIPELINE} \
--var "client-repo=${CLIENT_REPO_URI}" \
--var "client-branch=${CLIENT_BRANCH}" \
--var "server-repo=${SERVER_REPO_URI}" \
--var "server-branch=${SERVER_BRANCH}" \
--var "private-key=$$(cat ~/.ssh/id_rsa_no_passphrase)" \
--var "docker-registry=${DOCKER_REGISTRY}" \
--var "docker-registry-cert=$$(cat ../keys/docker-registry/docker-registry.crt)" \
--var "docker-registry-server-dist=${DOCKER_REGISTRY}/server" \
--var "docker-registry-client-dist=${DOCKER_REGISTRY}/client" \
--var "docker-registry-node=${DOCKER_REGISTRY}/node" \
--var "docker-registry-maven=${DOCKER_REGISTRY}/maven" \
--var "docker-registry-protractor=${DOCKER_REGISTRY}/protractor" \
--var "docker-registry-npm-cache=${DOCKER_REGISTRY}/npm-cache" \
--var "docker-registry-soap=${DOCKER_REGISTRY}/soap-ui" \
--var "reports-server=${REPORTS_SERVER}" \
--var "concourse-url=${CONCOURSE_URL}" \
--var "nexus-url=${NEXUS_URL}"
.PHONY: set-pipe
destroy-pipe:
# Destroy the pipeline in concourse
fly -t dev_refactor destroy-pipeline \
--pipeline ${PIPELINE}
.PHONY: destroy-pipe
场景:
一个多月以来,我一直在努力实现一个 concourse ci 管道,而我的单个 yml
文件变得有点安静。我知道最好将管道分解成几个文件并在您的管道中引用它们。
问题:
有人可以提供构建您的大厅 ci 管道的最佳实践吗?
我的思考过程:
offering-pipeline
|
|_ ci:
| |
| |_ images:
| | |_ Dockerfile
| |
| |_ misc:
| | |_ python-requirements.txt
| |
| |_ ci-pipeline.yml
|
|_ project:
|_ project-pipeline.yml
|
|_ jobs
|
|_ scripts :
|
|_ build:
| |_ build_xyz.
|
|_ deploy:
| |_ deploy_xyz.
|
|_ test:
| |_ test_xyz.
|
|_ publish:
|_ publish_xyz.
谢谢,
-安倍.
第一步是将所有任务提取到文件中。每个管道都有一个任务文件夹、一个模板文件夹和一个脚本文件夹。在这些之上(在根目录中)我有一个 pipeline.yml 包含管道根结构,以及一个 Makefile 和 Makefile.constants 用于在大厅中设置管道..
因为我没有那么多构建、测试、发布任务,所以我对它们有一个命名约定,而不是每个文件夹中有 1-4 个文件的负载。
我在 atom 中的管道文件夹中的树:
注意:pipeline.yml 文件仍然很长(约 500 行)
Makefile,${} 来自包含的内容文件:
#Setup Makefile constants for urls etc:
include ../Makefile.constants
#Setup Makefile constants for repo:
include ./Makefile.constants
set-pipe:
fly -t dev_refactor set-pipeline \
--config pipeline.yml \
--pipeline ${PIPELINE} \
--var "client-repo=${CLIENT_REPO_URI}" \
--var "client-branch=${CLIENT_BRANCH}" \
--var "server-repo=${SERVER_REPO_URI}" \
--var "server-branch=${SERVER_BRANCH}" \
--var "private-key=$$(cat ~/.ssh/id_rsa_no_passphrase)" \
--var "docker-registry=${DOCKER_REGISTRY}" \
--var "docker-registry-cert=$$(cat ../keys/docker-registry/docker-registry.crt)" \
--var "docker-registry-server-dist=${DOCKER_REGISTRY}/server" \
--var "docker-registry-client-dist=${DOCKER_REGISTRY}/client" \
--var "docker-registry-node=${DOCKER_REGISTRY}/node" \
--var "docker-registry-maven=${DOCKER_REGISTRY}/maven" \
--var "docker-registry-protractor=${DOCKER_REGISTRY}/protractor" \
--var "docker-registry-npm-cache=${DOCKER_REGISTRY}/npm-cache" \
--var "docker-registry-soap=${DOCKER_REGISTRY}/soap-ui" \
--var "reports-server=${REPORTS_SERVER}" \
--var "concourse-url=${CONCOURSE_URL}" \
--var "nexus-url=${NEXUS_URL}"
.PHONY: set-pipe
destroy-pipe:
# Destroy the pipeline in concourse
fly -t dev_refactor destroy-pipeline \
--pipeline ${PIPELINE}
.PHONY: destroy-pipe