Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/CODEOWNERS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Code Owners

<!-- TODO: Who are the points of contact in your project who are responsible/accountable for the project? This can often be an engineering or design manager or leader, who may or may not be the primary maintainers of the project. List them by GitHub Username-->

[@sachin-panayil](https://github.com/sachin-panayil)
[@natalialuzuriaga](https://github.com/natalialuzuriaga)

## Repository Domains

/src/types - [@natalialuzuriaga](https://github.com/natalialuzuriaga)
29 changes: 29 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Lint

on:
pull_request:
push:
branches:
- main
- dev

jobs:
eslint:
name: ESLint
runs-on: ubuntu-latest

steps:
- name: Checkout repo
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm

- name: Install dependencies
run: npm ci

- name: Run ESLint
run: npm run lint
Comment thread Dismissed
50 changes: 50 additions & 0 deletions .github/workflows/release-warning.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Require release label for main PRs
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooo this action is super neat, great for automating and reinforcing release practices especially since it is dealing with main. Might take this for repo-scaffolder


on:
pull_request:
types:
- opened
- reopened
- synchronize
- labeled
- unlabeled
branches:
- main

permissions:
pull-requests: read

jobs:
require-release-label:
runs-on: ubuntu-latest

steps:
- name: Check for release label
uses: actions/github-script@v7
with:
script: |
const labels = context.payload.pull_request.labels.map(l => l.name);

const allowed = [
'release:patch',
'release:minor',
'release:major',
'release:none'
];

const found = labels.filter(l => allowed.includes(l));

if (found.length === 0) {
core.setFailed(
"Missing release label. Add one of: " +
"release:patch | release:minor | release:major | release:none"
);
}

if (found.length > 1) {
core.setFailed(
"Multiple release labels found. Exactly one is required."
);
}

console.log(`Release label OK: ${found[0]}`);
98 changes: 98 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Release a New Verison

on:
pull_request:
types: [closed]
branches:
- main

permissions:
contents: write
pull-requests: read

jobs:
release:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Get release label
id: label
run: |
labels='${{ toJson(github.event.pull_request.labels) }}'

if echo "$labels" | grep -q 'release:major'; then
echo "bump=major" >> $GITHUB_OUTPUT
elif echo "$labels" | grep -q 'release:minor'; then
echo "bump=minor" >> $GITHUB_OUTPUT
elif echo "$labels" | grep -q 'release:patch'; then
echo "bump=patch" >> $GITHUB_OUTPUT
elif echo "$labels" | grep -q 'release:none'; then
echo "bump=none" >> $GITHUB_OUTPUT
else
echo "No release label found. Add one of:"
echo "release:patch | release:minor | release:major | release:none"
exit 1
fi

- name: Exit if no release needed
if: steps.label.outputs.bump == 'none'
run: |
echo "No release requested. Exiting."
exit 0

- name: Get latest version tag
id: version
run: |
latest=$(git tag --list 'v*' --sort=-v:refname | head -n 1)
echo "latest=$latest" >> $GITHUB_OUTPUT

- name: Calculate next version
id: next
run: |
version=${{ steps.version.outputs.latest }}
bump=${{ steps.label.outputs.bump }}

version=${version#v}
IFS='.' read -r major minor patch <<< "$version"

case "$bump" in
major)
major=$((major+1))
minor=0
patch=0
;;
minor)
minor=$((minor+1))
patch=0
;;
patch)
patch=$((patch+1))
;;
esac

next="v$major.$minor.$patch"
echo "next=$next" >> $GITHUB_OUTPUT

- name: Create version tag
run: |
git tag ${{ steps.next.outputs.next }}
git push origin ${{ steps.next.outputs.next }}

- name: Update moving major tag (v1)
run: |
major=$(echo "${{ steps.next.outputs.next }}" | cut -d. -f1)
git tag -f $major
git push origin $major --force

- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.next.outputs.next }}
name: Release ${{ steps.next.outputs.next }}
generate_release_notes: true
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this repo use auto CHANGELOG? May be worth adding a step to update the CHANGELOG right after release creation here. Or you can use a separate workflow file (auto-changelog.yml) for this which we provide in our templates.

