From c2a48e6f6d379578abc9fff3dad6463fcef3f62c Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Tue, 10 Mar 2026 15:43:42 -0400 Subject: [PATCH 1/4] update preview workflow --- .github/workflows/preview-docs.yml | 65 ++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 8 deletions(-) diff --git a/.github/workflows/preview-docs.yml b/.github/workflows/preview-docs.yml index 252b277..6fde470 100644 --- a/.github/workflows/preview-docs.yml +++ b/.github/workflows/preview-docs.yml @@ -1,16 +1,27 @@ -name: preview-docs +name: Preview Docs -on: pull_request +on: + pull_request_target: + types: [opened, synchronize, ready_for_review] + branches: + - main jobs: run: runs-on: ubuntu-latest permissions: - contents: read - pull-requests: write + pull-requests: write # Only for commenting + contents: read # For checking out code steps: - name: Checkout repository uses: actions/checkout@v4 + with: + fetch-depth: 0 # Fetch full history for git diff + + - name: Checkout PR + run: | + git fetch origin pull/${{ github.event.pull_request.number }}/head:pr-${{ github.event.pull_request.number }} + git checkout pr-${{ github.event.pull_request.number }} - name: Setup Fern CLI uses: fern-api/setup-fern-cli@v1 @@ -20,15 +31,53 @@ jobs: env: FERN_TOKEN: ${{ secrets.FERN_TOKEN }} run: | - OUTPUT=$(fern generate --docs --preview 2>&1) || true + OUTPUT=$(fern generate --docs --preview --instance fern-api.docs.buildwithfern.com/learn 2>&1) || true echo "$OUTPUT" URL=$(echo "$OUTPUT" | grep -oP 'Published docs to \K.*(?= \()') + echo "preview_url=$URL" >> $GITHUB_OUTPUT echo "Preview URL: $URL" - echo "🌿 Preview your docs: $URL" > preview_url.txt - - name: Comment URL in PR + - name: Get page links for changed MDX files + id: page-links + env: + FERN_TOKEN: ${{ secrets.FERN_TOKEN }} + run: | + PREVIEW_URL="${{ steps.generate-docs.outputs.preview_url }}" + CHANGED_FILES=$(git diff --name-only origin/main...HEAD -- '*.mdx' 2>/dev/null || echo "") + + if [ -z "$CHANGED_FILES" ] || [ -z "$PREVIEW_URL" ]; then + echo "page_links=" >> $GITHUB_OUTPUT; exit 0 + fi + + BASE_URL=$(echo "$PREVIEW_URL" | grep -oP 'https?://[^/]+') + + FILES_PARAM=$(echo "$CHANGED_FILES" | tr '\n' ',' | sed 's/,$//') + RESPONSE=$(curl -sf -H "FERN_TOKEN: $FERN_TOKEN" "${PREVIEW_URL}/api/fern-docs/get-slug-for-file?files=${FILES_PARAM}" 2>/dev/null) || { + echo "page_links=" >> $GITHUB_OUTPUT; exit 0 + } + + PAGE_LINKS=$(echo "$RESPONSE" | jq -r --arg url "$BASE_URL" \ + '.mappings[] | select(.slug != null) | "- [\(.slug)](\($url)/\(.slug))"') + + if [ -n "$PAGE_LINKS" ]; then + { echo "page_links<> $GITHUB_OUTPUT + else + echo "page_links=" >> $GITHUB_OUTPUT + fi + + - name: Create comment content + run: | + echo ":herb: **Preview your docs:** <${{ steps.generate-docs.outputs.preview_url }}>" > comment.md + + if [ -n "${{ steps.page-links.outputs.page_links }}" ]; then + echo "" >> comment.md + echo "Here are the markdown pages you've updated:" >> comment.md + echo "${{ steps.page-links.outputs.page_links }}" >> comment.md + fi + + - name: Post PR comment uses: thollander/actions-comment-pull-request@v2.4.3 with: - filePath: preview_url.txt + filePath: comment.md comment_tag: preview-docs mode: upsert From ccbe021b4b7e6b775422746e5450c0a5efc6b493 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Tue, 10 Mar 2026 17:00:27 -0400 Subject: [PATCH 2/4] update instance --- .github/workflows/preview-docs.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/preview-docs.yml b/.github/workflows/preview-docs.yml index 6fde470..cf55d5a 100644 --- a/.github/workflows/preview-docs.yml +++ b/.github/workflows/preview-docs.yml @@ -10,8 +10,8 @@ jobs: run: runs-on: ubuntu-latest permissions: - pull-requests: write # Only for commenting - contents: read # For checking out code + contents: read + pull-requests: write steps: - name: Checkout repository uses: actions/checkout@v4 @@ -31,7 +31,7 @@ jobs: env: FERN_TOKEN: ${{ secrets.FERN_TOKEN }} run: | - OUTPUT=$(fern generate --docs --preview --instance fern-api.docs.buildwithfern.com/learn 2>&1) || true + OUTPUT=$(fern generate --docs --preview --instance plantstore.docs.buildwithfern.com 2>&1) || true echo "$OUTPUT" URL=$(echo "$OUTPUT" | grep -oP 'Published docs to \K.*(?= \()') echo "preview_url=$URL" >> $GITHUB_OUTPUT From cdf228326d3308a717191aceccf28ba808d663c5 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Tue, 10 Mar 2026 17:05:45 -0400 Subject: [PATCH 3/4] simplify pull_request --- .github/workflows/preview-docs.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/preview-docs.yml b/.github/workflows/preview-docs.yml index cf55d5a..c5ae4da 100644 --- a/.github/workflows/preview-docs.yml +++ b/.github/workflows/preview-docs.yml @@ -1,10 +1,6 @@ name: Preview Docs -on: - pull_request_target: - types: [opened, synchronize, ready_for_review] - branches: - - main +on: pull_request jobs: run: From acd73f8364fd014f648f6f579c5ea62a2839e3c6 Mon Sep 17 00:00:00 2001 From: Devin Logan Date: Tue, 10 Mar 2026 18:44:02 -0400 Subject: [PATCH 4/4] remove instance --- .github/workflows/preview-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/preview-docs.yml b/.github/workflows/preview-docs.yml index c5ae4da..15ed940 100644 --- a/.github/workflows/preview-docs.yml +++ b/.github/workflows/preview-docs.yml @@ -27,7 +27,7 @@ jobs: env: FERN_TOKEN: ${{ secrets.FERN_TOKEN }} run: | - OUTPUT=$(fern generate --docs --preview --instance plantstore.docs.buildwithfern.com 2>&1) || true + OUTPUT=$(fern generate --docs --preview 2>&1) || true echo "$OUTPUT" URL=$(echo "$OUTPUT" | grep -oP 'Published docs to \K.*(?= \()') echo "preview_url=$URL" >> $GITHUB_OUTPUT