# This workflow is responsible for syncing the docs menu and content to Dev and Prod stages with Algolia and ChatGPT name: Sync Docs on: push: branches: [main] paths: - 'docs/**' pull_request: paths: - 'docs/**' workflow_dispatch: # This workflow contains three jobs jobs: # Publish docs menu docs-menu: name: Publish the docs menu runs-on: ubuntu-latest if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }} timeout-minutes: 3 # Default is 360 env: AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_ASSETS_AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_ASSETS_AWS_SECRET_ACCESS_KEY }} steps: - uses: actions/checkout@v3 # Upload menu.json with a cache of 60 seconds (instead of the default 24h on the CloudFront distribution) - run: 'aws s3 cp docs/menu.json s3://assets.public.serverless/website/framework/docs/menu.json --cache-control max-age=60 --region us-east-2' # Sync docs in Prod sync-docs-prod: name: Sync Docs (Prod) runs-on: ubuntu-latest if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 18 - name: Install dependencies run: npm install - name: Run sync script env: ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY_PROD }} ALGOLIA_DOCS_INDEX: ${{ secrets.ALGOLIA_DOCS_INDEX_PROD }} run: node scripts/sync-docs.js # Sync docs in Dev (push to docs-dev branch) sync-docs-dev: name: Sync Docs (Dev) runs-on: ubuntu-latest if: ${{ github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Git run: | git config --global user.name 'github-actions[bot]' git config --global user.email 'github-actions[bot]@users.noreply.github.com' - name: Push changes to docs-dev run: | git checkout -b docs-dev git push origin docs-dev --force - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: 18 - name: Install dependencies run: npm install - name: Run sync script for dev env: ALGOLIA_APP_ID: ${{ secrets.ALGOLIA_APP_ID }} ALGOLIA_API_KEY: ${{ secrets.ALGOLIA_API_KEY_DEV }} ALGOLIA_DOCS_INDEX: ${{ secrets.ALGOLIA_DOCS_INDEX_DEV }} run: node scripts/sync-docs.js