sitateru tech blog: 内部システム

sitateru tech blog

シタテルの技術やエンジニアの取り組みを紹介するテックブログです。

ラベル 内部システム の投稿を表示しています。 すべての投稿を表示
ラベル 内部システム の投稿を表示しています。 すべての投稿を表示

2018年10月29日月曜日

シタテルの技術ブログについて

10月 29, 2018

こんにちは!
シタテル株式会社CTOの和泉です。

今日はシタテルの技術ブログの管理について紹介します。
シタテルは衣服づくりのプラットフォームを提供しているスタートアップ企業ですが、
実は3分の1以上がエンジニア、デザイナーというIT企業でもあります。
(あまり知られてないので主張します!)

突然ですが、ここで質問です!
プログラマの好きなもの3つはなんでしょう?

答えは!?

GitHub
マークダウン
デプロイ自動化

ですよね!そうに違いない!

この独断と偏見に基づいて、シタテルの技術ブログはマークダウンで記述して、GitHubで管理レビューをして、
CircleCIによって自動的にデプロイされる仕掛けにしてみました。

この仕組で社内のメンバーの皆さんに1スプリントに1ブログをお願いしています。

さて、今回はその 仕組みと投稿の手順を簡単に紹介します。

しくみ

仕組みと行っても難しいことをしているわけではないのですが、、、

APIの充実したブログサービスとして、知識のない私はBloggerしか思いつきませんでした。

しかし、Bloggerはマークダウンでは投稿できません。なので、マークダウンで記述したファイルをプログラムでHTMLに変換しています。

また、画像等のファイルは マークダウンで書いたテキストそのままを投稿してもどうにもなりませんので、変換後のHTMLのDOM構造からリンクURLを抽出してAmazon S3にアップロード&URLの書き換えを行っています。

以下の手順に出てくるURLはシタテル社員限定公開なのですが、
こちらの公開リポジトリでその部分のコードはご覧いただけます。

https://github.com/shinobushiva/blogautomation

手順

前準備(初回のみ)

1. https://github.com/sitateru/tech-blog をクローン

git clone https://github.com/sitateru/tech-blog

2. masterブランチから新しいブランチを作成してチェックアウト

git branch shinobu.izumi
git checkout shinobu.izumi

ここでは例として shinobu.izumi というブランチを作っています。

ブランチは1人1つを使いまわしても、各自が記事ごとに切るなどしても構いません。

3. posts/blog/ 配下に個人のフォルダを作成(フォルダ名は個人が特定しやすい名前にしてください)

フォルダ作成
ここでは例として shinobu.izumi というフォルダを作っています。

新しい記事を追加する場合

0. masterブランチをpull

最新のmasterブランチを忘れずにpullします。

1. 自身のフォルダ内に記事のフォルダを作成(フォルダ名は自由)

記事のフォルダ作成

2. フォルダ内に記事を作成

最低限必要なファイルは content.mdmeta.json です。

content.md

投稿する記事の内容をマークダウン形式で記述します。

meta.json

記事のメタ情報を記述します。親フォルダの内容を継承しますが、子フォルダの内容で上書きされます。

例は最後に記述してあります。

3. ブランチをリモートリポジトリにプッシュ

git push origin shinobu.izumi

4. publish ブランチ向けにPR

GitHub上で publishブランチに向けてPRを出します。
レビュー後にマージします。

meta.json 例

{
    "blogId": "1797929185044797553",
    "isDraft": true,
    "publish": false,
    "revert": false,

    "isPage": false,
    "ignore": false,
    "forcePost": false,
    "contentPath": "content.md"
}
{
    "ignore": false,
    "resource": {
        "title": "シタテルのオンライン衣服生産システム"
    }
}

以下はBloggerAPIへの指定パラメーター(の一部)です。

キー 意味
blogId 投稿対象とするブログのIDです
isDraft true - 下書きとして投稿します
publish true - 下書きのものを公開に変更します
revert true - 公開のものを下書きに変更します
resource.title 記事のタイトルを指定します

以下は本システム向けの設定です。

キー 意味
isPage true - ページとして投稿, false - 記事として投稿
ignore true - そのフォルダの記事に対する処理を無視
forcePost true - すでに記事が存在している場合でも新しく記事を投稿
contentPath マークダウンファイルの名前(変更の必要なし)

記事のブログへの公開

publishブランチにマージすると、CircleCIが動いて自動的にブログに投稿します。
CircleCIの内部で公開日時などのメタ情報を更新したものをmasterブランチにプッシュします。これにより公開情報をGithubに記録しています。

おわりに

以上、シタテルの技術ブログの管理についてでした。

これから、シタテルで働いているメンバーが使っている技術や日々の業務の中で取り組んだ内容などをお伝えしていきます !