Skip to content

Common Git Repo artifacts enforcement #12

Open
@achrinza

Description

@achrinza

Certain artifacts such as SECURITY.md, CODE_OF_CONDUCT.md, and certain GitHub Actions Workflow files need to be consistent across our GitHub Repositories. To achieve this, we can utilise TODO Group's repolinter, which provides an epressive, declarative JSON- and YAML-based format for validating the existence of files and directories and validating file hashes, just to name a few. Notably, repolinter supports remote URLs for its configuration file, which we can exploit to ensure a consistent configuration that's hosted in this Git Repository.

In addition repolinter can be used to either scan the current or remote Git Repositories, which allows us to perform "meta validation" whereby we host a GitHub Action Workflow in this Git Repository to periodically scan all of our Git Repositories for a standardised GitHub Action Workflow which triggers the repolinter scans for that Git Repository.

TODO Group is under the Linux Foundation, and repolinter can be considered a mature project.

Philips Labs' Continuous Compliance Action is a fork of repolinter with some additional features which attempt to complete the compliance reporting lifecycle. From its README:

We started working on a fork of Repolinter, one that introduced the ability create different GitHub issues per rule that was broken.

Currently it's considered a work-in-progress, and could be considered as an alternative to repolinter.

For certain artifacts such as SECURITY.md and CODE_OF_CONDUCT.md, GitHub can provide links to a centralised copy hosted in the .github Git Repository for those that don't already have their own. This is what the Node.js GitHub Organisation is doing: nodejs/admin#644. However, the tradeoffs are:

  1. Only limited artifacts are replicated
  2. GitHub Action Workflows cannot be replicated
  3. These artifacts are not visible when performing a git pull to a local machine

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions