Jenkens、Docker Hub、Github整合是非常簡單的一條龍服務,但我們大部分時間使用的是國內Git倉庫,並且原始碼為私有。這篇文章介紹的是通過Git倉庫的Webhooks通知Jenkens執行構建併發布到阿里容器映象服務,阿里容器映象服務觸發器通知我們的叢集更新服務。
準備工作
開通容器映象服務:https://cr.console.aliyun.com 並配置好獨立的登入密碼。
建立一個名稱空間和映象倉庫,我們將使用storage的原始碼程式演示
得到我們的倉庫地址和使用說明,我選的成都,所以倉庫地址是registry.cn-chengdu.aliyuncs.com
編寫Dockerfile
參見原始碼https://github.com/donjan-deng/la-storage/...
安裝Jenkens
在管理節點執行:
docker run -d --restart always --name jenkins \
-u root -p 8080:8080 \
-v /home/data/jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home jenkinsci/blueocean
開啟:http://192.168.137.200:8080,需要密碼。進入docker
docker exec -it jenkins bash
cat /var/jenkins_home/secrets/initialAdminPassword
我的密碼是635ab3fe80c7406bbc3b821d045f7122
下一步就是外掛安裝,選擇推薦安裝。接下來是漫長的等待。
接下來建立管理帳號或者使用admin繼續,密碼就是上面得到的。
新增一個全域性憑據儲存阿里雲映象倉庫的賬號密碼
新增API Token
去掉跨站點請求安全設定
編寫Jenkinsfile
參見原始碼https://github.com/donjan-deng/la-storage/...
新增流水線
開啟Blue Ocean皮膚:http://192.168.137.200:8080/blue/organizat... 建立流水線。選擇git,填入你的私有倉庫地址,可以使用使用者名稱密碼方式登入,也可以使用證照。
建立完流水線會自動執行第一次構建。
部署服務
配置env檔案
進入我們搭建叢集時安裝的Portainer皮膚,在Configs建立一個storage.env的config
APP_NAME=storage
APP_KEY=base64:5B8U2aa/7ftmij9oZP9kz6JzpLJQOGx5MtVyqf/rbXo=
APP_TIMEZONE=UTC
LOG_CHANNEL=elasticsearch
ELASTIC_HOST=es01:9200
LOG_SLACK_WEBHOOK_URL=
#我們的storage服務沒有用到資料庫,所以不用設定
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
FILESYSTEM_DRIVER=s3
AWS_KEY=BCIAIOSFODNN7EXAMPLE
AWS_SECRET=aKalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
AWS_REGION=us-east-1
AWS_URL=http://minio:9000
AWS_BUCKET=image
SERVICE_USER_CENTER=http://user_center:9504
登入阿里雲映象倉庫
在Portainer皮膚新增我們的阿里雲映象倉庫
建立服務
兩種方法:
-
在管理節點執行命令
docker login registry.cn-chengdu.aliyuncs.com #先登入 docker service create \ --name storage \ --with-registry-auth \ --replicas 1 \ #這是同時執行的副本數,=如果設定為每個節點都執行換成--mode global --network my-net \ --config source=storage.env,target=/app/.env \ #前面我們建立的配置檔案 registry.cn-chengdu.aliyuncs.com/donjan/storage:latest
-
在Portainer皮膚建立
同時執行的副本數,選擇Global所有節點都執行
開啟webhook
私有網路
配置檔案如何變更config
比如我們.env配置要變,建立一個storage.v2.env,可以在Portainer皮膚刪掉原來的,新增新的。然後Apply changes或者直接執行命令
docker service update \ --config-rm storage.env \ --config-add source=storage.v2.env,target=/app/.env \ storage
持續整合
-
在我們GIT倉庫webhook設定master有push就傳送POST請求給Jenkens。
http://admin:11c4d7faba574273c76a92def472979658@192.168.137.200:8080/job/la-storage/job/master/build
其中admin為賬號:前面建立的token,la-storage為流水線名稱,master為分支名。必須是POST請求。
-
在我們的Portainer皮膚找到剛才建立的Service,複製出webhook連線,我的是
http://192.168.137.200:9000/api/webhooks/a...
在阿里雲映象倉庫建立一個觸發器,URL就填寫上面的,選擇“Tag觸發",然後勾選我們建立服務用的latest Tag
《PHP微服務練兵》系列索引: 部落格:《PHP 微服務練兵》系列教程
本作品採用《CC 協議》,轉載必須註明作者和本文連結