Skip to content

Commit

Permalink
ci: auto publish to NPM (#14)
Browse files Browse the repository at this point in the history
Publish automatically to NPM using
[semantic-release](https://github.com/semantic-release/semantic-release)

Similar to what we did in valora-inc/logging#5

First step to be able to address the following error when trying to use
`es2023` lib in tsconfig:
```
  0:0  error  Parsing error: Invalid value for lib provided: es2023
```

and warning displayed when using eslint:

```
=============

WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.

You may find that it works just fine, or you may not.

SUPPORTED TYPESCRIPT VERSIONS: >=3.3.1 <4.5.0

YOUR TYPESCRIPT VERSION: 5.6.2

Please only submit bug reports when using the officially supported version.

=============
```

Because it requires a more recent version of
[@typescript-eslint/parser](https://typescript-eslint.io/packages/parser)

Which will be addressed by
#13
  • Loading branch information
jeanregisser authored Dec 13, 2024
1 parent 01a1501 commit 8617153
Show file tree
Hide file tree
Showing 5 changed files with 2,811 additions and 671 deletions.
18 changes: 18 additions & 0 deletions .github/workflows/semantic-pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Semantic PR title

on:
pull_request_target:
types:
- opened
- reopened
- edited
- synchronize

jobs:
semantic-pr-title:
name: Semantic PR title
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
81 changes: 81 additions & 0 deletions .github/workflows/workflow.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Workflow

on:
# Run on pushes to main..
push:
branches:
- main
# ..and any pull request.
pull_request:

# Cancel any in progress run of the workflow for a given PR
# This avoids building outdated code
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true

jobs:
check-for-sh:
name: Check for .sh
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: "echo '*** Do not write .sh scripts! ***'; ! find . -type f -name '*.sh' | grep ."
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version-file: 'package.json'
check-latest: true
- run: yarn
- run: yarn format:check
publish:
name: Publish to NPM
if: github.ref == 'refs/heads/main'
needs:
- check-for-sh
- lint
runs-on: ubuntu-latest
permissions:
contents: write # to be able to publish a GitHub release
issues: write # to be able to comment on released issues
pull-requests: write # to be able to comment on released pull requests
id-token: write # to enable use of OIDC for npm provenance
steps:
# actions/checkout MUST come before auth
- uses: actions/checkout@v4
- id: auth
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.MAINNET_SERVICE_ACCOUNT_KEY }}
- id: google-secrets
uses: google-github-actions/get-secretmanager-secrets@v2
with:
secrets: |-
NPM_TOKEN:celo-mobile-mainnet/NPM_TOKEN
SLACK_WEBHOOK_URL:celo-mobile-mainnet/SLACK_ONCALL_WEBHOOK_URL
- uses: actions/setup-node@v4
with:
node-version-file: 'package.json'
check-latest: true
- run: yarn
- run: yarn release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ steps.google-secrets.outputs.NPM_TOKEN }}
- uses: ravsamhq/notify-slack-action@v2
if: always()
with:
status: ${{ job.status }}
notification_title: '{workflow} has {status_message}'
message_format: '{emoji} *{workflow}* {status_message}. <{run_url}|View Run>'
footer: 'Repo: <{repo_url}|{repo}>'
notify_when: 'failure'
# Tag @supporthero on failures, can change to any slack group id
mention_groups: 'S0277QUM4KB'
mention_groups_when: 'failure'
env:
SLACK_WEBHOOK_URL: ${{ steps.google-secrets.outputs.SLACK_WEBHOOK_URL }}
13 changes: 11 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# @valora/eslint-config-typescript

[![GitHub License](https://img.shields.io/github/license/valora-inc/eslint-config-typescript?color=blue)](https://github.com/valora-inc/eslint-config-typescript/blob/main/LICENSE)
[![npm version](https://img.shields.io/npm/v/@valora/eslint-config-typescript.svg)](https://www.npmjs.com/package/@valora/eslint-config-typescript)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/valora-inc/eslint-config-typescript/Workflow/main)](https://github.com/valora-inc/eslint-config-typescript/actions/workflows/workflow.yaml?query=branch%3Amain)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/valora-inc/eslint-config-typescript#contributing)

Shareable ESLint config for Valora TypeScript packages.

## Installing
Expand Down Expand Up @@ -42,6 +47,10 @@ module.exports = {

ESLint [Shareable Configs](https://eslint.org/docs/developer-guide/shareable-configs).

## Publishing
## Contributing

Run `yarn release` and follow the instructions.
- [Reporting issues](https://github.com/valora-inc/eslint-config-typescript/issues)
- [Submitting a pull request](https://github.com/valora-inc/eslint-config-typescript/pulls)
- Publishing updates is done automatically via [semantic-release](https://github.com/semantic-release/semantic-release).
Remember to use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) or your PR will be rejected (since
merging it would mess up the changelog and version numbers).
30 changes: 22 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
{
"name": "@valora/eslint-config-typescript",
"version": "1.0.2",
"version": "0.0.0-semantic-release",
"main": "index.js",
"author": "Valora Inc",
"license": "Apache-2.0",
"scripts": {
"release": "standard-version"
"engines": {
"node": ">=18"
},
"repository": {
"type": "git",
"url": "https://github.com/valora-inc/eslint-config-typescript.git"
},
"scripts": {
"format": "prettier --log-level error --write .",
"format:check": "prettier --check .",
"release": "semantic-release"
},
"dependencies": {
"@typescript-eslint/parser": "^7.1.1"
},
Expand All @@ -23,12 +28,21 @@
"eslint-plugin-react-hooks": ">=4.0.0",
"eslint-plugin-react-native": ">=3.0.0"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/"
},
"devDependencies": {
"@valora/prettier-config": "^0.0.1",
"standard-version": "^9.5.0"
"conventional-changelog-conventionalcommits": "^8.0.0",
"prettier": "^3.3.3",
"semantic-release": "^24.1.2"
},
"prettier": "@valora/prettier-config",
"release": {
"branches": [
"main"
],
"preset": "conventionalcommits"
},
"prettier": "@valora/prettier-config"
"publishConfig": {
"access": "public",
"provenance": true
}
}
Loading

0 comments on commit 8617153

Please sign in to comment.