DEV Community

loading...

Dump Context Action

Michael Heap
Programmer. @GitHub Star. Wrote https://actionsbook.com about Building GitHub Actions
Originally published at michaelheap.com on ・2 min read

This week's Action Spotlight introduces a new kind of action. It's the first time we're featuring a composite action, which allows you to include multiple workflow steps as a single uses statement.

Fact Sheet
Author crazy-max
Contributors 1
Stars 9
Repo https://github.com/crazy-max/ghaction-dump-context
Marketplace https://github.com/marketplace/actions/dump-context

What does it do?

This action outputs the following items from the runner environment:

  • env
  • runner
  • github
  • job
  • steps
  • strategy
  • matrix

This allows you to see things like github.event in the output to debug the data available to your actions.

How does it work?

This is a composite action, which means that the whole thing is in a single action.yml file. It contains the fields that we'd expect to see, such as name, author and branding. However, it also has a value that we've not seen before; runs.using: composite.

This tells Actions that the action provides steps that should be run as though they were provided in the workflow itself.

There are seven steps, each dumping a different aspect of the environment. Each step uses the toJson function to convert the input to a string that can be rendered in the output and stores that in the environment. Storing it in the environment prevents quoting issues when echoing out the value later.

The characters before each heading (e.g. \033[31;1;4m) are ANSI escape codes, which tells the output to make that text red, bold and underlined.

Finally, each step has the shell set to bash. This makes the action usable on all operating systems. Without this, the action would default to Powershell on Windows and fail.

That's all there is to it - seven steps, all following the same pattern to output useful data in the logs.

Common use cases

There's only one use case - dump the current context to for debugging purposes:

name: Dump Context
on: [push, pull_request]
jobs:
  dump:
    runs-on: ubuntu-latest
    steps:
      - name: Dump context
        uses: crazy-max/ghaction-dump-context@v1
Enter fullscreen mode Exit fullscreen mode

Discussion (0)