如何使用n8n部置gitlab cicd status到teams
- 安裝
docker
1 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /usr/share/keyrings/docker-archive-keyring.gpg |
- 安裝
docker-compose
1 | sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" \ |
- 設定
n8n的docker-compose.yml
1 | sudo mkdir -p /srv/n8n |
/srv/n8n/docker-compose.yml
1 | services: |
- 佈署
n8n
1 | docker-compose up -d |
- 設定
nginx
1 | sudo vim /etc/nginx/sites-available/n8n.conf |
/etc/nginx/sites-available/n8n.conf
1 | server { |
- 產生自簽名証書
1 | sudo mkdir -p /etc/ssl/n8n |
- 啟動
nginx
1 | sudo ln -s /etc/nginx/sites-available/n8n.conf /etc/nginx/sites-enabled/ |
- 複製 n8n 自簽名証書到
gitlab server
1 | sudo scp n8n.crt user_name@gitlab_server_dns_or_ip:/usr/local/share/ca-certificates/ |
gitlab設定webhook
- 打開 GitLab 專案 → Settings → Webhooks
- URL 填
n8n webhook - 觸發事件只選 Pipeline events
- 保存 webhook
Teams設定workflow
- 選範本
收到 webhook 要求時發佈在頻道中 - 選擇要發佈的頻道
- 複製 URL
- 建立 n8n webhook
- 連上 n8n server
https://n8n_server_dns_or_ip - 打開 n8n Web UI
- 建立 新 Workflow
- 建立
Webhook Node
- HTTP method: POST
- Path: gitlab-cicd
- Authentication: None
- Respond: onReceived
- 建立
Function Node
- Mode: Run Once for All Items
- Language: JavaScript
- Add script
1 | // 取得 webhook payload |
- 建立
HTTP Request Node
- Method: POST
- URL: 剛才 teams 產生的 workflow url
- Authentication: None
- Enable Send Headers
- Specify Headers: Using JSON
1 | { |
- Enable Send Body
- Body Content Type: JSON
- Specify Body: Using JSON
1 | { |
- Enable workhook to active
gitlab webhook按 Test 觸發pipeline event