Concourse CI是一款CI/CD工具,它的魅力在于极简设计,被广泛应用于Cloud Foundry各个模块的CI/CD。阿里云也推出了CI工具CodePipeline,开箱即用,推荐试用。
Concourse CI官方提供了标准的Docker镜像,在阿里云容器服务部署一套 Concourse CI应用是很轻松的一件事儿。
准备Docker集群
- 首先,在阿里云容器服务控制台创建一个集群。简单起见,这里节点数为1,网络类型为经典网络。
集群创建过程大约几分钟,成功后的状态如下图:
- 然后需要开启8080端口的入网权限:
- 接下来,SSH到节点上,创建容器目录,脚本如下:
- -p keys/web keys/worker
ssh-keygen -t rsa -f ./keys/web/tsa_host_key -N ''
ssh-keygen -t rsa -f ./keys/web/session_signing_key -N ''
ssh-keygen -t rsa -f ./keys/worker/worker_key -N '' - ./keys/worker/worker_key.pub ./keys/web/authorized_worker_keys
./keys/web/tsa_host_key.pub ./keys/worker
部署Concourse CI
- 在容器服务控制台创建应用, 填写基本信息如下图:
-
用compose模板来创建应用,模板如下:
version: '2' services: concourse-db: image: postgres:9.5 privileged: true environment: POSTGRES_DB: concourse POSTGRES_USER: concourse POSTGRES_PASSWORD: changeme PGDATA: /database concourse-web: image: concourse/concourse links: [concourse-db] command: web privileged: true depends_on: [concourse-db] ports: ["8080:8080"] volumes: ["/keys/web:/concourse-keys"] restart: unless-stopped # required so that it retries until conocurse-db comes up environment: CONCOURSE_BASIC_AUTH_USERNAME: concourse CONCOURSE_BASIC_AUTH_PASSWORD: changeme CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}" CONCOURSE_POSTGRES_HOST: concourse-db CONCOURSE_POSTGRES_USER: concourse CONCOURSE_POSTGRES_PASSWORD: changeme CONCOURSE_POSTGRES_DATABASE: concourse concourse-worker: image: concourse/concourse privileged: true links: [concourse-web] depends_on: [concourse-web] command: worker volumes: ["/keys/worker:/concourse-keys"] environment: CONCOURSE_TSA_HOST: concourse-web dns: 8.8.8.8
- 在创建应用之前需要填写模板参数,
CONCOURSE_EXTERNAL_URL,值为 http://your-ecs-public-ip:8080
,如下图所示:
- 创建之后会启动3个服务,DB、Web和Worker,如下图:
- 至此,Concourse CI部署完成,在浏览器输入
http://your-ecs-public-ip:8080
即可访问。用户名密码是concourse/changeme
第一个CI任务(Hello world)
安装CLI客户端,在上一步浏览器中下载对应您操作系统的CLI. 本例以ECS(ubuntu16.04),安装之后可以查看一下版本
-v
3.4.0
连接Target, 用户名密码是
concourse/changeme
- -t lite login -c http://your-ecs-public-ip:8080
- in to team 'main'
username: concourse
password: saved
-
一个简单的配置模板, 保存为hello.yml
jobs: - name: hello-world plan: - task: say-hello config: platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: path: echo args: ["Hello, world!"]
注册任务
-t lite set-pipeline -p hello-world -c hello.yml
启动任务
-t lite unpause-pipeline -p hello-world
- 成功执行的界面如下
最后
本文仅仅是安装引导,欢迎探索Concourse CI更多特性。
参考
https://concourse.ci/docker-repository.html
https://concourse.ci/hello-world.html