Skip to content

Commit

Permalink
feat(ci): set up basic github actions
Browse files Browse the repository at this point in the history
Add github actions to verify PR's. These also reflects the local checks
we do via `lefthook` with small additions that are not relevant for local tests.

PR: #3
  • Loading branch information
jbergstroem authored Jul 17, 2024
1 parent d53b9d1 commit 0083011
Show file tree
Hide file tree
Showing 12 changed files with 185 additions and 15 deletions.
17 changes: 17 additions & 0 deletions .github/matchers/actionlint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"problemMatcher": [
{
"owner": "actionlint",
"pattern": [
{
"regexp": "^(?:\\x1b\\[\\d+m)?(.+?)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*: (?:\\x1b\\[\\d+m)*(.+?)(?:\\x1b\\[\\d+m)* \\[(.+?)\\]$",
"file": 1,
"line": 2,
"column": 3,
"message": 4,
"code": 5
}
]
}
]
}
46 changes: 46 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"baseBranches": ["main"],
"timezone": "Europe/Lisbon",
"schedule": ["before 9pm on sunday"],
"extends": [":dependencyDashboard", ":disableRateLimiting", ":semanticCommits"],
"rangeStrategy": "pin",
"enabledManagers": ["github-actions", "regex", "npm"],
"commitMessageAction": "",
"commitMessageTopic": "{{depName}}",
"commitMessageExtra": "{{#if isPinDigest}}{{{newDigestShort}}}{{else}}{{#if isMajor}}{{prettyNewMajor}}{{else}}{{#if isSingleVersion}}{{prettyNewVersion}}{{else}}{{#if newValue}}{{{newValue}}}{{else}}{{{newDigestShort}}}{{/if}}{{/if}}{{/if}}{{/if}}",
"packageRules": [
{
"matchManagers": ["github-actions"],
"commitMessageTopic": "{{depName}}"
},
{
"matchPackagePatterns": ["actionlint"],
"commitMessageTopic": "actionlint"
},
{
"matchPackagePatterns": ["typos"],
"commitMessageTopic": "typos"
},
{
"matchPackagePatterns": ["bun"],
"rangeStrategy": "in-range-only"
}
],
"regexManagers": [
{
"fileMatch": ["^\\.github/workflows/[^/]+\\.yml$"],
"matchStrings": [
"version: \"(?<currentValue>.*?)\"\\s+run: curl -Ls( -o \\w+)? \"https://github.com/(?<depName>.*?)/releases/download.*",
"https://github\\.com/(?<depName>.*?)/archive/refs/tags/v(?<currentValue>.*?)\\.tar\\.gz"
],
"datasourceTemplate": "github-releases",
"extractVersionTemplate": "^v(?<version>.*)$"
}
],
"rebaseWhen": "never",
"labels": ["type: dependencies"],
"prBodyTemplate": "{{{header}}}{{{table}}}{{{notes}}}{{{changelogs}}}{{{controls}}}{{{footer}}}",
"prHeader": "",
"prFooter": ""
}
18 changes: 18 additions & 0 deletions .github/workflows/test-bun.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Bun
on:
pull_request:
paths:
- "**/*.ts"

jobs:
bun-test:
name: Test
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4

- uses: oven-sh/setup-bun@v2
- run: bun install

- name: Run tests
run: bun test
22 changes: 22 additions & 0 deletions .github/workflows/validate-actions.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Github Actions
on:
pull_request:
paths:
- ".github/workflows/*.yml"

jobs:
actionlint:
name: Validate
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4

- name: Install Actionlint
env:
version: "1.7.1"
run: curl -Ls "https://github.com/rhysd/actionlint/releases/download/v${{ env.version }}/actionlint_${{ env.version }}_linux_amd64.tar.gz" | sudo tar -x -z -C /usr/local/bin actionlint

- name: Run Actionlint
run: |
echo "::add-matcher::.github/matchers/actionlint.json"
actionlint -color
20 changes: 20 additions & 0 deletions .github/workflows/validate-biome.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Biome
on:
pull_request:
paths:
- "**/*.ts"
- "**/*.json"

jobs:
biome:
name: Lint and format
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: biomejs/setup-biome@v2

