Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
32 changes: 32 additions & 0 deletions .github/actions/build-test/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: "Build and Test"
description: "Install deps, build and test the Chat SDK (shared by CI and publish workflows)"
inputs:
node-version:
description: "Node.js version"
required: false
default: "22" # OIDC requires Node >= 22.14; PR CI uses the same version we publish from
Comment thread
levalleux-ludo marked this conversation as resolved.
Outdated
runs:
using: "composite"
steps:
- uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
registry-url: "https://registry.npmjs.org" # writes .npmrc; harmless on PR, used by OIDC on publish
cache: "npm"
- name: Upgrade npm (trusted publishing needs >= 11.5.1)
shell: bash
run: npm install -g npm@latest
Comment thread
levalleux-ludo marked this conversation as resolved.
Outdated
- uses: actions/cache@v4
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: npm-
Comment thread
levalleux-ludo marked this conversation as resolved.
Outdated
- name: Install dependencies
shell: bash
run: npm ci
- name: Build
shell: bash
run: npm run build
- name: Test
shell: bash
run: npm run test
17 changes: 2 additions & 15 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,23 +1,10 @@
name: Call reusable workflow - Chat SDK
name: CI - Chat SDK

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

jobs:
call-reusable-workflow-PR:
uses: ./.github/workflows/ci_reusable.yaml
if: github.event_name == 'pull_request'
with:
PUBLISH_NPM: false
secrets: inherit
call-reusable-workflow-testing:
build-test:
uses: ./.github/workflows/ci_reusable.yaml
if: github.event_name == 'push'
with:
PUBLISH_NPM: true
secrets: inherit
56 changes: 6 additions & 50 deletions .github/workflows/ci_reusable.yaml
Original file line number Diff line number Diff line change
@@ -1,60 +1,16 @@
name: Build, Test and Publish - Chat SDK
name: Build and Test - Chat SDK

on:
workflow_call:
inputs:
PUBLISH_NPM:
required: true
type: boolean
secrets:
NPM_TOKEN:
required: true

jobs:
build-test-publish:
name: Build, Test and Publish
build-test:
name: Build and Test
runs-on: ubuntu-latest
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
PUBLISH_NPM: ${{ inputs.PUBLISH_NPM }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.ref }}
Comment thread
levalleux-ludo marked this conversation as resolved.
Outdated
- uses: actions/setup-node@v3
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"
cache: "npm"
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: npm-
- run: npm ci
- run: npm run prettier
- uses: ./.github/actions/build-test # same shared composite as publish.yaml
- run: npm run prettier # PR-only quality checks (mutate tree; not run on publish)
- run: npm run lint:fix
Comment thread
levalleux-ludo marked this conversation as resolved.
Outdated
- run: npm run build
- run: npm run test
- name: Set github bot
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
- name: "Update to alpha version"
if: inputs.PUBLISH_NPM
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
run: |
git reset --hard
npm version prerelease --preid alpha
OLD_MSG=$(git log --format=%B -n1)
git commit --amend -m "$OLD_MSG" -m "[skip ci]"
git push
git push --tags
- name: "Publish to npm"
if: inputs.PUBLISH_NPM
run: |
npm publish --tag alpha
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
59 changes: 0 additions & 59 deletions .github/workflows/publish-latest.yaml

This file was deleted.

60 changes: 60 additions & 0 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Publish - Chat SDK

on:
push:
branches:
- main
workflow_dispatch:

Comment thread
levalleux-ludo marked this conversation as resolved.
permissions:
contents: write # push alpha version commit/tag + create GitHub release
id-token: write # OIDC trusted publishing + provenance
issues: write # semantic-release release comments
pull-requests: write # semantic-release release comments

jobs:
publish:
name: Build, Test and Publish
if: ${{ github.ref == 'refs/heads/main' }}
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # semantic-release needs full history
# persist-credentials defaults true -> alpha `git push` works
- uses: ./.github/actions/build-test # shared composite: setup-node + npm upgrade + ci + build + test
Comment thread
levalleux-ludo marked this conversation as resolved.

# ---- alpha: every push to main ----
- name: Configure git author
if: github.event_name == 'push'
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
Comment thread
levalleux-ludo marked this conversation as resolved.
- name: Publish alpha to npm
if: github.event_name == 'push'
run: |
git reset --hard
npm version prerelease --preid alpha
OLD_MSG=$(git log --format=%B -n1)
git commit --amend -m "$OLD_MSG" -m "[skip ci]"
git push
git push --tags
Comment thread
levalleux-ludo marked this conversation as resolved.
Outdated
npm publish --tag alpha # tokenless OIDC, provenance automatic

# ---- latest: on demand (workflow_dispatch) ----
- name: Publish latest + GitHub release (semantic-release)
if: github.event_name == 'workflow_dispatch'
uses: cycjimmy/semantic-release-action@v4
with:
semantic_version: 25 # bundles @semantic-release/npm >= 13.1 (OIDC)
extra_plugins: |
@semantic-release/changelog@6
@semantic-release/git@10
branches: |
[
'main'
]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # no NPM_TOKEN — OIDC handles npm auth
Loading