Skip to content
Open
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
123 changes: 123 additions & 0 deletions .github/workflows/update-contact-center-sdk.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
name: Update Contact Center SDK

on:
schedule:
- cron: "30 12 * * 3"
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
update-sdk:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: .nvmrc
registry-url: https://registry.npmjs.org
cache: yarn

- name: Enable Corepack
run: corepack enable

- name: Install dependencies
run: yarn install --immutable

- name: Update SDK
id: sdk
run: |
current_version="$(node -p "require('./packages/contact-center/store/package.json').dependencies['@webex/contact-center']")"
version="$(npm view @webex/contact-center@next version)"
webex_version="$(npm view webex@next version)"
webex_sdk_version="$(npm view "webex@$webex_version" dependencies.@webex/contact-center)"

if [ "$webex_sdk_version" != "$version" ]; then
echo "::error::webex@$webex_version bundles @webex/contact-center@$webex_sdk_version, not @$version"
exit 1
fi

echo "version=$version" >> "$GITHUB_OUTPUT"
echo "webex_version=$webex_version" >> "$GITHUB_OUTPUT"
yarn workspace @webex/cc-store add "@webex/contact-center@$version"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep generated SDK updates spec-current

Whenever the next tag advances, this command changes the store manifest and lockfile, but the generated branch never updates the exact SDK versions recorded in packages/contact-center/store/ai-docs/store-spec.md:51,97,473 or ai-docs/CONTRACTS.md:29. Every automated PR therefore immediately leaves the repository's contract/spec documentation claiming the old SDK; update those claims as part of the automation (or remove the version snapshots).

AGENTS.md reference: AGENTS.md:L68-L68

Useful? React with 👍 / 👎.

yarn workspace samples-cc-react-app add "@webex/contact-center@$version"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the umbrella Webex package aligned

Whenever the fetched version differs from 3.12.0-next.159, this advances the sample's direct dependency while leaving its exact webex@3.12.0-next.249 dependency unchanged; that umbrella package's lockfile manifest itself pins @webex/contact-center@3.12.0-next.159. The generated lockfile therefore installs two contact-center versions, contrary to the single-copy alignment documented in store-spec.md:473-476, so the corresponding umbrella release should be resolved and updated (or the update deferred until it embeds the selected contact-center build).

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we also update the webex package version in the Sample app?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

yarn workspace samples-cc-react-app add "webex@$webex_version"

perl -pi -e "s/\\Q$current_version\\E/$version/g" \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Refresh the documented umbrella SDK version

When webex@next advances, line 52 changes the sample manifest, but the new replacement here substitutes only current_version (the contact-center version). packages/contact-center/store/ai-docs/store-spec.md:474 separately pins webex at 3.12.0-next.249, so every such generated PR still leaves the standing doc claiming the old umbrella release even though its body and lockfile use the new one; capture the old webex version and update that snapshot too.

AGENTS.md reference: AGENTS.md:L68-L68

Useful? React with 👍 / 👎.

packages/contact-center/store/ai-docs/store-spec.md \
ai-docs/CONTRACTS.md

- name: Build workspace dependencies
run: yarn build:dev

- name: Validate SDK update
run: |
yarn workspace @webex/cc-store test:unit
yarn workspace samples-cc-react-app build
Comment on lines +63 to +64

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Build workspace dependencies before validation

On every fresh scheduled runner, this block runs the store test before any topological workspace build. test:unit type-checks imports from @webex/test-fixtures, and both that package and the sample's @webex/cc-* imports point at untracked dist/type outputs, so yarn install alone leaves the first tsc with unresolved modules and the create-PR step is never reached. Run yarn build:dev (or equivalent topological builds) before these checks.

AGENTS.md reference: AGENTS.md:L84-L85

Useful? React with 👍 / 👎.


- name: Create pull request
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.AUTOMATION_ACCOUNT_TOKEN }}
branch: automation/update-contact-center-sdk

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Rerun full CI when updating an open automation PR

When an automated PR remains open for a second scheduled or manual run, create-pull-request updates this fixed branch and GitHub emits synchronize; because the dependencies and contact-center labels are already present, there is no new labeled event. I checked .github/workflows/pull-request.yml:4-7: full lint/unit CI accepts only opened, labeled, and reopened, while .github/workflows/remove-validated-on-synchronize.yml:5-6 is the only synchronize listener, so the updated dependency commit can be left without full CI for its new head; use a per-version branch/new PR or explicitly retrigger CI on updates.

Useful? React with 👍 / 👎.

delete-branch: true
title: "chore(cc): update SDK to ${{ steps.sdk.outputs.version }}"
commit-message: "chore(cc): update SDK to ${{ steps.sdk.outputs.version }}"
body: |
# COMPLETES N/A (automated weekly dependency update, no linked issue)

## This pull request addresses

Keeping `@webex/contact-center` in sync with the latest `next` pre-release so the widgets keep building against a current, compatible SDK contract.

## by making the following changes

Automated weekly update of the Contact Center SDK from the npm `next` dist-tag:

- `@webex/contact-center`: `${{ steps.sdk.outputs.version }}`
- `webex`: `${{ steps.sdk.outputs.webex_version }}`

### Change Type

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update
- [x] Tooling change
- [ ] Internal code refactor

## The following scenarios were tested

- [ ] The testing is done with the amplify link
- `yarn workspace @webex/cc-store test:unit` and `yarn workspace samples-cc-react-app build` both passed in this workflow run before the PR was opened.

## The GAI Coding Policy And Copyright Annotation Best Practices ##

- [x] GAI was not used (or, no additional notation is required)
- [ ] Code was generated entirely by GAI
- [ ] GAI was used to create a draft that was subsequently customized or modified
- [ ] Coder created a draft manually that was non-substantively modified by GAI (e.g., refactoring was performed by GAI on manually written code)
- [ ] Tool used for AI assistance (GitHub Copilot / Other - specify)
- [ ] Github Copilot
- [ ] Other - Please Specify
- [x] This PR is related to
- [ ] Feature
- [ ] Defect fix
- [ ] Tech Debt
- [x] Automation

### Checklist before merging

- [x] I have not skipped any automated checks
- [x] All existing and new tests passed
- [ ] I have updated the testing document
- [ ] I have tested the functionality with amplify link
labels: dependencies,contact-center
Loading