GitHub においた md (マークダウン) のドキュメントを GitHub Actions で Conluence のページに連携

# はじめに
GitHub においた md (マークダウン) のドキュメントをGitHub Actions を使って Conluence のページに連携するメモです。

Confluence に連携するためには、以下の markdown-confluence というものを利用します。

https://github.com/markdown-confluence

# GitHub Actions の設定
まずは、Actions のワークフロー設定は以下の通りです。
ドキュメントには markdown-confluence/publish となっていたが、どうやら変わったらしい。

```
name: "Confluecne Publisher"

# 動くきっかけ(push のタイミングで動作)
on: [push]

# 動かす内容
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      
      - name: Publish Markdown to Confluence5
        uses: markdown-confluence/publish-action@main
        with:
          confluenceBaseUrl: https://<Confluence の　URL>/
          confluenceParentId: 親ページのID (子ページとして作成するため)
          atlassianUserName: <ログインユーザ (メールアドレス)>
          atlassianApiToken: <Confluence の API キー>
          contentRoot: <md ファイルを置いているディレクトリ>
          folderToPublish: <contentRoot のディレクトリのうち、どのディレクトリの部分かを指定>
```


# 準備

## Conflucence の API キーを取得

Confluece ページの右上にあるアカウントのアイコンをクリックすると、アカウントのメニューが出てくるので、 [アカウントを管理] をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304109/5e4df7ed-843b-9641-e145-f20da2edd13b.png)

[API トークン] というメニューがあるので、それをクリック。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304109/88565ffe-6831-97aa-fbf9-75d8c088dac0.png)

[API トークンを作成をする] をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304109/88b8786d-cfda-66a1-7bad-0f3fe0031d6b.png)

トークンの名前を聞かれるので入力をして [作成] をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304109/0dd30b5b-456c-97b8-1f63-69b8accf6cb0.png)

作成されるのでコピーしておく (ここでコピーしておかないと二度と見れないので注意。作り直しとなる)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304109/088fa27f-ea76-31b9-085f-b821bb16fd61.png)


## Confluence の親ページ ID を取得
子ページとして作成するため、その親ページID を取得する。

ページ右上にある団子メニューをクリックし [詳細情報] にある [ページ情報] をクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304109/11aa3308-827a-8553-9997-9a6f197c2ddc.png)

すると、以下のような URL のページに飛ぶので URL パラメータに [pageId] というのがついてくる。
これが、親ページのID となる

https://<Confluence URL>/wiki/pages/viewinfo.action?pageId=3663528040


## md ファイルの用意

GitHub のレポジトリのどこかに md ファイルを用意しておきます。
doc というディレクトリに testdocument.md というファイルで以下のような内容にしておきます。

```
テスト用のマークダウン

テストドキュメント


#### どうなりますか

同じドキュメントは更新か？


テーブルを作る

| Day     | Meal    | Price |
| --------|---------|-------|
| Monday  | pasta   | $6    |
| Tuesday | chicken | $8    |



地平線バー
----

````

# ワークフローが起動するタイミング
レポジトリに、なにかしらの Push があった場合にワークフローが起動するようにしておきます。

```
# 動くきっかけ(push のタイミングで動作)
on: [push]
```

Confluence に連携するための設定です。
準備で取得した内容を以下のワークフローに埋めていってください。

ちなみに、contentRoot はGitHub Actions のランナーが実行しているワークスペースなので、実際には /home/runner/work/レポジトリ名/レポジトリ名/docs とかになります


```
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      
      - name: Publish Markdown to Confluence5
        uses: markdown-confluence/publish-action@main
        with:
          confluenceBaseUrl: https://<Confluence の　URL>/
          confluenceParentId: 親ページのID (子ページとして作成するため)
          atlassianUserName: <ログインユーザ (メールアドレス)>
          atlassianApiToken: <Confluence の API キー>
          contentRoot: <md ファイルを置いているディレクトリ>
          folderToPublish: <contentRoot のディレクトリのうち、どのディレクトリの部分かを指定>
```

もし、GitHub Actions のランナーが実行しているワークスペースがよくわからんという人は私みたいにプリントデバッグしながら確認してみてもいいかもしれません。
そうすると、どこにあるかわかるかと思います。(笑

```
      - name: directory
        run: |
          ls -al
          pwd
          ls -al /home/runner/work/レポジトリ名/
          ls -al /home/runner/work/レポジトリ名/レポジトリ名/

      - name: Publish Markdown to Confluence5
        uses: markdown-confluence/publish-action@main
        with:
          confluenceBaseUrl: https://<Confluence の　URL>/
          confluenceParentId: 親ページのID (子ページとして作成するため)
          atlassianUserName: <ログインユーザ (メールアドレス)>
          atlassianApiToken: <Confluence の API キー>
          contentRoot: <md ファイルを置いているディレクトリ>
          folderToPublish: <contentRoot のディレクトリのうち、どのディレクトリの部分
          
```

# 結果

以下のようなページが出来上がります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/304109/c4d37595-dea5-58b8-4503-ac2f47e138bd.png)


# おまけ

ページ内容 (mdファイルの内容) が変わっていれば、ページの更新となりました。
変わっていなければ、更新とはなりません。


Confluence で利用できるマークダウンは以下のようです。デザインごりごりなリッチドキュメントを作ることはできなさそうです。

https://support.atlassian.com/ja/confluence-cloud/docs/available-markdown-commands/

また Confluence で作ったテンプレートに埋め込むようなことはできなさそうです。
これができればいいんだけどなぁ。。。