name: Release PR on: push: branches: - 'release-please--branches--main' concurrency: group: release-pr cancel-in-progress: false jobs: changelog: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Read version from manifest id: version run: | VERSION=$(jq -r '."packages/core"' .github/release-please/.release-please-manifest.json) echo "tag=@videojs/core@${VERSION}" >> "$GITHUB_OUTPUT" - name: Update root changelog uses: orhun/git-cliff-action@v4 with: config: cliff.toml args: --verbose --tag ${{ steps.version.outputs.tag }} env: OUTPUT: CHANGELOG.md GITHUB_REPO: ${{ github.repository }} - name: Extract changelog for site run: | # Find first versioned release heading (skip [Unreleased]) HEADING=$(grep -n '^## \[@videojs/core@' CHANGELOG.md | head -1) || true if [ -z "$HEADING" ]; then echo "::warning::No versioned release heading found in CHANGELOG.md — skipping site extraction" exit 0 fi LINE_NUM=$(echo "$HEADING" | cut -d: -f1) HEADING_TEXT=$(echo "$HEADING" | cut -d: -f2-) # Parse version and date from heading: ## [@videojs/core@VERSION] - DATE VERSION=$(echo "$HEADING_TEXT" | sed -n 's/.*@videojs\/core@\([^]]*\)\].*/\1/p') DATE=$(echo "$HEADING_TEXT" | sed -n 's/.*- \(.*\)/\1/p') if [ -z "$VERSION" ] || [ -z "$DATE" ]; then echo "::warning::Could not parse version or date from heading — skipping site extraction" exit 0 fi # Find the next ## [ heading to delimit the body NEXT_LINE=$(tail -n +"$((LINE_NUM + 1))" CHANGELOG.md | grep -n '^## \[' | head -1 | cut -d: -f1) || true if [ -n "$NEXT_LINE" ]; then END_LINE=$((LINE_NUM + NEXT_LINE - 1)) BODY=$(sed -n "$((LINE_NUM + 1)),$((END_LINE))p" CHANGELOG.md | sed '/^$/N;/^\n$/d') else BODY=$(tail -n +"$((LINE_NUM + 1))" CHANGELOG.md) fi # Determine prerelease and breaking PRERELEASE=false if echo "$VERSION" | grep -q '-'; then PRERELEASE=true fi BREAKING=false if echo "$BODY" | grep -qiF '**breaking**'; then BREAKING=true fi # Extract compare URL from CHANGELOG footer COMPARE_URL=$(grep -Fm1 "[@videojs/core@${VERSION}]: " CHANGELOG.md | sed 's/.*]: //' || true) # Write the site changelog file OUTFILE="site/src/content/changelog/${VERSION}.md" mkdir -p "$(dirname "$OUTFILE")" cat > "$OUTFILE" <