mirror of
https://github.com/hanzoai/account-sdk.git
synced 2026-09-24 16:55:42 +00:00
Delete upstream workflows
This fork does not ship upstream's releases, and its hosted-runner jobs never start here. Claude-Session: https://claude.ai/code/session_01HuMDfgFssPUptYUzgZ6Cp8
This commit is contained in:
@@ -1,158 +0,0 @@
|
||||
name: Claude Code Review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, synchronize, ready_for_review, reopened]
|
||||
|
||||
concurrency:
|
||||
group: claude-review-${{ github.event.pull_request.number }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
# This allows posting comments and reviews
|
||||
# It does not allow pushing any commits or modifying any files in the repo
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
review:
|
||||
name: Review PR
|
||||
# Note: This job runs on the BaseRunnerGroup to be able to access LLM Gateway
|
||||
# It will not work on other runners
|
||||
# Skip for external contributor PRs (forks) — secrets and runner group are unavailable
|
||||
if: github.event.pull_request.head.repo.full_name == github.repository
|
||||
timeout-minutes: 30
|
||||
runs-on:
|
||||
group: BaseRunnerGroup
|
||||
steps:
|
||||
- name: Harden the runner (Block unauthorized outbound calls)
|
||||
uses: step-security/harden-runner@002fdce3c6a235733a90a27c80493a3241e56863 # v2.12.1
|
||||
with:
|
||||
egress-policy: block
|
||||
allowed-endpoints: >
|
||||
api.github.com:443
|
||||
bun.sh:443
|
||||
github.com:443
|
||||
objects.githubusercontent.com:443
|
||||
registry.npmjs.org:443
|
||||
release-assets.githubusercontent.com:443
|
||||
${{ vars.LLM_GATEWAY_HOSTNAME }}:443
|
||||
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
fetch-depth: 1
|
||||
- name: Run Claude Code
|
||||
id: claude-review
|
||||
uses: anthropics/claude-code-action@1b8ee3b94104046d71fde52ec3557651ad8c0d71 # v1.0.29
|
||||
env:
|
||||
ANTHROPIC_BASE_URL: https://${{ vars.LLM_GATEWAY_HOSTNAME }}
|
||||
|
||||
with:
|
||||
anthropic_api_key: ${{ secrets.LLM_GATEWAY_API_KEY }}
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# When track_progress is enabled:
|
||||
# - Creates a tracking comment with progress checkboxes
|
||||
# - Includes all PR context (comments, attachments, images)
|
||||
# - Updates progress as the review proceeds
|
||||
# - Marks as completed when done
|
||||
track_progress: false
|
||||
|
||||
# review instructions
|
||||
prompt: |
|
||||
You are reviewing a Pull Request for Base Account SDK — a TypeScript monorepo providing Coinbase Base's account, payment, and subscription libraries.
|
||||
|
||||
CODEBASE:
|
||||
- Yarn 4 (Berry) workspaces monorepo, Node 20
|
||||
- packages/account-sdk (@base-org/account): core SDK — payments, subscriptions, EIP-1193 provider, signing, RPC, embedded UI (Preact + zustand)
|
||||
- packages/account-ui (@base-org/account-ui): multi-framework UI components (Preact, React, Vue, Svelte entrypoints)
|
||||
- packages/account-cli (@base-org/account-cli): CLI tool
|
||||
- examples/testapp: Next.js 14 playground/demo app
|
||||
- Key dependencies: viem, ox, @coinbase/cdp-sdk, preact, zustand, eventemitter3
|
||||
- Dual browser/node entrypoints via conditional exports in package.json
|
||||
- Browser bundle built with Rollup + terser, bundle size budget enforced by size-limit (31 KB)
|
||||
- CI already enforces: Biome lint + format (explicit ruleset, not recommended preset), TypeScript strict typecheck, Vitest tests on Node 20 & 22, CodeQL
|
||||
|
||||
PR TITLE ENFORCEMENT (do this FIRST, before the code review):
|
||||
The PR title MUST follow Conventional Commits: `type(optional-scope): description` or `type!: description` for breaking changes.
|
||||
Allowed types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert.
|
||||
Rules:
|
||||
- The type must be lowercase
|
||||
- A colon and space (": ") must follow the type (or scope, or "!")
|
||||
- The description must start with a lowercase letter
|
||||
- Example valid titles: "feat: add payment retry logic", "fix(provider): handle null RPC response", "feat!: redesign subscription API"
|
||||
Steps:
|
||||
1. Get the current PR title: gh pr view ${{ github.event.pull_request.number }} --json title --jq '.title'
|
||||
2. Check if it matches the pattern: ^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?!?: .+
|
||||
3. If it does NOT match, infer the correct type from the PR diff and description, then fix it:
|
||||
gh pr edit ${{ github.event.pull_request.number }} --title "<corrected title>"
|
||||
4. Post a short comment explaining what you changed and why (use the summary comment, not a separate one)
|
||||
|
||||
REVIEW GUIDELINES:
|
||||
- Review like a senior TypeScript engineer who owns this SDK
|
||||
- Focus on correctness, type safety, security, and public API design
|
||||
- DO NOT comment on formatting, import ordering, or style — Biome handles all of that
|
||||
- DO NOT post praise, "looks good", or filler comments. If everything is fine, post nothing
|
||||
- Use inline comments for specific code feedback via mcp__github_inline_comment__create_inline_comment
|
||||
- Post one summary comment at the end with your overall assessment (only if you have findings)
|
||||
|
||||
DUPLICATE AVOIDANCE:
|
||||
Before posting any inline comment, first fetch all existing inline review comments on this PR by running:
|
||||
gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/comments --jq '.[] | select(.user.login == "github-actions[bot]") | {path, body}'
|
||||
Do NOT post a comment if there is already a comment from github-actions[bot] on the same file raising the same or substantially similar issue.
|
||||
Only post new findings that haven't been raised before.
|
||||
|
||||
WHAT TO LOOK FOR (ordered by severity):
|
||||
|
||||
1. Security (critical):
|
||||
- Private keys, mnemonics, or secrets leaking into logs, error messages, or analytics
|
||||
- Signature validation gaps — verify that signed data is checked before trust
|
||||
- Untrusted RPC responses used without validation (e.g., trusting returned addresses or amounts)
|
||||
- XSS vectors in embedded UI: innerHTML, dangerouslySetInnerHTML, unsanitized user input rendered in Preact components
|
||||
- postMessage handlers without origin checks
|
||||
- Sensitive data in localStorage/IndexedDB without encryption
|
||||
|
||||
2. Correctness & type safety:
|
||||
- `as` type assertions that bypass the compiler — prefer type guards or narrowing
|
||||
- `any` types leaking into non-test code (Biome warns, but review for subtle cases)
|
||||
- Non-null assertions (`!`) on values that can genuinely be null/undefined at runtime
|
||||
- Unhandled promise rejections — async functions called without await or .catch()
|
||||
- Race conditions in async state management (zustand store updates, concurrent provider calls)
|
||||
- BigInt / numeric handling: mixing Number and BigInt, precision loss on token amounts or gas values
|
||||
- Incorrect error subclassing or swallowed error context in catch blocks
|
||||
|
||||
3. Public API & SDK design (this is a published npm package):
|
||||
- Breaking changes to exported types, function signatures, or behavior without a major version bump
|
||||
- New exports missing from package.json "exports" map (browser/node conditional paths)
|
||||
- Leaking internal types or implementation details through the public API surface
|
||||
- Generic error messages that don't help SDK consumers debug integration issues
|
||||
- Missing or incorrect JSDoc on public APIs — consumers rely on these for IDE hints
|
||||
|
||||
4. Performance & bundle size:
|
||||
- Large new dependencies or deep dependency trees that inflate the browser bundle (31 KB budget)
|
||||
- Top-level side effects in modules that should be tree-shakeable
|
||||
- Heavy operations (crypto, encoding, network calls) on the main thread without consideration for web workers
|
||||
- Unnecessary re-renders in Preact components: missing memoization, new object/array refs in render
|
||||
|
||||
5. Architecture & patterns:
|
||||
- Circular dependencies between packages or within the SDK's internal modules
|
||||
- Browser-only APIs (window, document, DOM) used in code paths reachable from the node entrypoint
|
||||
- Node-only APIs (fs, crypto, Buffer) used in code paths reachable from the browser entrypoint
|
||||
- State management anti-patterns: direct store mutation, subscriptions without cleanup
|
||||
- Event listener or WebSocket connections not cleaned up on unmount/disconnect
|
||||
|
||||
6. Testing gaps:
|
||||
- New logic paths introduced without corresponding test coverage
|
||||
- Tests that pass trivially (e.g., testing mocks instead of behavior)
|
||||
- Flaky patterns: real timers, undeterministic ordering, network calls in unit tests
|
||||
|
||||
COMMENT MANAGEMENT:
|
||||
Before posting your review summary, clean up previous summary comments from earlier runs:
|
||||
1. Delete your previous summary comments by running: gh pr comment ${{ github.event.pull_request.number }} --delete-last --yes
|
||||
2. Repeat step 1 until it returns an error (no more comments to delete)
|
||||
3. Then post your new summary using: gh pr comment ${{ github.event.pull_request.number }} --body "<!-- CLAUDE_REVIEW_SUMMARY -->\n\n<your summary>"
|
||||
Note: --delete-last only deletes your own top-level comments, not inline review comments or other users' comments.
|
||||
|
||||
claude_args: |
|
||||
--model claude-opus-4-6-default
|
||||
--allowedTools "mcp__github_inline_comment__create_inline_comment,Bash(gh pr edit ${{ github.event.pull_request.number }} --title:*),Bash(gh pr comment ${{ github.event.pull_request.number }} --body:*),Bash(gh pr comment ${{ github.event.pull_request.number }} --edit-last --body:*),Bash(gh pr comment ${{ github.event.pull_request.number }} --delete-last:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/comments:*)"
|
||||
@@ -1,73 +0,0 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [master]
|
||||
schedule:
|
||||
- cron: "45 14 * * 6"
|
||||
|
||||
# paths-ignore:
|
||||
# - packages/wallet-native-sdk
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: ["javascript"]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
@@ -1,109 +0,0 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Lint Check
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Checkout node action
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache-dependency-path: 'yarn.lock'
|
||||
|
||||
- name: 'Setup'
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Lint
|
||||
run: yarn lint
|
||||
|
||||
format:
|
||||
name: Format Check
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Checkout node action
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache-dependency-path: 'yarn.lock'
|
||||
|
||||
- name: 'Setup'
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Format Check
|
||||
run: yarn format:check
|
||||
|
||||
typecheck:
|
||||
name: Type Check
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Checkout node action
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version-file: '.nvmrc'
|
||||
cache-dependency-path: '**/yarn.lock'
|
||||
|
||||
- name: 'Setup'
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Build packages
|
||||
run: yarn build:packages
|
||||
|
||||
- name: Check Types
|
||||
run: yarn typecheck
|
||||
|
||||
tests:
|
||||
name: Tests
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.x, 22.x, 24.x]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache-dependency-path: '**/yarn.lock'
|
||||
|
||||
- name: 'Setup'
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Build packages
|
||||
run: yarn build:packages
|
||||
|
||||
- name: Run Unit Tests
|
||||
run: yarn test
|
||||
@@ -1,67 +0,0 @@
|
||||
name: Slack notifications for PRs and Issues
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened, reopened]
|
||||
|
||||
env:
|
||||
CHANNEL_WALLET_FEEDBACK: ${{ vars.CHANNEL_WALLET_FEEDBACK }}
|
||||
CHANNEL_WALLET_SQUAD_BUILD: ${{ vars.CHANNEL_WALLET_SQUAD_BUILD }}
|
||||
ON_CALL_WALLET: ${{ vars.ON_CALL_WALLET }}
|
||||
ON_CALL_BUILD_SQUAD: ${{ vars.ON_CALL_BUILD_SQUAD }}
|
||||
|
||||
jobs:
|
||||
checks:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
skip: ${{ env.skip }}
|
||||
steps:
|
||||
- name: Check spam labels
|
||||
if: ${{ contains(github.event.*.labels.*.name, 'spam') }}
|
||||
run: |
|
||||
echo "skip=true" >> $GITHUB_ENV
|
||||
echo "::error:: Spam label found."
|
||||
|
||||
notify:
|
||||
runs-on: ubuntu-latest
|
||||
needs: checks
|
||||
if: ${{ vars.SLACK_ENABLED == 'true' && needs.checks.outputs.skip != 'true' }}
|
||||
steps:
|
||||
- name: Set channel and mention
|
||||
run: |
|
||||
if ${{ contains(join(github.event.issue.labels.*.name), 'type:') }}; then
|
||||
echo "channel=${{ env.CHANNEL_WALLET_FEEDBACK }}" >> $GITHUB_ENV
|
||||
echo "mention=!subteam^${{ env.ON_CALL_WALLET }}" >> $GITHUB_ENV
|
||||
else
|
||||
echo "channel=${{ env.CHANNEL_WALLET_SQUAD_BUILD }}" >> $GITHUB_ENV
|
||||
echo "mention=!subteam^${{ env.ON_CALL_BUILD_SQUAD }}" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Set text
|
||||
run: |
|
||||
text=$(echo "${{ vars.SLACK_TEMPLATE }}")
|
||||
text=${text//'{{event}}'/Issue ${{ env.action }}}
|
||||
text=${text//'{{author}}'/${{ env.author }}}
|
||||
text=${text//'{{url}}'/${{ env.url }}}
|
||||
text=${text//'{{mention}}'/${{ env.mention }}}
|
||||
text=${text//'{{repo}}'/${{ github.repository }}}
|
||||
text="${text//$'\r\n'/'\n'}"
|
||||
text="${text//$'\n'/'\n'}"
|
||||
echo "text=$text" >> $GITHUB_ENV
|
||||
env:
|
||||
action: ${{ github.event.action }}
|
||||
author: ${{ github.event.issue.user.login }}
|
||||
url: ${{ github.event.issue.html_url }}
|
||||
|
||||
- name: Notify Slack
|
||||
uses: slackapi/[email protected]
|
||||
with:
|
||||
payload: |
|
||||
{
|
||||
"channel": "#${{ env.channel }}",
|
||||
"text": "*${{ env.title }}*\n${{ env.text }}",
|
||||
"icon_emoji": ":${{ vars.ICON_EMOJI }}:"
|
||||
}
|
||||
env:
|
||||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
||||
title: ${{ github.event.issue.title }}
|
||||
@@ -1,50 +0,0 @@
|
||||
name: Deploy Base Account SDK Playground to Pages
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [master]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: "20"
|
||||
cache: yarn
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v4
|
||||
with:
|
||||
static_site_generator: next
|
||||
- name: Install dependencies
|
||||
run: yarn install
|
||||
- name: Build and export with Next.js
|
||||
run: yarn deploy
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: ./examples/testapp/out
|
||||
|
||||
deploy:
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
@@ -1,33 +0,0 @@
|
||||
name: PR Title
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, edited, synchronize, reopened]
|
||||
|
||||
permissions:
|
||||
pull-requests: read
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
name: Validate Conventional Commit format
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
types: |
|
||||
feat
|
||||
fix
|
||||
chore
|
||||
docs
|
||||
style
|
||||
refactor
|
||||
perf
|
||||
test
|
||||
build
|
||||
ci
|
||||
revert
|
||||
requireScope: false
|
||||
subjectPattern: ^.+$
|
||||
subjectPatternError: "PR title must not be empty after the type prefix."
|
||||
@@ -1,66 +0,0 @@
|
||||
name: Release Account (Canary)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
packageVersion:
|
||||
description: >
|
||||
Base version for the canary release in MAJOR.MINOR.PATCH format.
|
||||
Leave empty to auto-detect from the pending release-please PR.
|
||||
Examples:
|
||||
- Empty (default): reads version from Release PR (e.g., 2.6.0) and publishes 2.6.0-canary.<timestamp>
|
||||
- "3.0.0": publishes 3.0.0-canary.<timestamp> (use to override when no Release PR exists)
|
||||
required: false
|
||||
default: ""
|
||||
|
||||
jobs:
|
||||
canary:
|
||||
name: Release canary
|
||||
runs-on: ubuntu-latest
|
||||
environment: publish
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
timeout-minutes: 5
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Resolve base version
|
||||
id: version
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
if [ -n "${{ github.event.inputs.packageVersion }}" ]; then
|
||||
echo "base=${{ github.event.inputs.packageVersion }}" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
VERSION=$(gh pr list --label "autorelease: pending" --json title --jq '.[] | select(.title | test("chore\\(account\\)")) | .title | capture("release (?<v>[0-9]+\\.[0-9]+\\.[0-9]+)") | .v')
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "::error::No pending release-please PR found for account. Please provide a version manually."
|
||||
exit 1
|
||||
fi
|
||||
echo "base=$VERSION" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Update npm
|
||||
run: npm install -g npm@latest
|
||||
|
||||
- name: Set version
|
||||
run: yarn workspace @base-org/account version ${{ steps.version.outputs.base }}-canary.$(date +'%Y%m%d%H%M%S')
|
||||
|
||||
- name: Prebuild Packages
|
||||
run: yarn workspace @base-org/account prebuild
|
||||
|
||||
- name: Build Packages
|
||||
run: yarn workspace @base-org/account build
|
||||
|
||||
- name: Publish to npm
|
||||
run: |
|
||||
cd packages/account-sdk
|
||||
npm publish --tag canary --access public
|
||||
@@ -1,58 +0,0 @@
|
||||
# Manual publish workflow for @base-org/account.
|
||||
#
|
||||
# This is the canonical workflow tied to the npm Trusted Publisher entry
|
||||
# for @base-org/account (workflow filename: release-account.yml,
|
||||
# environment: publish). The OIDC token minted by this workflow is the
|
||||
# only one npm will accept for publishing this package.
|
||||
#
|
||||
# Use this workflow to publish a specific version that was prepared (and
|
||||
# already tagged on master) by release-please but not yet pushed to npm,
|
||||
# or for any out-of-band publish.
|
||||
name: Release Account
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
packageVersion:
|
||||
description: "The version to publish in MAJOR.MINOR.PATCH format (e.g., 2.6.0)"
|
||||
required: true
|
||||
default: ""
|
||||
|
||||
jobs:
|
||||
release:
|
||||
env:
|
||||
PACKAGE_VERSION: ${{ github.event.inputs.packageVersion }}
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
environment: publish
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: 'Setup'
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Update npm
|
||||
run: |
|
||||
npm install -g npm@latest
|
||||
|
||||
- name: Set version
|
||||
run: yarn workspace @base-org/account version ${{ env.PACKAGE_VERSION }}
|
||||
|
||||
# Build the package
|
||||
- name: Prebuild Packages
|
||||
run: yarn workspace @base-org/account prebuild
|
||||
|
||||
- name: Build Packages
|
||||
run: yarn workspace @base-org/account build
|
||||
|
||||
- name: Publish to npm
|
||||
run: |
|
||||
cd packages/account-sdk
|
||||
npm publish --tag latest --access public
|
||||
@@ -1,89 +0,0 @@
|
||||
name: Release Please
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
release-please:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
account--release_created: ${{ steps.release.outputs['packages/account-sdk--release_created'] }}
|
||||
account-ui--release_created: ${{ steps.release.outputs['packages/account-ui--release_created'] }}
|
||||
steps:
|
||||
- uses: googleapis/release-please-action@v4
|
||||
id: release
|
||||
with:
|
||||
# Use a PAT (or GitHub App token) instead of GITHUB_TOKEN so that
|
||||
# release-please's release PRs trigger CI. Events from GITHUB_TOKEN
|
||||
# do not start new workflow runs:
|
||||
# https://docs.github.com/en/actions/using-workflows/triggering-a-workflow#triggering-a-workflow-from-a-workflow
|
||||
token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
|
||||
|
||||
publish-account:
|
||||
needs: release-please
|
||||
if: ${{ needs.release-please.outputs.account--release_created == 'true' }}
|
||||
name: Publish @base-org/account
|
||||
runs-on: ubuntu-latest
|
||||
environment: publish
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Update npm
|
||||
run: npm install -g npm@latest
|
||||
|
||||
- name: Prebuild Packages
|
||||
run: yarn workspace @base-org/account prebuild
|
||||
|
||||
- name: Build Packages
|
||||
run: yarn workspace @base-org/account build
|
||||
|
||||
- name: Publish to npm
|
||||
run: |
|
||||
cd packages/account-sdk
|
||||
npm publish --tag latest --access public
|
||||
|
||||
publish-account-ui:
|
||||
needs: release-please
|
||||
if: ${{ needs.release-please.outputs.account-ui--release_created == 'true' }}
|
||||
name: Publish @base-org/account-ui
|
||||
runs-on: ubuntu-latest
|
||||
environment: publish
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Setup
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Update npm
|
||||
run: npm install -g npm@latest
|
||||
|
||||
- name: Build Packages
|
||||
run: yarn build:packages
|
||||
|
||||
- name: Publish to npm
|
||||
run: |
|
||||
cd packages/account-ui
|
||||
npm publish --tag latest --access public
|
||||
@@ -1,46 +0,0 @@
|
||||
# DEPRECATED: This workflow is superseded by the release-please automation (release-please.yml).
|
||||
# Use this only as a fallback if release-please fails.
|
||||
# To be removed after the first successful automated release.
|
||||
name: "[DEPRECATED] Release Account UI (Manual)"
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
packageVersion:
|
||||
description: "The version to publish in MAJOR.MINOR.PATCH format (e.g., 1.1.0)"
|
||||
required: true
|
||||
default: ""
|
||||
|
||||
jobs:
|
||||
release:
|
||||
env:
|
||||
PACKAGE_VERSION: ${{ github.event.inputs.packageVersion }}
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
environment: publish
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: 'Setup'
|
||||
uses: ./.github/actions/setup
|
||||
|
||||
- name: Update npm
|
||||
run: npm install -g npm@latest
|
||||
|
||||
- name: Set version
|
||||
run: yarn workspace @base-org/account-ui version ${{ env.PACKAGE_VERSION }}
|
||||
|
||||
- name: Build Packages
|
||||
run: yarn build:packages
|
||||
|
||||
- name: Publish to npm
|
||||
run: |
|
||||
cd packages/account-ui
|
||||
npm publish --tag latest --access public
|
||||
Reference in New Issue
Block a user