auri
Version:
Organize package changes and releases
104 lines (76 loc) • 3.2 kB
Markdown
# Auri
Organize package changes and releases in monolith repositories.
```
npm i -D auri
yarn add -D auri
pnpm add -D auri
```
Run commands:
```
npx auri
pnpm auri
yarn auri
```
## Prerequisites
Auri does not work on certain repository setups:
- Your repository is hosted on GitHub.
- Single monolith repository (no monorepos).
- The package can be built and published with: `npm run build && npm publish`.
- The package's `package.json` is in the repository root.
- Pull requests are squashed and merge.
In addition, it's built with a few opinions in mind:
- Only supports version formats like 2.0.0 for normal releases and formats like 2.0.0-next.1 for prereleases (it must be next).
- Prereleases are tagged as 'next' on NPM.
- Non-latest, non-next releases (e.g. 1.8.0 when latest is 2.3.0) will be tagged as 'legacy' on NPM.
## Setup
Install Auri via NPM and update your repository.
### 1. Generate access tokens
Create an NPM automation access token (classic).
### 2. Create GitHub workflow
Create a GitHub workflow that runs on every push. The NPM token should be named `NODE_AUTH_TOKEN` and the GitHub token as `AURI_NPM_TOKEN`.
It is crucial that you setup `actions/checkout@v3` with `github.ref`. Auri expects the current branch to be the target branch.
```yaml
# .github/workflows/publish.yaml
name: "Publish package"
on: [push]
env:
AURI_GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
AURI_NPM_TOKEN: ${{secrets.AURI_NPM_TOKEN}}
jobs:
publish-package:
name: Publish package and release with Auri
runs-on: ubuntu-latest
# TODO: Update repository name.
if: github.repository == 'pilcrowonpaper/auri' && github.ref == 'refs/heads/main'
permissions:
contents: write
id-token: write
steps:
- name: Setup actions
uses: actions/checkout@v3
with:
ref: ${{ github.ref }}
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 20
registry-url: "https://registry.npmjs.org/"
- name: Install dependencies
run: npm install
- name: Build package
run: npm run build
- name: Publish package and release
run: npm run auri publish
```
### 3. Configure permissions
Go to your repository's settings, and go to "Code and automation" > "Actions" > "General." Go to "Workflow permissions" and enable:
- "Read and write permissions"
- "Allow GitHub Actions to create and approve pull requests"
If your GitHub workflow have `permissions` defined, make sure `content` is set to `write`:
```yaml
permissions:
contents: write
```
## Instructions
When you're ready to publish your package, run `auri generate` on your local machine. This will create a `.COMMITS` file with a list of commits since the last release (the version in package.json). Commits starting with `docs:`, `style:`, or `test:` will be ignored. This will also create a `.RELEASE.md`. Using `.COMMITS` as a reference, write your changelog in `.RELEASE.md`. Update the version field in your package.json and commit the change.
With the GitHub action, Auri will build and publish your package to NPM and use the `.RELEASE.md` to publish a new GitHub release.