同步git倉庫md文件轉html格式後更新至confluence

0x00 需求

在Confluence中查看Git上的最新markdwon文件 .

0x01 思路

Jenkins中添加 webhook, 當有commit 事件發生時, 啓動腳本.
腳本邏輯:
1.直接下載相應文件, 不需要整庫clone/update.
2.轉html格式,並存儲到Confluence, 因爲Confluence對markdown支持性不太友好

0x02 遇到的問題及解決

  • md轉html
    • 使用pandoc 工具可以解決
  • json文件中引號轉義
    • 使用jq工具, 加參數 -R 解決
  • echo 換行問題
    • 使用 -n 參數可以讓echo 輸出後不換行

0x03 代碼實現

#!/bin/bash
GIT_SERVER="https://your-git-server"
CONF_SERVER="https://your-confluence-server"
GIT_TOKEN="your-access-token"
CONF_USER="admin"
CONF_PWD="password"
project_id=''
file_path=''
page_id=''


# 1.下載原始信息
echo '1.下載原始信息'
curl -s --header "PRIVATE-TOKEN: ${GIT_TOKEN}" ${GIT_SERVER}/api/v4/projects/${projectId}/repository/files/${file_path}/raw?ref=master" > ./before.md

# 2.把markdown 轉換成 html格式
pandoc -f markdown -t html5 < ./before.md -o after.html

# 3.把Html源碼中的引號進行轉義
content=`jq -R . < ./after.md `

# 3.提取當前Confluence內容版本號
echo '2.提取版本號'

curr_version=`curl -s -u $CONF_USER:$CONF_PWD -XGET --header 'Accept: application/json' '${CONF_SERVER}/rest/api/content/${page_id}' | jq .version.number`
new_version=`expr $curr_version + 1`
echo '新版本' + $new_version

# 4.把更新參數信息導出爲臨時JSON文件
echo -n '{"type":"page","title":"default-title","body":{"storage":{"value":' > ./tmp.json
echo -n $content >> ./tmp.json
echo -n ',"representation":"storage"}},"version":{"number": ' >> ./tmp.json
echo -n $new_version >> ./tmp.json
echo -n '}}' >> ./tmp.json

# 5.更新內容更新
echo '3.同步 Confluence'
curl -s -u $CONF_USER:$CONF_PWD -X PUT -H 'Content-Type: application/json' ${CONF_SERVER}/rest/api/content/${page_id}-d @./tmp.json  | jq .id

echo '同步完成'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章