chore(deps): update nodemailer to v8 #1467
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Pull Request Validation | |
| on: | |
| pull_request: | |
| branches: [main] | |
| # Cancel in-progress runs when new commits are pushed | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| packages: read | |
| jobs: | |
| validate-commits: | |
| name: Validate Conventional Commits | |
| runs-on: arc-happyvertical | |
| steps: | |
| - name: Checkout PR branch | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Validate commit messages | |
| uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6 | |
| with: | |
| configFile: .commitlintrc.json | |
| - name: Validate PR title for squash merge | |
| run: | | |
| title="${{ github.event.pull_request.title }}" | |
| echo "Validating PR title: $title" | |
| node scripts/validate-conventional-commits.js --message "$title" | |
| - name: Determine version bump | |
| id: version | |
| run: | | |
| commits=$(git log origin/main..HEAD --no-merges --pretty=format:"%s") | |
| bump="patch" | |
| if echo "$commits" | grep -qE "^feat(\(.+\))?!?:"; then | |
| bump="minor" | |
| fi | |
| if echo "$commits" | grep -qiE "(BREAKING CHANGE|!:)"; then | |
| bump="minor" # Treat as minor until 1.0.0 | |
| fi | |
| echo "bump=$bump" >> $GITHUB_OUTPUT | |
| echo "π¦ Will perform $bump version bump on merge" | |
| - name: Comment on PR | |
| uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7 | |
| with: | |
| script: | | |
| const bump = '${{ steps.version.outputs.bump }}'; | |
| const comment = `## π¦ Version Bump Preview | |
| When this PR is merged, packages will receive a **${bump}** | |
| version bump based on your conventional commits. | |
| ### What happens on merge? | |
| 1. Tests run on main branch | |
| 2. Packages are built | |
| 3. Versions are bumped automatically | |
| 4. Packages are published to GitHub Packages | |
| 5. Git tags are created | |
| No manual intervention needed! π`; | |
| // Check if we already commented | |
| const { data: comments } = await github.rest.issues.listComments({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number | |
| }); | |
| const existingComment = comments.find(c => | |
| c.user.login === 'github-actions[bot]' && | |
| c.body.includes('Version Bump Preview') | |
| ); | |
| if (existingComment) { | |
| await github.rest.issues.updateComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| comment_id: existingComment.id, | |
| body: comment | |
| }); | |
| } else { | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| body: comment | |
| }); | |
| } | |
| validate-workflows: | |
| name: Validate Workflow Files | |
| runs-on: arc-happyvertical | |
| steps: | |
| - name: Checkout PR branch | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| with: | |
| persist-credentials: true | |
| - name: Get changed workflow files | |
| id: changed-files | |
| uses: tj-actions/changed-files@48d8f15b2aaa3d255ca5af3eba4870f807ce6b3c # v45 | |
| with: | |
| files: .github/workflows/*.{yml,yaml} | |
| - name: Validate workflow syntax | |
| if: steps.changed-files.outputs.any_changed == 'true' | |
| run: | | |
| echo "π Validating workflow files..." | |
| files="${{ steps.changed-files.outputs.all_changed_files }}" | |
| echo "Changed files: $files" | |
| # yamllint is pre-installed in arc-runner image | |
| # Validate each changed workflow file | |
| for file in ${{ steps.changed-files.outputs.all_changed_files }}; do | |
| echo " Checking $file..." | |
| yamllint -c .github/.yamllint.yml "$file" || exit 1 | |
| done | |
| echo "β YAML syntax validation passed" | |
| - name: Install act | |
| if: steps.changed-files.outputs.any_changed == 'true' | |
| run: | | |
| # Install specific version of act for security and stability | |
| mkdir -p bin | |
| curl --proto '=https' --tlsv1.2 -sSfL \ | |
| https://raw.githubusercontent.com/nektos/act/master/install.sh \ | |
| | sudo bash -s -- -b bin v0.2.82 | |
| - name: Validate with act | |
| if: steps.changed-files.outputs.any_changed == 'true' | |
| run: | | |
| if ! ./bin/act --list > /tmp/act-output.txt 2>&1; then | |
| echo "β act --list failed - workflow syntax issue" | |
| echo "Error output:" | |
| cat /tmp/act-output.txt | |
| exit 1 | |
| fi | |
| echo "β act validation passed" | |
| - name: Workflow validation summary | |
| if: steps.changed-files.outputs.any_changed == 'true' | |
| run: | | |
| echo "β All workflow validations passed:" | |
| echo " - YAML syntax validated with yamllint" | |
| echo " - Workflow parsing verified with act" | |
| test: | |
| name: Validate Changes | |
| uses: ./.github/workflows/test.yml | |
| docs-build: | |
| name: Validate Documentation Build | |
| runs-on: arc-happyvertical | |
| steps: | |
| - name: Checkout PR branch | |
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | |
| - name: Get changed files | |
| id: changed-files | |
| uses: tj-actions/changed-files@48d8f15b2aaa3d255ca5af3eba4870f807ce6b3c # v45 | |
| with: | |
| files: | | |
| docs/** | |
| packages/*/README.md | |
| packages/*/AGENT.md | |
| packages/*/metadata.json | |
| ecosystem-manifest.json | |
| - name: Setup Environment | |
| if: steps.changed-files.outputs.any_changed == 'true' | |
| uses: ./.github/actions/setup-environment | |
| with: | |
| node-version: '24' | |
| - name: Build documentation site | |
| id: build | |
| if: steps.changed-files.outputs.any_changed == 'true' | |
| run: pnpm run docs:site:build | |
| env: | |
| NODE_OPTIONS: '--max-old-space-size=8192' | |
| - name: Documentation build summary | |
| if: steps.changed-files.outputs.any_changed == 'true' | |
| run: | | |
| if [ "${{ steps.build.outcome }}" = "failure" ]; then | |
| echo "::warning::Documentation build failed (pre-existing Docusaurus SSR issue). This does not block the PR." | |
| else | |
| echo "Documentation site built successfully with no broken links." | |
| fi |