2021年11月3日水曜日

Gitlab の Wiki を API で編集し画像をアップロードする方法

Gitlab の Wiki を API で編集し画像をアップロードする方法

概要

前回の続きです
今回はファイルをアップロードしたファイルを Wiki に掲載する方法を紹介します

環境

  • Gitlab 14.3.3-ee

サンプルスクリプト

#!/bin/bash

PROJECT_ID=123
HOST="https://gitlab.example.com/"
UPLOAD_API_PATH="/api/v4/projects/${PROJECT_ID}/uploads"
PRIVATE_TOKEN="xxxxxxxxxxx"
FILE_NAME="test.png"

IMAGE_URL=`/usr/bin/curl -s -XPOST "${HOST}${UPLOAD_API_PATH}" --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" --form "file=@${FILE_NAME}" | jq -r .markdown`

CONTENT="
# API Test Page

## List
* a
* b
* c

## Image
${IMAGE_URL}
"
TITLE="test"
BODY="format=markdown&content=${CONTENT}&title=${TITLE}&slug=${TITLE}"

WIKI_API_PATH="/api/v4/projects/${PROJECT_ID}/wikis/${TITLE}"

/usr/bin/curl -XPUT "${HOST}${WIKI_API_PATH}" \
  --header "PRIVATE-TOKEN:${PRIVATE_TOKEN}" \
  --data "${BODY}"

解説

アップロード用の API のパスは /api/v4/projects/${PROJECT_ID}/uploads になります

レスポンスでアップロードしたファイルの URL が取得できます
今回は markdown で Wiki を編集するので markdown の値をそのまま使っています
JSON のパースには jq を使っているのでない場合はインストールしてください

{
  "alt": "dk",
  "url": "/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
  "full_path": "/namespace1/project1/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
  "markdown": "![dk](/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png)"
}

あとは前回同様 Wiki を編集する API をコールするだけです

最後に

あとは CI と組み合わせます

参考サイト

0 件のコメント:

コメントを投稿