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
268 changes: 260 additions & 8 deletions .github/workflows/js-test-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,264 @@ concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event_name == 'push' && github.sha || github.ref }}
cancel-in-progress: true

defaults:
run:
shell: bash

jobs:
js-test-and-release:
uses: ipdxco/unified-github-workflows/.github/workflows/js-test-and-release.yml@v1.0
secrets:
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
UCI_GITHUB_TOKEN: ${{ secrets.UCI_GITHUB_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main

check:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: pnpm run --if-present lint
- run: pnpm run --if-present dep-check
- run: pnpm run --if-present doc-check
- run: pnpm run --if-present spell-check

test-node:
needs: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
node: [lts/*]
fail-fast: true
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: pnpm run --if-present test:node
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: node
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
disable_safe_directory: ${{ runner.os == 'Windows' }} # NOTE: The workspace on Windows runners is on the C: drive and the codecov action is unable to lock the git directory on it

test-chrome:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: pnpm run --if-present test:chrome
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: chrome
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

test-chrome-webworker:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: pnpm run --if-present test:chrome-webworker
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: chrome-webworker
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

test-firefox:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: pnpm run --if-present test:firefox
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: firefox
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

test-firefox-webworker:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: pnpm run --if-present test:firefox-webworker
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: firefox-webworker
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

test-webkit:
needs: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
node: [lts/*]
fail-fast: true
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: npx playwright install-deps
- run: pnpm run --if-present test:webkit
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: webkit
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
disable_safe_directory: ${{ runner.os == 'Windows' }} # NOTE: The workspace on Windows runners is on the C: drive and the codecov action is unable to lock the git directory on it

test-webkit-webworker:
needs: build
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
node: [lts/*]
fail-fast: true
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: npx playwright install-deps
- run: pnpm run --if-present test:webkit-webworker
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: webkit-webworker
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
disable_safe_directory: ${{ runner.os == 'Windows' }} # NOTE: The workspace on Windows runners is on the C: drive and the codecov action is unable to lock the git directory on it

test-electron-main:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: npx xvfb-maybe pnpm run --if-present test:electron-main
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: electron-main
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

test-electron-renderer:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- run: npx xvfb-maybe pnpm run --if-present test:electron-renderer
- uses: codecov/codecov-action@fdcc8476540edceab3de004e990f80d881c6cc00 # v5.5.0
with:
flags: electron-renderer
files: .coverage/*,packages/*/.coverage/*
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false

release-check:
needs: [test-node, test-chrome, test-chrome-webworker, test-firefox, test-firefox-webworker, test-webkit, test-webkit-webworker, test-electron-main, test-electron-renderer]
runs-on: ubuntu-latest
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
outputs:
release: ${{ steps.branch.outputs.release }}
steps:
- id: branch
name: Check if the branch is a release branch
env:
BRANCHES: ${{ inputs.branches }}
REF: ${{ github.ref }}
uses: actions/github-script@v7
with:
script: |
const branches = JSON.parse(process.env.BRANCHES);
const ref = process.env.REF.replace(/^refs\/heads\//, '');
const release = branches.some(b => {
const regexPattern = b.replace(/\*/g, '.*');
const regex = new RegExp(`^${regexPattern}$`);
return regex.test(ref);
});
console.log(`This is a release branch: ${release}`);
core.setOutput('release', release);

release:
needs: [release-check]
runs-on: ubuntu-latest
if: needs.release-check.outputs.release == 'true'
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
persist-credentials: false
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- uses: ipfs/aegir/actions/cache-node-modules@main
- uses: ipfs/aegir/actions/docker-login@main
with:
docker-token: ${{ secrets.DOCKER_TOKEN }}
docker-username: ${{ secrets.DOCKER_USERNAME }}
docker-registry: ${{ inputs.docker-registry }}
- run: pnpm run --if-present release
env:
GITHUB_TOKEN: ${{ secrets.UCI_GITHUB_TOKEN || github.token }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ This repository contains TypeScript implementation of noise protocol, an encrypt

## Usage

Install with `yarn add @chainsafe/libp2p-noise` or `npm i @chainsafe/libp2p-noise`.
Install with `yarn add @chainsafe/libp2p-noise`, `npm i @chainsafe/libp2p-noise` or `pnpm add @chainsafe/libp2p-noise`.

Example of using default noise configuration and passing it to the libp2p config:

Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"bugs": {
"url": "https://github.com/ChainSafe/js-libp2p-noise/issues"
},
"packageManager": "pnpm@10.24.0",
"publishConfig": {
"access": "public",
"provenance": true
Expand Down Expand Up @@ -162,7 +163,7 @@
"test:interop": "aegir test -t node -f dist/test/interop.js",
"docs": "aegir docs",
"proto:gen": "protons ./src/proto/payload.proto",
"prepublish": "npm run build",
"prepublish": "pnpm build",
"release": "aegir release"
},
"dependencies": {
Expand Down
Loading