コンテンツにスキップ

markdown-confluence cliでmarkdownをConfluenceに同期する

開発に関連するあれこれ(ADRで決めるような内容)をGitリポジトリ内のdocsディレクトリにmarkdownで記載して管理するスタイルをとってきた。

ただ、非開発者でも経緯などを把握できた方がいいことを考えるとリポジトリに置いておくだけでは不十分だと考えて、代替ソリューションを探していてたどり着いた。

検討していた/実施してみた代替手段

Section titled “検討していた/実施してみた代替手段”
  • Astroなどmarkdownを元に静的サイトを生成できるフレームワークを使ってS3に配置・公開する
    • フロントエンドがメイン領域の自身が運用する分にはなんの問題もないが、フロントエンド経験が乏しいとメンテナンスが継続できないと判断してやめた
    • 上記に関連するが、継続的にバージョンを上げていくなどメンテナンスする意識がないとすぐに陳腐化する
  • 最初からConfluenceに書く
    • 手元のリポジトリでサクッと見ることができなくなる
    • コンテキストがリポジトリとConfluenceに分散するので移動が煩わしく感じる
    • 単純にConfluenceのエディタが好きになれない
  • 基本的な記法を網羅している
  • 画像などもアップロードできる
  • フォルダ構造を維持したままアップロードできる
  • Obsidian向けのプラグインも存在するみたいなので、Obsidian使いでも使える
  • 同期先となるフォルダーページのID
    • ここで指定したページ配下にmarkdownが同期される
  • ATLASSIAN_API_TOKEN
  • 自身のConfluenceのベースURL(ex. https://example.atlassian.net)

.obsidianディレクトリが存在する場合、デプロイから除外されるがドット始まりのディレクトリやmarkdownファイルはそのままデプロイされてしまうので注意。

.
└── root/
├── docs/
│ ├── .hidden-dir
│ ├── foo.md
│ └── bar/
│ └── baz.md
├── src
├── .markdown-confluence.json
├── package.json
└── README.md

.markdown-confluence.jsonで設定を管理する

  • confluenceBaseUrl:デプロイ先ConfluenceのベースURL
  • confluenceParentId: デプロイ先Confluenceの親ページID
  • atlassianUserName: Atlassianアカウントのユーザ名
  • folderToPublish: デプロイしたいフォルダのパス。デフォルトは.(ルート)
  • firstHeadingPageTitle: # Heading1をページのタイトルにするか
{
"confluenceBaseUrl": "https://example.atlassian.net",
"confluenceParentId": "12345678",
"atlassianUserName": "username@example.com",
"folderToPublish": "path/to/folder",
"firstHeadingPageTitle": true
}
Terminal window
export ATLASSIAN_API_TOKEN=""
npx @markdown-confluence/cli
---
connie-publish: false
---
# this is draft

公開済みファイルを削除した場合、どうなる?

Section titled “公開済みファイルを削除した場合、どうなる?”

自動的に削除してくれるわけではないので、自分でConfluence上で手動操作等で削除する必要がある

下記のように [[markdownファイル名]] 形式で記載してあげれば、リンクに変換される。※ 拡張子はつけない

Obsidianを使っていれば、全く意識しなくても問題ない。

#でヘッダーを指定するときに日本語でもうまく動くのかは未確認。

# title
- [[markdown-filename]]
- [[markdown-filename|Alias]]
- [[markdown-filename#Heading]]