Skip to content

A GitHub action that adds support for YAML anchors and merge keys in GitHub Actions

License

Notifications You must be signed in to change notification settings

DanySK/true-yaml-actions

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

True YAML Actions

I gave up hope of seeing actions/runner#1182 fixed within my lifespan¹. I thus decided to write a very simple composite GitHub action that adds support for YAML anchors and merge keys in GitHub Actions.

How to use it

Write your workflows into .github/real-workflows, freely using merge keys (<<:) and anchors (*), but writing all your anchors definitions in a header document, then write the real workflow separated by ---, like this:

anchor: &anchor
  name: Test running on ${{github.repository}}
  run: echo Commit ${{github.sha}} seems to be working

---

name: Test this action

on:
  push:
  pull_request:
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Test running on ${{github.repository}}
        run: echo Commit ${{github.sha}} seems to be working
      - <<: *anchor
        run: echo Test merge keys
      - *anchor

Now, create a new token with workflows:write permissions and register it as a repo (or organization) secret. In the remainder, we'll call this token's secret WORKFLOW_TOKEN.

Now, create an additional workflow in .github/workflows/autogen.yaml (of course pick the name you like the most, the important thing is the workflow location) that looks like this:

name: Generate workflows

on:
  push:
    branches:
      - master
    paths: 
      - ".github/real-workflows/*.yml"

jobs:
  generate-workflows:
    runs-on: ubuntu-latest
    steps:
      - name: Run locally
        uses: 'DanySK/[email protected]' # pick the latest version maybe
        with:
          token: ${{ secrets.WORKFLOW_TOKEN }}

Replace WORKFLOW_TOKEN with the name of the secret you created before.

That's it.

image

  1. I also honestly believe that GitHub Actions was built bottom-up, has great design flaws, and deserves a v2, but still, it's the best thing we have, so I can't help but love it ❤️

About

A GitHub action that adds support for YAML anchors and merge keys in GitHub Actions

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •