zackey推し

IT系のこと書くぞい

GitHub Actionsを使って、MarkdownファイルからPDF(職務経歴書)を生成する

この記事では、以下のことを記載します。

はじめに(職務経歴書Markdownで記述、GitHubで管理する)

いままで職務経歴書Google Docsで管理していたのですが、
普段Markdownに書き慣れているため、
職務経歴書Markdownで書きたい」という衝動に駆られました。

また、以下の記事や、

エンジニアの登壇を応援する会のSlackワークスペースにて、
求職者の方がGitHub職務経歴書を公開・レビューしている様子を見て、

  • GitHubで職務経歴をバージョン管理&Markdownで書けるのは嬉しい
  • 公開しておくことで、自分が何者か伝わりやすいのでは?

と思い、自分も昨年から、
Markdown職務経歴書を記述、GitHubで管理することにしました。

github.com

GitHub ActionsでPDFを生成する

昨今は職務経歴書をPDF化して送ることが多いのではないかと思います。
(印刷して持ってきて...みたいなことは少なくなったと思いたい)

ただ、Markdownファイルを手元でPDF化して送付するのは手間です。

そのため、 パブリックリポジトリなら無料で利用できるGitHub Actionsを用いて、

というワークフローを構築してみました。

md-to-pdfMarkdown→PDF出力

README.mdをPDFに変換出力するスクリプトを作成する上で、
md-to-pdfというライブラリを使用しました。

github.com

Markdown→PDFのライブラリは探すといくつか見つかるのですが、
色々設定しなくとも、PDFに出力した後のレイアウトがよさげだったので、
md-to-pdfを採択しました。

手順

では構築手順を記載していきます。

1. README.mdに職務経歴書を記述する

職務経歴書用のリポジトリを新しく作るか、

github.com

リポジトリをforkし、README.mdに自分の職務経歴を記述します。

2. md-to-pdfをインストール、PDF出力するスクリプトを作成する

gitignore.ioからNode.js用のgitignoreテンプレを取得
.gitignoreにコピペします。

# https://www.gitignore.io/api/node の内容をコピペする
# Node.jsのバージョン固定
nodenv install 13.6.0
nodenv local 13.6.0

# package.json作成
npm init

# md-to-pdfのインストール
npm i md-to-pdf

スクリプト内でimportを用いるため、
package.json"type": "module"を追記します。

// package.json
{
〜省略〜
+  "type": "module",
〜省略〜
}

index.jsスクリプトを記述します。

// index.js
import mtp from "md-to-pdf";

mtp("./README.md", { dest: "README.pdf" }).then(() => {
  console.log("mtp Done");
});

node index.jsを実行し、README.pdfが出力されていればOKです。👍

3. ワークフローを記述する

以下のようなワークフロー文を記述します。

  • pushをトリガー(起動条件)とする
  • ソースをチェックアウトする
  • Node.jsの環境構築し、node ./index.jsでPDF出力スクリプトを実行する
  • 生成されたPDF(README.pdf)をアップロード(ダウンロード可能)とする

実際に記述したワークフローは以下となります。

# .github/workflows/create_pdf.yml
name: Create PDF
on: push

jobs:
  lint:
    name: Create PDF
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 1
      - uses: actions/setup-node@v1
        with:
          node-version: "13.6.0"
      - run: |
          node -v
          npm install
          node ./index.js
      - uses: actions/upload-artifact@v1
        with:
          name: create-pdf
          path: ./README.pdf

4. git pushでワークフローを実行、PDFがダウンロードできるか確認する

諸々の編集が済んだら、コミット→git pushします。

f:id:kic-yuuki:20200125125636p:plain

ブラウザでリポジトリへ遷移→Actionsのリンクをクリックします。
直近で実行されたワークフロー(Create PDFと書かれてる部分)をクリックし、

f:id:kic-yuuki:20200125130122p:plain

赤枠のcreate-pdfをクリック→ダウンロード、
PDFが生成されていれば設定完了です。

おわり

以上になります。

PanDocというドキュメント変換ツールを用いたアクションが既にありますので、
そちらを用いるのもありかと思います。

github.com

気になる点等ありましたら、FBいただけると助かります。🙏

参考文献