name: Documentation on: push: branches: - 'main' paths: - 'packages/*/src/**' 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: name: Build documentation 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@v3 with: ref: ${{ inputs.ref || '' }} - name: Install node.js v16 uses: actions/setup-node@v3 with: node-version: 16 - name: Install dependencies uses: ./packages/actions/src/yarnCache - name: Build dependencies run: yarn build - name: Build docs run: yarn docs - name: Upload docgen artifacts uses: actions/upload-artifact@v3 with: name: docgen path: packages/*/docs/docs.json - name: Upload api-extractor artifacts uses: actions/upload-artifact@v3 with: name: api-extractor path: packages/*/docs/docs.api.json upload: name: Upload Documentation needs: build strategy: max-parallel: 1 fail-fast: false matrix: package: [ 'brokers', 'builders', 'collection', 'core', 'discord.js', 'next', 'formatters', 'proxy', 'rest', 'util', 'voice', 'ws', ] runs-on: ubuntu-latest env: TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} TURBO_TEAM: ${{ secrets.TURBO_TEAM }} steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install node.js v16 uses: actions/setup-node@v3 with: node-version: 16 - name: Install dependencies uses: ./packages/actions/src/yarnCache - name: Build actions run: yarn workspace @discordjs/actions build - name: Download docgen artifacts uses: actions/download-artifact@v3 with: name: docgen path: docs - name: Download api-extractor artifacts uses: actions/download-artifact@v3 with: name: api-extractor path: docs - name: Checkout docs repository uses: actions/checkout@v3 with: repository: 'discordjs/docs' token: ${{ secrets.DJS_DOCS }} path: 'out' - name: Extract package and semver from tag if: ${{ github.ref_type == 'tag' }} id: extract-tag uses: ./packages/actions/src/formatTag with: tag: ${{ github.ref_name }} - name: Upload documentation to database if: ${{ github.ref_type == 'tag' && matrix.package == steps.extract-tag.outputs.package }} env: DATABASE_URL: ${{ secrets.DATABASE_URL }} uses: ./packages/actions/src/uploadDocumentation with: package: ${{ steps.extract-tag.outputs.package }} version: ${{ steps.extract-tag.outputs.semver }} - name: Move docs to correct directory if: ${{ github.ref_type == 'tag' && matrix.package == steps.extract-tag.outputs.package }} env: PACKAGE: ${{ steps.extract-tag.outputs.package }} SEMVER: ${{ steps.extract-tag.outputs.semver }} run: | mkdir -p out/${PACKAGE} if [[ $PACKAGE == "discord.js" ]]; then mv docs/${PACKAGE}/docs/docs.json out/${PACKAGE}/${SEMVER}.json fi if [[ $PACKAGE != "discord.js" ]]; then mv docs/${PACKAGE}/docs/docs.api.json out/${PACKAGE}/${SEMVER}.api.json fi - name: Upload documentation to database if: ${{ github.ref_type == 'branch' }} env: DATABASE_URL: ${{ secrets.DATABASE_URL }} uses: ./packages/actions/src/uploadDocumentation with: package: ${{ matrix.package }} - name: Move docs to correct directory if: ${{ github.ref_type == 'branch' }} env: PACKAGE: ${{ matrix.package }} run: | mkdir -p out/${PACKAGE} if [[ $PACKAGE == "discord.js" ]]; then mv docs/${PACKAGE}/docs/docs.json out/${PACKAGE}/${GITHUB_REF_NAME}.json fi if [[ $PACKAGE != "discord.js" ]]; then mv docs/${PACKAGE}/docs/docs.api.json out/${PACKAGE}/${GITHUB_REF_NAME}.api.json fi - 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