What is Concourse?

Concourse is a CI/CD tool that treats build pipelines and artifacts as first-class citizens.
It enables builds that run in containers, has a clean, usable UI and discourages snowflake build servers.
It aims to provide an expressive system with as few distinct moving parts as possible.

自動化常規代碼集成,測試和反饋(基本上是CI功能)
在多個平台和版本上自動化軟件兼容性測試
自動執行持續交付(CD)管道任務,例如合規性檢查,安全驗證和更改工單
自動升級雲平台軟件(如安全補丁,操作系統更新和新功能)以支持您的平台作為產品

安裝docker前置必要組件

sudo apt-get remove -y docker docker-engine docker.io containerd runc

更新系統

sudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

新增docker GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

加入docker repository

sudo add-apt-repository -y    "deb \
[arch=amd64] https://download.docker.com/linux/ubuntu \ 
$(lsb_release -cs) stable"sudo apt-get update

安裝docker-ce

sudo apt-get install -y docker-ce
sudo docker run hello-world

安裝docker compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

執行consourse yaml檔

version: '3'
  
services:
  concourse-db:
    image: postgres
    environment:
    - POSTGRES_DB=concourse
    - POSTGRES_PASSWORD=concourse_pass
    - POSTGRES_USER=concourse_user
    - PGDATA=/database

  concourse:
    image: concourse/concourse:6.0.0
    command: quickstart
    privileged: true
    depends_on: [concourse-db]
    ports: ["8080:8080"]
    environment:
    - CONCOURSE_POSTGRES_HOST=concourse-db
    - CONCOURSE_POSTGRES_USER=concourse_user
    - CONCOURSE_POSTGRES_PASSWORD=concourse_pass
    - CONCOURSE_POSTGRES_DATABASE=concourse
    - CONCOURSE_EXTERNAL_URL=
    - CONCOURSE_ADD_LOCAL_USER=test:test
    - CONCOURSE_MAIN_TEAM_LOCAL_USER=test
    - CONCOURSE_WORKER_GARDEN_NETWORK

取得IP地址並將其分配給ipaddr變數,以下代碼可在Ubuntu 18.04上運行(也能在其他版本上運行)。 下一行URL後附加您的IP地址和預設port。

ipaddr=$(ip route get 1 | awk '{print $NF;exit}')
sed "s|EXTERNAL_URL|EXTERNAL_URL=http://$ipaddr:8080|g" docker-compose.yml -i

啟動consourse

sudo docker-compose up -d
sudo docker ps # Shows your running Docker containers
cat docker-compose.yml |grep EXTERNAL_URL | sed -e 's/^[[:space:]]*- //'

啟動畫面

帳密在yaml檔上面設定的test/test

開始您的第一個任務

現在可以開始使用Concourse了,需要首先安裝fly,即Concourse CLI。 可以選擇相關的操作系統,直接從Concourse服務器的登錄頁面下載。

wget -O ~/fly "http://192.168.0.157:8080/api/v1/cli?arch=amd64&platform=linux"
sudo mkdir -p /usr/local/bin
sudo mv ~/fly /usr/local/bin
sudo chmod 0755 /usr/local/bin/fly

您可以繼續登錄,這將在當前機器上創建目標設置。 指定給目標的標籤將是我們用來稱為此特定Concourse實例的標籤,在這種情況下,我已經使用了主要映射到我們的團隊。

fly --target main login --concourse-url http://192.168.162.132:8080 -u test -p test

出現升級提示訊息執行

fly -t cloud sync

因為 Fly 是操作所有 Concourse 功能的工具,所以也包含了非常多的指令。

  • login: 登入 Concourse 伺服器
  • targets: 列出目前的目標(設定的伺服器)
  • sync: 更新本機目前的 fly 和伺服器同步
  • set-team: 新增或修改團隊
  • destroy-team: 刪除團隊
  • execute: 執行一個本機指令(不用設定 Pipeline)
  • pipelines: 列出目前的 Pipeline
  • rename-pipeline: 重新命名 Pipeline
  • pause-pipeline: 暫停 Pipeline 運作
  • unpause-pipeline: 恢復 Pipeline 運作
  • expose-pipeline: 讓 Pipeline 可以被公開檢視(無須登入)
  • hide-pipeline: 隱藏 Pipeline 顯示
  • get-pipeline: 取得 Pipeline 的設定
  • set-pipeline: 設定 Pipeline 的設定
  • destroy-pipeline: 刪除 Pipeline
  • trigger-job: 觸發工作運行
  • pause-job: 暫停某個工作運作
  • unpause-job: 恢復某個工作運作
  • check-resource: 檢查某個 Resource 的新版本
  • pause-resource: 暫停 Resource 的自動檢查
  • unpause-resource: 恢復 Resource 的自動檢查
  • builds: 顯示建置紀錄
  • abort-build: 停止某個工作的建置
  • containers: 顯示運行中的容器
  • intercept: 取的目前運行中或者最近的建置狀況
  • watch: 檢視進行中的建置紀錄
  • workers: 顯示可用的 Worker
  • volumes: 顯示啟用中的容器
  • checklist: 生成 Checkman 用的設定檔

參考網址

https://ithelp.ithome.com.tw/users/20065771/ironman/1020

https://blog.waterstrong.me/concourse-ci/

點閱: 27