I use this workflow in repo-scaffolder and it's super convenient: https://github.com/DSACMS/repo-scaffolder/blob/main/CHANGELOG.md

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oooo also one thing you should do before cutting a release: make sure you review issues and close those that have been completed in the release because it will show up accordingly in the CHANGELOG!

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ive been using the Github generated changelog but its a good idea to include a seperate one for sure!

23 changes: 0 additions & 23 deletions CODEOWNERS.md

This file was deleted.

144 changes: 144 additions & 0 deletions COMMUNITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# COMMUNITY.md

automated-codejson-generator is supported by a dedicated team of individuals fulfilling various roles to ensure its success, security, and alignment with government standards and agency goals.

## Project Members

<!-- TODO: Who are the points of contact in your project who are responsible/accountable for the project? This can often be an engineering or design manager or leader, who may or may not be the primary maintainers of the project.

Roles to include, but not limited to: Project Owner, Technical Lead, Developers/Contributors, Community Manager, Security Team, Policy Advisor, Contracting Officer's Representative, Compliance Officer, Procurement Officer -->

| Role | Name | Affiliation |
| :---------------- | :------------------ | :---------- |
| Open Source Lead | Remy DeCausemaker | DSAC |
| Software Engineer | Sachin Panayil | DSAC |
| Software Engineer | Natalia Luzuriaga | DSAC |
| Software Engineer | Isaac Milarsky | DSAC |
| Software Engineer | Dinne Kopelevich | DSAC |

See [CODEOWNERS.md](.github/CODEOWNERS.md) for a list of those responsible for the code and documentation in this repository.

See [Community Guidelines](COMMUNITY.md) on principles and guidelines for participating in this open source project.

## Roles & Responsibilities

The members of automated-codejson-generator community are responsible for guiding its development, ensuring quality standards, and fostering a collaborative environment. They play a vital role in making decisions about code contributions, handling releases, and ensuring the project meets its goals and objectives. Below is a list of the key members and their specific roles and responsibilities. We are eagerly seeking individuals who are interested in joining the community and helping shape and support these roles.

### Maintainers:

GitHub Action

