[Publication] Zennの記事をBitBucketを使って効率的にレビューしたい
どうも僕です。
ZennのPublication、活用されていますでしょうか?Qiitaで言うところのOrganizationのようなもので、チームでのメディア展開が可能です。
Publication | Zenn
https://zenn.dev/publications
ZennはGitHubとの連携で自動デプロイすることが可能ですので、GitHubでチームレビューしたのちに記事を公開するようなフローを構築されている方もいらっしゃるかと思います。
GitHubリポジトリでZennのコンテンツを管理する
https://zenn.dev/zenn/articles/connect-to-github
弊社インヴェンティットでは、主にBitBucketを利用しております。BitBucketでチームレビューしたい!と言うことで、次のような仕組みを検討しました。
慣れたレビュー環境ですと分かりやすく、コメントや修正の履歴も残るのでチームコラボレーションがしやすいですね。
Zennのドラフト機能を併用するとgitを使わなくてもレビューができるので、gitが使えない方でもレビューに参加できます。
手順
- zenn-cliを利用して記事を作成
- BitBucketでプルリクエストを作成
- BitBucket上でチームレビュー
- 承認された記事をGitHubにpush
- Zennにデプロイして公開
できること
- BitBucket上での記事内容レビュー
- GitHub連携による記事の自動デプロイ
- 手動(ブラウザから)とGitHub経由、どちらからでも記事の作成・管理が可能
できないこと
- 投稿制限(レビュー前の状態をシステム的に公開禁止にするなど)
手順詳細
リポジトリ構成
以下のリポジトリをBitBucketに用意します。
- 共用リポジトリ: レビューを実施するリポジトリ
- mainブランチ:
npx zenn init
したデフォルトの状態をPUSHする - 個人ブランチ: mainブランチから派生した個人用ブランチ。特定の個人の記事が追加される。プルリクエストにおけるマージ先
- 作業ブランチ: 個人ブランチから派生した、記事単位のブランチ。プルリクエストにおけるマージ元
GitHubには以下を用意します。
- 個人リポジトリ: Zennに自動デプロイするためのリポジトリ。個人のみがアクセスできれば良い。連携設定を行っておく
- デプロイ用ブランチ: BitBucketの個人ブランチをPUSHする
コマンド例:
# BitBucketのリポジトリをクローン
git clone https://bitbucket.org/inventit/<BitBucketリポジトリ名>.git
# BitBucketに個人ブランチを作成
git branch <個人ブランチ名> main
git push origin <個人ブランチ名>
# GitHubをremoteに追加
git remote add github https://github.com/myashima/<GitHubリポジトリ名>.git
作業ブランチの作成
BitBuciketの個人ブランチから派生し、記事執筆用の作業ブランチを作成します。
コマンド例:
# 記事執筆用ブランチを作成
git branch <作業ブランチ名> <個人ブランチ名>
記事の執筆
記事の執筆にはzenn-cliを利用します。公式の手順を参考にしてください。
公式の手順にもあるようにMarkdownで記事を作成しますが、タイトルや絵文字など、冒頭に記事の設定情報を記載します。
npx zenn new:article
を実行することで雛形が作成されます。
Zennにドラフトを作成する場合は、published: false
を指定しておきます。
---
title: "[Publication] Zennの記事をBitBucketを使って効率的にレビューしたい"
emoji: "🪣"
type: "tech" # tech: 技術記事 / idea: アイデア
topics: ["bitbucket", "zenn"]
published: false
publication_name: inventit
---
どうも僕です。
ZennのPublication、活用されていますでしょうか?Qiitaで言うところのOrganizationのようなもので、チームでのメディア展開が可能です。
...
プルリクエスト・レビュー
BitBucketの作業ブランチに記事を追加した後、プルリクエストを作成します。
この時、Zennにドラフトを作成する場合は、記事の設定に published: false
が指定されていることを確認してください。
(published: true
だと記事が一般公開されてしまいます)
- BitBucketに作業ブランチをPUSHし、プルリクエストを作成
- GitHubに作業ブランチをPUSHし、Zennにドラフトを作成
コマンド例:
# BitBucketに作業ブランチをPUSH
git push origin <作業ブランチ名>
# GitHubのmainブランチに作業ブランチをPUSH
git push github <作業ブランチ名>:main
レビューが完了したら、作業ブランチを個人ブランチにマージします。その際に、published: true に変更してください。
- BitBucketでプルリクエストを承認
-
published: true
に変更、マージ - BitBucketからマージ済みの個人ブランチをPULL
- GitHubに個人ブランチをPUSHし、Zennに記事を公開
コマンド例:
# BitBucketから個人ブランチをPULL
git push pull <個人ブランチ名>
# GitHubのmainブランチに作業ブランチをPUSH
git push github <個人ブランチ名>:main
Discussion