I made a CLI extension to get the Annotation list of GitHub Actions.
Tags: github, githubactions, githubcli, githubcliextension
Published: 2022-12-27 09:56:43

---
title: I made a CLI extension to get the Annotation list of GitHub Actions.
published: true
description: 
tags: ["GitHub", "GitHubActions", "GitHubCLI", "GitHubCLIExtension"]
---

## Background, Purpose

Some time ago, GitHub Actions started sending warnings to Annotation that actions using Node version 12 would be deprecated.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klq5c6baqjqfsmb13t8u.png)


If the repository is well maintained, it's good to notice and respond, but I felt that there might be some omissions...

To find them, you can look at the summary on the web page of each Actions, but it takes time to go to the page every time when the number of repositories to manage increases.

That's why

I made a GitHub CLI extension to get the list of annotations of GitHub Actions.

[swfz/gh-annotations: list of annotations from the recently executed Workflow](https://github.com/swfz/gh-annotations)


## How it works

I'm trying to look at annotations from the latest execution of each Workflow in the repository, since I have to hit the API quite a bit.

So you can't get annotations from a specific Workflow that was executed a while ago.

```shell
gh annotations -repo swfz/til | jq
[
  {
    "repository": "swfz/til",
    "workflow_name": "slack notification",
    "workflow_event": "workflow_run",
    "workflow_path": ".github/workflows/slack.yml",
    "workflow_url": "https://github.com/swfz/til/actions/runs/3697438928",
    "job_name": "main",
    "job_conclusion": "success",
    "annotation_level": "warning",
    For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: swfz/slack-workflow-status@feature/follow-workflow-run"
  }
  {
    "repository": "swfz/til",
    "workflow_name": "ci",
    "workflow_event": "push",
    "workflow_path": ".github/workflows/ci.yml",
    "workflow_url": "https://github.com/swfz/til/actions/runs/3697430624",
    "job_name": "build",
    "job_conclusion": "failure",
    "annotation_level": "failure",
    "message": "Process completed with exit code 1."
  }
  {
    "repository": "swfz/til",
    "workflow_name": "lint content",
    "workflow_event": "push",
    "workflow_path": ".github/workflows/lint.yml",
    "workflow_url": "https://github.com/swfz/til/actions/runs/3694817234",
    "job_name": "run textlint",
    "job_conclusion": "failure",
    "annotation_level": "failure",
    "message": "Process completed with exit code 1."
  }
]
```


## install

```
gh extension install swfz/gh-annotations
```

This is just because it's a GitHub CLI Extension, but you can use it with just the above command.

## How to operate

```
gh annotations | jq
```

Execute against the repository in your current directory.

```
gh annotations -repo swfz/sample | jq
```

You can also specify a repository like `gh annotations -repo`

If you don't specify anything, it will target the directory you are in.

If you want to get information on all repositories maintained at the beginning, use

You can get a list of repositories and run `gh annotations` on each of them to output annotations for all repositories by using a one-liner.

```shell
gh repo list --limit 200 --json 'nameWithOwner' | jq -rc '. []|.nameWithOwner' | xargs -i sh -lc "gh annotations -repo {}" | tee -a annotations.json
```

## End

This was a story about creating a GitHub CLI extension to get the results of GitHub Actions annotations.

- Catch and notify when any annotations occur by integrating it into CI.
- Periodically output and check the results of all repositories you are managing.

I think it can be used for such purposes.

In development, I was going to implement list output in addition to JSON output, but I ran out of energy, so I decided to write the article in this state.

You can use it if you like!

[swfz/gh-annotations: list of annotations from a recently executed Workflow](https://github.com/swfz/gh-annotations)