Skip to content

chore(deps): update nodemailer to v8 #1467

chore(deps): update nodemailer to v8

chore(deps): update nodemailer to v8 #1467

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