diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml deleted file mode 100644 index 4d6886c80..000000000 --- a/.github/workflows/documentation.yml +++ /dev/null @@ -1,232 +0,0 @@ -name: Documentation -on: - push: - branches: - - 'main' - paths: - - 'packages/*/src/**' - - '!packages/create-discord-bot/**' - - '!packages/proxy-container/**' - - '!packages/ui/**' - tags: - - '**' - workflow_dispatch: - inputs: - ref: - description: 'The branch, tag or SHA to checkout' - required: true - ref_type: - type: choice - description: 'Branch or tag' - options: - - branch - - tag - required: true -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} - cancel-in-progress: true -jobs: - build-docs: - name: Build & upload documentation - runs-on: ubuntu-latest - env: - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - TURBO_TEAM: ${{ secrets.TURBO_TEAM }} - REF_TYPE: ${{ inputs.ref_type || github.ref_type }} - if: github.repository_owner == 'discordjs' - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - ref: ${{ inputs.ref || '' }} - - - name: Install Node.js v20 - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Install dependencies - uses: ./packages/actions/src/pnpmCache - - - name: Build dependencies - run: pnpm run build - - - name: Checkout main repository - if: ${{ inputs.ref && inputs.ref != 'main' }} - uses: actions/checkout@v4 - with: - path: 'main' - - - name: Build main - if: ${{ inputs.ref && inputs.ref != 'main' }} - shell: bash - run: | - cd main - pnpm install --frozen-lockfile --prefer-offline --loglevel error - pnpm run build - cd .. - - - name: Extract package and semver from tag - if: ${{ env.REF_TYPE == 'tag' }} - id: extract-tag - uses: ./packages/actions/src/formatTag - with: - tag: ${{ inputs.ref || github.ref_name }} - - - name: Apply tag to api-extractor config - if: ${{ env.REF_TYPE == 'tag' && !inputs.ref }} - run: sed -i 's!https://github.com/discordjs/discord.js/tree/main!https://github.com/discordjs/discord.js/tree/${{ github.ref_name }}!' "packages/${{ steps.extract-tag.outputs.package}}/api-extractor.json" - - - name: Build docs - run: pnpm run docs - - - name: Build docs with main api-extractor - if: ${{ inputs.ref && inputs.ref != 'main' }} - run: | - declare -a PACKAGES=("brokers" "builders" "collection" "core" "discord.js" "formatters" "next" "proxy" "rest" "util" "voice" "ws") - for PACKAGE in "${PACKAGES[@]}"; do - cd "packages/${PACKAGE}" - sed -i 's!https://github.com/discordjs/discord.js/tree/main!https://github.com/discordjs/discord.js/tree/${{ inputs.ref }}!' api-extractor.json - ../../main/packages/api-extractor/bin/api-extractor run --local --minify - ../../main/packages/scripts/bin/generateSplitDocumentation.js - cd ../.. - done - - - name: Checkout docs repository - uses: actions/checkout@v4 - with: - repository: 'discordjs/docs' - token: ${{ secrets.DJS_DOCS }} - path: 'out' - - - name: Upload documentation to database - if: ${{ env.REF_TYPE == 'tag' && (!inputs.ref || inputs.ref == 'main') }} - env: - DATABASE_URL: ${{ secrets.DATABASE_URL }} - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./packages/actions/src/uploadDocumentation - with: - package: ${{ steps.extract-tag.outputs.package }} - version: ${{ steps.extract-tag.outputs.semver }} - - - name: Upload documentation to database - if: ${{ env.REF_TYPE == 'tag' && inputs.ref && inputs.ref != 'main' }} - env: - DATABASE_URL: ${{ secrets.DATABASE_URL }} - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./main/packages/actions/src/uploadDocumentation - with: - package: ${{ steps.extract-tag.outputs.package }} - version: ${{ steps.extract-tag.outputs.semver }} - - - name: Upload split documentation to blob storage - if: ${{ env.REF_TYPE == 'tag' && (!inputs.ref || inputs.ref == 'main') }} - env: - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./packages/actions/src/uploadSplitDocumentation - with: - package: ${{ steps.extract-tag.outputs.package }} - version: ${{ steps.extract-tag.outputs.semver }} - - - name: Upload split documentation to blob storage - if: ${{ env.REF_TYPE == 'tag' && inputs.ref && inputs.ref != 'main' }} - env: - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./main/packages/actions/src/uploadSplitDocumentation - with: - package: ${{ steps.extract-tag.outputs.package }} - version: ${{ steps.extract-tag.outputs.semver }} - - - name: Move docs to correct directory - if: ${{ env.REF_TYPE == 'tag' }} - env: - PACKAGE: ${{ steps.extract-tag.outputs.package }} - SEMVER: ${{ steps.extract-tag.outputs.semver }} - run: | - mkdir -p "out/${PACKAGE}" - if [[ "${PACKAGE}" == "discord.js" ]]; then - mv "packages/${PACKAGE}/docs/docs.json" "out/${PACKAGE}/${SEMVER}.json" - mv "packages/${PACKAGE}/docs/docs.api.json" "out/${PACKAGE}/${SEMVER}.api.json" - else - mv "packages/${PACKAGE}/docs/docs.api.json" "out/${PACKAGE}/${SEMVER}.api.json" - fi - - - name: Upload documentation to database - if: ${{ env.REF_TYPE == 'branch' && (!inputs.ref || inputs.ref == 'main') }} - env: - DATABASE_URL: ${{ secrets.DATABASE_URL }} - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./packages/actions/src/uploadDocumentation - - - name: Upload documentation to database - if: ${{ env.REF_TYPE == 'branch' && inputs.ref && inputs.ref != 'main' }} - env: - DATABASE_URL: ${{ secrets.DATABASE_URL }} - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./main/packages/actions/src/uploadDocumentation - - - name: Upload split documentation to blob storage - if: ${{ env.REF_TYPE == 'branch' && (!inputs.ref || inputs.ref == 'main') }} - env: - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./packages/actions/src/uploadSplitDocumentation - - - name: Upload split documentation to blob storage - if: ${{ env.REF_TYPE == 'branch' && inputs.ref && inputs.ref != 'main' }} - env: - BLOB_READ_WRITE_TOKEN: ${{ secrets.BLOB_READ_WRITE_TOKEN }} - uses: ./main/packages/actions/src/uploadSplitDocumentation - - - name: Move docs to correct directory - if: ${{ env.REF_TYPE == 'branch' }} - run: | - declare -a PACKAGES=("brokers" "builders" "collection" "core" "discord.js" "formatters" "next" "proxy" "rest" "util" "voice" "ws") - for PACKAGE in "${PACKAGES[@]}"; do - if [[ "${PACKAGE}" == "discord.js" ]]; then - mkdir -p "out/${PACKAGE}" - mv "packages/${PACKAGE}/docs/docs.json" "out/${PACKAGE}/${GITHUB_REF_NAME}.json" - mv "packages/${PACKAGE}/docs/docs.api.json" "out/${PACKAGE}/${GITHUB_REF_NAME}.api.json" - else - mkdir -p "out/${PACKAGE}" - mv "packages/${PACKAGE}/docs/docs.api.json" "out/${PACKAGE}/${GITHUB_REF_NAME}.api.json" - fi - done - - - name: Commit and push - run: | - cd out - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - git add . - git commit -m "Docs build for ${GITHUB_REF_TYPE} ${GITHUB_REF_NAME}: ${GITHUB_SHA}" || true - git push - - build-indices: - needs: build-docs - name: Build & upload search indices - runs-on: ubuntu-latest - env: - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - TURBO_TEAM: ${{ secrets.TURBO_TEAM }} - if: github.repository_owner == 'discordjs' - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install Node.js v20 - uses: actions/setup-node@v4 - with: - node-version: 20 - - - name: Install dependencies - uses: ./packages/actions/src/pnpmCache - - - name: Build dependencies - run: pnpm run build - - - name: Upload search indices to meilisearch - env: - DATABASE_URL: ${{ secrets.DATABASE_URL }} - SEARCH_API_URL: ${{ secrets.SEARCH_API_URL }} - SEARCH_API_KEY: ${{ secrets.SEARCH_API_KEY }} - uses: ./packages/actions/src/uploadSearchIndices