diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 0000000000000..11dffd965842f --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,75 @@ +name: Update docs +on: + workflow_call: + inputs: + package-dependencies: + description: 'Apt package dependencies' + required: false + default: '' + type: string + repo-name: + description: 'Repo display name in the URL' + required: false + default: ${{ github.event.repository.name }} + type: string + docs-repo: + description: 'Repo to hold the docs' + required: false + default: Transpile-AI/docs + type: string + +permissions: + contents: write + +jobs: + publish-dev-docs: + name: Publish dev docs + uses: ./.github/workflows/publish-docs.yml + secrets: inherit + concurrency: + group: dev-docs + cancel-in-progress: true + with: + package-dependencies: ${{ inputs.package-dependencies }} + repo-name: ${{ inputs.repo-name }} + docs-repo: ${{ inputs.docs-repo }} + + publish-release-docs: + name: Publish release docs + needs: publish-dev-docs + uses: ./.github/workflows/publish-docs.yml + if: always() && startsWith(github.ref, 'refs/tags') + secrets: inherit + with: + version: ${{ github.ref_name }} + package-dependencies: ${{ inputs.package-dependencies }} + repo-name: ${{ inputs.repo-name }} + docs-repo: ${{ inputs.docs-repo }} + + update-versions: + name: Update versions.json + needs: publish-release-docs + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ Docs + uses: actions/checkout@v4 + with: + repository: ${{ inputs.docs-repo }} + token: ${{ secrets.DEV_BOT_PAT }} + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Add version to ${{ inputs.repo-name }}.json + run: | + python versions/add_version.py ${{ inputs.repo-name }} ${{ github.ref_name }} + + - name: Commit and push + run: | + git config --global user.email "hello@transpile-ai.com" + git config --global user.name "ivy-dev-bot" + git add versions/ + git commit -m "Add ${{ github.ref_name }} to ${{ inputs.repo-name }}.json" + git push diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 7492ddc4c0c35..974974fdb332a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,15 +1,15 @@ name: Update docs on: workflow_call: - push: - branches: - - main - tags: - - v* workflow_dispatch: + schedule: + - cron: "0 3 * * *" + +permissions: + contents: write jobs: update-docs: name: Update docs - uses: unifyai/workflows/.github/workflows/docs.yml@main + uses: ./.github/workflows/build-docs.yml secrets: inherit diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 0000000000000..ba5f2e05f8d42 --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,96 @@ +run-name: Publish ${{ inputs.version }} docs +on: + workflow_call: + inputs: + version: + description: 'Version of the docs' + required: false + default: 'dev' + type: string + package-dependencies: + description: 'Apt package dependencies' + required: false + default: '' + type: string + repo-name: + description: 'Repo display name in the URL' + required: false + default: ${{ github.event.repository.name }} + type: string + docs-repo: + description: 'Repo to hold the docs' + required: false + default: Transpile-AI/docs + type: string + +permissions: + contents: write + +jobs: + publish-docs: + runs-on: ubuntu-latest + name: Publish ${{ inputs.version }} docs + steps: + - name: Checkout 🛎️ ${{ inputs.repo-name }} + uses: actions/checkout@v4 + with: + fetch-depth: 0 + submodules: recursive + + - name: Checkout 🛎️ Doc-builder + uses: actions/checkout@v4 + with: + repository: Transpile-AI/doc-builder + path: .doc-builder + + - name: Install apt dependencies + if: inputs.package-dependencies != '' + run: | + sudo apt-get update + sudo apt-get install -y ${{ inputs.package-dependencies }} + + - name: Setup Python + uses: actions/setup-python@v4 + id: setup-python + with: + python-version: '3.10' + + - name: Get cache week key + id: get-cache-week-key + run: | + echo "week-key=$(date +'%Y-%V')" >> $GITHUB_OUTPUT + + - name: Cache dependencies + uses: actions/cache@v3 + id: cache + with: + path: ./.venv + key: ${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip-${{ steps.get-cache-week-key.outputs.week-key }} + restore-keys: | + ${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-pip- + + - name: Create virtual environment + if: steps.cache.outputs.cache-hit != 'true' + run: | + python -m venv .venv + + - name: Build docs + run: | + source .venv/bin/activate + pip install --upgrade pip + pip install wheel setuptools + cd .doc-builder + export IVY_VERSION=${{ inputs.version }} + ./make_docs_without_docker.sh .. + + - name: Deploy to GitHub Pages + uses: JamesIves/github-pages-deploy-action@v4.6.1 + with: + folder: docs/build + target-folder: "${{ inputs.version != 'dev' && format('{0}/', inputs.version) || '' }}${{ inputs.repo-name }}" + ssh-key: ${{ secrets.DOCS_DEPLOY_KEY }} + branch: main + git-config-name: ivy-dev-bot + git-config-email: hello@transpile-ai.com + repository-name: ${{ inputs.docs-repo }} + clean: true