open-swe/.github/workflows/sync-docs.yml
Brace Sproul 13329fe5c1
fix: Actions testing (#432)
* fix: Actions testing

* cr

* cr
2025-07-16 12:09:16 -07:00

115 lines
No EOL
4.1 KiB
YAML

name: Sync Documentation Files
on:
push:
branches:
- main
workflow_dispatch:
jobs:
sync-docs:
runs-on: ubuntu-latest
if: github.event_name == 'workflow_dispatch' || contains(github.event.head_commit.modified, 'apps/docs/') || contains(github.event.head_commit.added, 'apps/docs/') || contains(github.event.head_commit.removed, 'apps/docs/')
steps:
- name: Checkout source repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for MDX files in apps/docs
id: check-files
run: |
if find apps/docs -name "*.mdx" -type f | head -1 | grep -q .; then
echo "docs_found=true" >> $GITHUB_OUTPUT
echo "Found MDX files to sync"
else
echo "docs_found=false" >> $GITHUB_OUTPUT
echo "No MDX files found in apps/docs"
fi
- name: Clone LangChain docs repository
if: steps.check-files.outputs.docs_found == 'true'
run: |
git clone https://x-access-token:${{ secrets.LANGCHAIN_DOCS_TOKEN }}@github.com/langchain-ai/docs.git langchain-docs
cd langchain-docs
git config user.name "OpenSWE Bot"
git config user.email "openswe-bot@langchain.com"
- name: Create branch for documentation sync
if: steps.check-files.outputs.docs_found == 'true'
run: |
cd langchain-docs
BRANCH_NAME="sync-openswe-docs-$(date +%Y%m%d-%H%M%S)"
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV
git checkout -b "$BRANCH_NAME"
- name: Prepare target directory
if: steps.check-files.outputs.docs_found == 'true'
run: |
cd langchain-docs
# Remove existing content to ensure clean sync
rm -rf src/labs/swe
mkdir -p src/labs/swe
- name: Copy MDX files to LangChain docs
if: steps.check-files.outputs.docs_found == 'true'
run: |
# Copy all .mdx files from apps/docs to the target directory, preserving structure
find apps/docs -name "*.mdx" -type f | while read file; do
# Get the relative path from apps/docs
rel_path="${file#apps/docs/}"
# Create the directory structure in target
target_dir="langchain-docs/src/labs/swe/$(dirname "$rel_path")"
mkdir -p "$target_dir"
# Copy the file
cp "$file" "langchain-docs/src/labs/swe/$rel_path"
done
# List copied files for verification
echo "Copied MDX files:"
find langchain-docs/src/labs/swe/ -name "*.mdx" -type f
echo "Directory structure:"
tree langchain-docs/src/labs/swe/ || find langchain-docs/src/labs/swe/ -type d
- name: Commit changes
if: steps.check-files.outputs.docs_found == 'true'
id: commit
run: |
cd langchain-docs
git add src/labs/swe/
if git diff --staged --quiet; then
echo "No changes to commit"
echo "has_changes=false" >> $GITHUB_OUTPUT
else
git commit -m "Sync OpenSWE documentation files
- Updated MDX files from apps/docs/
- Synced at $(date -u '+%Y-%m-%d %H:%M:%S UTC')
- Source commit: ${{ github.sha }}"
echo "has_changes=true" >> $GITHUB_OUTPUT
fi
- name: Push branch and create pull request
if: steps.check-files.outputs.docs_found == 'true' && steps.commit.outputs.has_changes == 'true'
run: |
cd langchain-docs
git push origin "$BRANCH_NAME"
# Create pull request using GitHub CLI
gh pr create \
--title "Sync OpenSWE Documentation Files" \
--body "This PR syncs documentation files from the OpenSWE repository.
**Changes:**
- Updated MDX files from \`apps/docs/\`
- Target directory: \`src/labs/swe/\`
- Source commit: ${{ github.sha }}
- Synced at $(date -u '+%Y-%m-%d %H:%M:%S UTC')
**Auto-generated by:** OpenSWE Documentation Sync Workflow" \
--head "$BRANCH_NAME" \
--base main
env:
GH_TOKEN: ${{ secrets.LANGCHAIN_DOCS_TOKEN }}