- [@sachin-panayil](https://github.com/sachin-panayil)

Scripting

- [@sachin-panayil](https://github.com/sachin-panayil)

### Approvers:

- [@decause-gov](https://github.com/decause-gov)

### Reviewers:

- [@natalialuzuriaga](https://github.com/natalialuzuriaga)
- [@IsaacMilarky](https://github.com/IsaacMilarky)
- [@sachin-panayil](https://github.com/sachin-panayil)
- [@DinneK](https://github.com/DinneK)

| Roles | Responsibilities | Requirements | Defined by |
| ---------- | :--------------------------------------------- | :-------------------------------------------------------------------------------- | :-------------------------------------------------------- |
| member | active contributor in the community | multiple contributions to the project. | PROJECT GitHub org Committer Team |
| reviewer | review contributions from other members | history of review and authorship in a sub-project | COMMUNITY file reviewer entry, and GitHub Org Triage Team |
| approver | approve accepting contributions | highly experienced and active reviewer + contributor to a sub-project | COMMUNITY file approver entry and GitHub Triage Team |
| maintainer | set direction and priorities for a sub-project | demonstrated responsibility and excellent technical judgement for the sub-project | COMMUNITY file owner entry and GitHub Org Admin Team |

See [CONTRIBUTING.md](CONTRIBUTING.md) for more details on the release process.

## Contributors

<!-- TODO: A list of CONTRIBUTORS is generated below using contributors.yml located in the workflows directory. In order to automatically update the COMMUNITY.md, you must enter a secret into your Secrets and Variables under Actions within your repository settings. The name of the secret must be PUSH_TO_PROTECTED_BRANCH and the value must be a Personal Access Token with specific permissions. Please follow [this link](https://github.com/CasperWA/push-protected?tab=readme-ov-file#notes-on-token-and-user-permissions) for more information. -->

![](https://img.shields.io/github/contributors/DSACMS/automated-codejson-generator?style=flat-square&label=Contributor%20Count(incl.%20bots))

<!-- readme: contributors -start -->
<table>
<tbody>
<tr>
<td align="center">
<a href="https://github.com/sachin-panayil">
<img src="https://avatars.githubusercontent.com/u/79382140?v=4" width="100;" alt="sachin-panayil"/>
<br />
<sub><b>Sachin Panayil</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/natalialuzuriaga">
<img src="https://avatars.githubusercontent.com/u/29980737?v=4" width="100;" alt="natalialuzuriaga"/>
<br />
<sub><b>Natalia Luzuriaga</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/IsaacMilarky">
<img src="https://avatars.githubusercontent.com/u/24639268?v=4" width="100;" alt="IsaacMilarky"/>
<br />
<sub><b>Isaac Milarsky</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/mjburling">
<img src="https://avatars.githubusercontent.com/u/905175?v=4" width="100;" alt="mjburling"/>
<br />
<sub><b>Michael J Burling</b></sub>
</a>
</td>
</tr>
<tbody>
</table>
<!-- readme: contributors -end -->

<!--
### Alumni

TODO: Who are the past maintainers or contributors who previously played significant roles in this project who are no longer actively involved? Consider including their roles and dates for context.

We'd like to acknowledge the following individuals for their past contributions of this project:
-->

## automated-codejson-generator Open Source Community Guidelines

This document contains principles and guidelines for participating in the automated-codejson-generator open source community.

### Principles

These principles guide our data, product, and process decisions, architecture, and approach.

- Open means transparent and participatory.
- We take a modular and modern approach to software development.
- We build open-source software and open-source process.
- We value ease of implementation.
- Fostering community includes building capacity and making our software and processes accessible to participants with diverse backgrounds and skillsets.
- Data (and data science) is as important as software and process. We build open data sets where possible.
- We strive for transparency for algorithms and places we might be introducing bias.

### Community Guidelines

All community members are expected to adhere to our [Code of Conduct](CODE_OF_CONDUCT.md).

Information on contributing to this repository is available in our [Contributing file](CONTRIBUTING.md).

When participating in Code.json Auto Generator open source community conversations and spaces, we ask individuals to follow the following guidelines:

- When joining a conversation for the first time, please introduce yourself by providing a brief intro that includes:
- your related organization (if applicable)
- your pronouns
- your superpower, and how you hope to use it for automated-codejson-generator
- Embrace a culture of learning, and educate each other. We are all entering this conversation from different starting points and with different backgrounds. There are no dumb questions.
- Take space and give space. We strive to create an equitable environment in which all are welcome and able to participate. We hope individuals feel comfortable voicing their opinions and providing contributions and will do our best to recognize and make space for individuals who may be struggling to find space here. Likewise, we expect individuals to recognize when they are taking up significant space and take a step back to allow room for others.
<!-- TODO: Add if your repo has a community chat - Be present when joining synchronous conversations such as our community chat. Why be here if you're not going to _be here_? -->
- Be respectful.
- Default to positive. Assume others' contributions are legitimate and valuable and that they are made with good intention.

### Acknowledgements

The Community Guidelines sections were originally forked from the [United States Digital Service](https://usds.gov) [Justice40](https://thejustice40.com) open source [repository](https://github.com/usds/justice40-tool), and we would like to acknowledge and thank the community for their contributions.
34 changes: 0 additions & 34 deletions COMMUNITY_GUIDELINES.md

This file was deleted.

Loading
Loading