🪣

[Publication] Zennの記事をBitBucketを使って効率的にレビューしたい

2024/03/21に公開

どうも僕です。

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には以下を用意します。

コマンド例:

# 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
Inventit Tech

Discussion