diff --git a/.github/workflows/build-old-docs.yml b/.github/workflows/build-old-docs.yml new file mode 100644 index 00000000000..8b7d36fef6e --- /dev/null +++ b/.github/workflows/build-old-docs.yml @@ -0,0 +1,126 @@ +name: Build old docs + +on: + workflow_dispatch: + inputs: + release_token: + description: 'Your release token' + required: true + triggered_by: + description: 'CD | TAG | MANUAL' + required: false + default: MANUAL + package: + description: The name of the repo to build documentation for. + type: string + default: docarray + repo_owner: + description: The owner of the repo to build documentation for. Defaults to 'jina-ai'. + type: string + default: jina-ai + pages_branch: + description: Branch that Github Pages observes + type: string + default: gh-pages + git_config_name: + type: string + default: Jina Dev Bot + git_config_email: + type: string + default: dev-bot@jina.ai + +jobs: + token-check: + runs-on: ubuntu-latest + steps: + - run: echo "Success!" + if: "${{ github.event.inputs.release_token }} == ${{ env.release_token }}" + env: + release_token: ${{ secrets.DOCARRAY_RELEASE_TOKEN }} + - id: get_versions + run: | + printf "versions=" >> $GITHUB_OUTPUT + curl https://raw.githubusercontent.com/${{ inputs.repo_owner }}/${{ inputs.package }}/main/docs/_versions.json >> $GITHUB_OUTPUT + outputs: + versions: ${{ steps.get_versions.outputs.versions }} + + build-doc: + needs: token-check + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: ${{ fromJson(needs.token-check.outputs.versions) }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + ref: ${{ matrix.version }} + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - name: Get latest templates + run: | + git show --summary + echo "Get latest sidebar brand template" + wget https://raw.githubusercontent.com/${{ inputs.repo_owner }}/${{ inputs.package }}/main/docs/_templates/sidebar/brand.html + mv ./brand.html ./docs/_templates/sidebar/brand.html + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install wheel + # pip does not properly resolve dependency versions with syntax pip install --no-cache-dir ".[test,full]" + pip install --no-cache-dir ".[test]" + pip install --no-cache-dir ".[full]" + pip install --no-cache-dir ".[qdrant]" + pip install --no-cache-dir ".[annlite]" + pip install --no-cache-dir ".[weaviate]" + pip install --no-cache-dir ".[elasticsearch]" + pip install --no-cache-dir ".[redis]" + cd docs + pip install -r requirements.txt + pip install --pre -U furo + pip install sphinx-markdown-tables==0.0.17 + - name: Sphinx Build + run: | + cd docs + bash makedoc.sh + - name: Package build into artifact + run: | + mv ./docs/_build/dirhtml ./${{ matrix.version }} + zip -r /tmp/build.zip ./${{ matrix.version }}/* + - name: Upload built html + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.version }} + path: /tmp/build.zip + retention-days: 1 + + push-docs: + runs-on: ubuntu-latest + needs: build-doc + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 1 + ref: ${{ inputs.pages_branch }} + - uses: actions/download-artifact@v3 + with: + path: /tmp/artifacts + - name: Clear old builds + run: | + cd docs + for i in $(ls /tmp/artifacts); do git rm -rf "$i" || true; done + - name: In with new builds + run: | + cd docs + for i in $(ls /tmp/artifacts); do unzip "/tmp/artifacts/$i/build.zip"; done + rm _versions.json + wget https://raw.githubusercontent.com/${{ inputs.repo_owner }}/${{ inputs.package }}/main/docs/_versions.json + - name: Push it up! + run: | + git config --local user.email "${{ inputs.git_config_email }}" + git config --local user.name "${{ inputs.git_config_name }}" + git show --summary + git add . && git commit -m "chore(docs): update old docs due to ${{github.event_name}} on ${{github.repository}}" + git push origin diff --git a/.github/workflows/force-docs-build.yml b/.github/workflows/force-docs-build.yml index 48f86048faa..c95e1cde1ce 100644 --- a/.github/workflows/force-docs-build.yml +++ b/.github/workflows/force-docs-build.yml @@ -10,6 +10,28 @@ on: description: 'CD | TAG | MANUAL' required: false default: MANUAL + build_old_docs: + description: 'Whether to build old docs (TRUE | FALSE)' + type: string + default: 'FALSE' + package: + description: The name of the repo to build documentation for. + type: string + default: docarray + repo_owner: + description: The owner of the repo to build documentation for. Defaults to 'jina-ai'. + type: string + default: jina-ai + pages_branch: + description: Branch that Github Pages observes + type: string + default: gh-pages + git_config_name: + type: string + default: Jina Dev Bot + git_config_email: + type: string + default: dev-bot@jina.ai jobs: token-check: @@ -20,20 +42,18 @@ jobs: env: release_token: ${{ secrets.DOCARRAY_RELEASE_TOKEN }} - release-docs: + build-and-push-latest-docs: needs: token-check runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2.5.0 + - uses: actions/checkout@v3 with: - fetch-depth: 0 + fetch-depth: 1 - uses: actions/setup-python@v4 with: - python-version: 3.7 - - name: Build doc and push to gh-pages + python-version: '3.7' + - name: Install Dependencies run: | - git config --local user.email "dev-bot@jina.ai" - git config --local user.name "Jina Dev Bot" python -m pip install --upgrade pip python -m pip install wheel # pip does not properly resolve dependency versions with syntax pip install --no-cache-dir ".[test,full]" @@ -44,28 +64,52 @@ jobs: pip install --no-cache-dir ".[weaviate]" pip install --no-cache-dir ".[elasticsearch]" pip install --no-cache-dir ".[redis]" - mkdir gen-html cd docs pip install -r requirements.txt pip install --pre -U furo + pip install sphinx-markdown-tables==0.0.17 + - name: Sphinx Build + run: | + cd docs bash makedoc.sh - cd ./_build/dirhtml/ - cp -r ./ ../../../gen-html - cd - # back to ./docs - cd .. - git checkout -f gh-pages - git rm -rf ./docs - mkdir -p docs - cd gen-html - cp -r ./ ../docs - cd ../docs - ls -la - touch .nojekyll - cp 404/index.html 404.html - sed -i 's/href="\.\./href="/' 404.html # fix asset urls that needs to be updated in 404.html - echo docarray.jina.ai > CNAME - cd .. - git add docs - git status - git commit -m "chore(docs): update docs due to ${{github.event_name}} on ${{github.repository}}" - git push --force origin gh-pages + mv ./_build/dirhtml /tmp/gen-html + - name: Checkout to GH pages branch (${{ inputs.pages_branch }}) + run: | + git fetch origin ${{ inputs.pages_branch }}:${{ inputs.pages_branch }} --depth 1 + git checkout -f ${{ inputs.pages_branch }} + git reset --hard HEAD + - name: Small config stuff + run: | + touch /tmp/gen-html/.nojekyll + cp ./docs/CNAME /tmp/gen-html/CNAME + cp ./docs/_versions.json /tmp/gen-html/_versions.json + cp /tmp/gen-html/404/index.html /tmp/gen-html/404.html + sed -i 's/href="\.\./href="/' /tmp/gen-html/404.html # fix asset urls that needs to be updated in 404.html + - name: Moving old doc versions + run: | + cd docs + for i in $(cat _versions.json | jq '.[].version' | tr -d '"'); do mv "$i" /tmp/gen-html; done + - name: Swap in new docs + run: | + rm -rf ./docs + mv /tmp/gen-html ./docs + - name: Push it up! + run: | + git config --local user.email "${{ inputs.git_config_email }}" + git config --local user.name "${{ inputs.git_config_name }}" + git show --summary + git add ./docs && git commit -m "chore(docs): update docs due to ${{github.event_name}} on ${{github.repository}}" + git push origin ${{ inputs.pages_branch }} + + build-old-docs: + needs: build-and-push-latest-docs + runs-on: ubuntu-latest + if: inputs.build_old_docs == 'TRUE' + steps: + - uses: benc-uk/workflow-dispatch@v1 + with: + workflow: Build old docs + token: ${{ secrets.JINA_DEV_BOT }} + inputs: '{ "release_token": "${{ env.release_token }}", "triggered_by": "TAG"}' + env: + release_token: ${{ secrets.DOCARRAY_RELEASE_TOKEN }} diff --git a/.github/workflows/tag.yml b/.github/workflows/tag.yml index d6a270e6463..cd658781be6 100644 --- a/.github/workflows/tag.yml +++ b/.github/workflows/tag.yml @@ -18,7 +18,7 @@ jobs: with: workflow: Manual Docs Build token: ${{ secrets.JINA_DEV_BOT }} - inputs: '{ "release_token": "${{ env.release_token }}", "triggered_by": "TAG"}' + inputs: '{ "release_token": "${{ env.release_token }}", "triggered_by": "TAG", "build_old_docs": "TRUE"}' env: release_token: ${{ secrets.DOCARRAY_RELEASE_TOKEN }} diff --git a/docs/_templates/sidebar/brand.html b/docs/_templates/sidebar/brand.html index 1531f31b10f..48e37ed9643 100644 --- a/docs/_templates/sidebar/brand.html +++ b/docs/_templates/sidebar/brand.html @@ -16,26 +16,33 @@ {%- endif %} {% endblock brand_content %} + +