- name: Run Biome
run: biome ci
2 changes: 1 addition & 1 deletion .github/workflows/validate-convco.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: "Conventional Commits"
name: Conventional Commits
on:
pull_request:
types:
Expand Down
19 changes: 19 additions & 0 deletions .github/workflows/validate-renovate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Renovate
on:
pull_request:
paths:
- ".github/workflows/validate-renovate.yml"
- ".github/renovate.json"

jobs:
validate-renovate-config:
name: Validate config
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4

- uses: oven-sh/setup-bun@v2
- run: bun install -g renovate

- name: Validate config
run: renovate-config-validator .github/renovate.json
15 changes: 15 additions & 0 deletions .github/workflows/validate-typos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Typos
on:
pull_request:
paths:
- "**/*.md"

jobs:
typos:
name: Check for language typos
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
# No major tag unfortunately
# https://github.com/crate-ci/typos/issues/857
- uses: crate-ci/[email protected]
4 changes: 4 additions & 0 deletions .lefthook.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,7 @@ run = "bun test"
[pre-commit.commands.typos]
glob = "*.{md,mdoc,mdx}"
run = "typos {staged_files}"

[pre-commit.commands.actionlint]
glob = ".github/workflows/*.yml"
run = "actionlint {staged_files}"
26 changes: 15 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,11 @@ are more sensitive, emailed to <[email protected]>.

To install Topsort.js as a contributor, you need to have Bun installed on your machine. Follow the instructions on the [Bun website](https://bun.sh/) to install it.

You will also need [typos][https://github.com/crate-ci/typos] for validating documentation. Install it through your package manager (on MacOS: `brew install typos-cli`)
You will also need [typos](https://github.com/crate-ci/typos) for validating documentation and [actionlint](https://github.com/rhysd/actionlint) for validating actions. Install it through your package manager of choice (on MacOS: `brew install typos-cli actionlint`).

Clone the repository and install the dependencies:

```sh
```bash
git clone [email protected]:Topsort/topsort.js.git
cd topsort.js
bun install
Expand All @@ -54,6 +54,7 @@ bun install
In order to run a local application and test it against the local Topsort.js you need to do the following (after having the SDK all set up on local machine):

On Topsort.js:

```bash
bun run build
bun link
Expand All @@ -62,19 +63,22 @@ bun link
This will register a local `topsort.js` to be used on the secondary project.

On the secondary project, if using bun, run:

```bash
bun link topsort.js
```

Or add it in dependencies in the package.json file:
```sh

```bash
"topsort.js": "link:topsort.js"
```

## Building the SDK

To build the SDK, run the following command:

```sh
```bash
bun run build
```

Expand All @@ -86,19 +90,21 @@ This command cleans the `dist` directory and compiles the Typescript files into

To run the unit tests, use the following command:

```sh
```bash
bun run test
```

## Code Standards

We follow the coding standards set by Biome. Ensure your code follows these guidelines before submitting a pull request. You can run the formatter with the following command:
```sh

```bash
bun run format
```

To automatically fix issues:
```sh

```bash
bun run format:fix
```

Expand All @@ -116,10 +122,8 @@ We do conventional commits, so it will fail on checker with capital case after c
## Configuration

The SDK uses following configuration files:

`tsconfig.json`: TypeScript configuration.

`tsup.config.ts`: Configuration for the TSUP bundler.
- `tsconfig.json`: TypeScript configuration.
- `tsup.config.ts`: Configuration for the TSUP bundler.

## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.
8 changes: 7 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,18 @@
}
},
"formatter": {
"enabled": true,
"formatWithErrors": true,
"indentStyle": "space",
"enabled": true,
"lineWidth": 100
},
"linter": {
"enabled": true
},
"vcs": {
"enabled": true,
"clientKind": "git",
"defaultBranch": "main",
"useIgnoreFile": true
}
}
3 changes: 1 addition & 2 deletions test/validate-config.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@

import { describe, expect, it } from "bun:test";
import AppError from "../src/lib/app-error";
import { validateConfig } from "../src/lib/validate-config";
import type { Config } from "../src/types/shared";
import AppError from "../src/lib/app-error";

describe("validateConfig", () => {
it("should throw an error if apiKey is missing", () => {
Expand Down

0 comments on commit 0083011

Please sign in to comment.