メタアクション


ファクトシート
著者
ヒープ
貢献者
1

0
レポ
https://github.com/mheap/markdown-meta-action
市場
https://github.com/marketplace/actions/markdown-meta

何をするか
内容YAML FrontMatterは最近、非常に一般的です(実際には、あなたは今、それを使用してポストを読んでいる).markdown-meta このメタデータを読み込み、Github actionワークフローの出力として使用できます.
このファイルのフロントエンドは次のようになります.
title: Markdown Meta Action
description: Read the frontmatter from your markdown files and use the values in your workflows
slug: markdown-meta-action
date: "2021-05-07T19:01:58+01:00"
category: "Action Spotlight"
tags:
  - github-actions
このファイルを指定すると、次のワークフローを実行できます.
name: Get Post Meta
on: push
jobs:
  post-meta:
    name: Post Meta
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Markdown Meta
        uses: mheap/markdown-meta-action@v1
        id: meta
        with:
          file: ./_posts/markdown-meta-action.md
      - name: Output the post title
        run: echo "${{ steps.meta.outputs.title }}"
我々はid パラメータmarkdown-meta ステップmeta を返します.steps.meta.outputs . フロントエンドの各キーが利用可能です.
  • steps.meta.outputs.title
  • steps.meta.outputs.description
  • steps.meta.outputs.slug
  • steps.meta.outputs.date
  • steps.meta.outputs.category
  • steps.meta.outputs.tags

  • どうやって動くの?
    これは本当に小さなアクションです.
  • から読み込むファイル名を取得するfile 入力とreads the content into a string
  • 次に、gray-matter ライブラリへextract the frontmatter

  • Then for each value in the frontmatter, it sets an output . キー名はslugify 特殊文字や空白文字を削除するには
  • a key with spaces なるa-key-with-spaces
  • t!tle なるttle
  • 🚀 lift-off なるlift-off
  • 使用してcore.setOutput() オブジェクトまたは配列のようなどんな複雑なデータ型も出力される前にJSONエンコードされます.つまり、上の例ではtags["github-actions"] .

    共用ケース
    私がこの行動のために考えることができる最高のユースケースは自動化されたブログポストアップデートです:
    name: Get Post Meta
    on: push
    jobs:
      post-meta:
        name: Post Meta
        runs-on: ubuntu-latest
        steps:
          - name: Checkout
            uses: actions/checkout@v2
          - name: Get latest post
            run: |
              cd _posts
              echo "::set-output name=post_name::$(ls -rt | tail -n 1)"
            id: latest_post
          - name: Markdown Meta
            uses: mheap/markdown-meta-action@v1
            id: meta
            with:
              file: ./_posts/${{ steps.latest_post.outputs.post_name }}
          - uses: ethomson/send-tweet-action@v1
            with:
              status: "I just published! ${{ steps.meta.outputs.title }} https://michaelheap.com/${{ steps.meta.outputs.slug }}"
              consumer-key: ${{ secrets.TWITTER_CONSUMER_API_KEY }}
              consumer-secret: ${{ secrets.TWITTER_CONSUMER_API_SECRET }}
              access-token: ${{ secrets.TWITTER_ACCESS_TOKEN }}
              access-token-secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}