diff --git a/.github/workflows/update-contact-center-sdk.yml b/.github/workflows/update-contact-center-sdk.yml new file mode 100644 index 000000000..52f818135 --- /dev/null +++ b/.github/workflows/update-contact-center-sdk.yml @@ -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" + yarn workspace samples-cc-react-app add "@webex/contact-center@$version" + yarn workspace samples-cc-react-app add "webex@$webex_version" + + perl -pi -e "s/\\Q$current_version\\E/$version/g" \ + 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 + + - name: Create pull request + uses: peter-evans/create-pull-request@v7 + with: + token: ${{ secrets.AUTOMATION_ACCOUNT_TOKEN }} + branch: automation/update-contact-center-sdk + 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