Zone Lin
文章33
標籤32
分類7
drone-git-push 踩雷心得

drone-git-push 踩雷心得

Drone CI 是一個可以自行的 CI (Continuous Integration) 軟體

使用 CI 的用意就是為了,能在寫完程式時,自動測試、編譯與發佈程式。

關於怎麼架設改天再寫一篇教學。 Google一下應該就很多教學了

drone-git-push

回來本篇主題

這次我的需求是在 Drone 的流程內,測試或編譯完程式後以 git 推送到不同的儲藏庫

其實就是要產生網站檔案後,推送到 GitHub 方便用 GitHub Page 或是 Cloudflare Page

在 Drone CI 中可以用 drone-git-push 做到

這次遇到的問題有2個 害我為了找問題多花很多時間

儲存庫辨識失敗

錯誤訊息:

...
parse \"git@github.com:user/repo.git\": first path segment in URL cannot contain colon"
...

照原本文件寫的 .drone.yml 大概是長這樣

- name: deploy git
image: appleboy/drone-git-push
settings:
branch: main
remote: git@github.com:user/repo.git
force: false
commit: true

參考GitHub討論區的解決方法

  • 使用緊急修補的 image
  • remote 改用字串
- name: deploy git
image: appleboy/drone-git-push:0.2.0-linux-amd64
settings:
branch: main
remote: "git@github.com:user/repo.git"
force: false
commit: true

SSH Key 讀取失敗

由於資安的關係, SSH KEY 不可以跟著程式碼推送到儲存庫,更不可能放明碼在設定檔中

在 Drone CI 要改用 secret 的功能

.drone.yml 大概長這樣

- name: deploy git
image: appleboy/drone-git-push:0.2.0-linux-amd64
settings:
branch: main
ssh_key:
from_secret: githubkey

另外在 Drone CI 的 WebUI 上添加 Secret

將 private key 的內文貼進去

secret

然後就碰到問題了

錯誤訊息:

...
Load key "/root/.ssh/id_rsa": invalid format
...

參考GitHub討論區的解決方法

  • 產生的 SSH key 需要改用 PEM
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -m PEM

換完 KEY 甚麼問題都沒了🎉

本文作者:Zone Lin
本文連結:https://zonego.tw/2022/01/06/drone-git-push/
版權宣告:本文採用 創用CC BY 4.0 協議進行許可
貼文內使用的封面圖大部分來自unsplash,個別圖片的連結請看封面圖來源
×