Add self-hosted docs #1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy Documentation to Cloudflare R2 | |
# Trigger the workflow on pushes to the main branch | |
on: | |
push: | |
branches: | |
- master | |
jobs: | |
build-and-deploy: | |
runs-on: ubuntu-latest | |
steps: | |
# 1. Checkout the repository | |
- uses: actions/checkout@v2 | |
# 2. Set up Python 3.12 | |
- name: Setup Python 3.12 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: "3.12" | |
# 3. Cache virtualenv | |
- name: Cache virtualenv | |
id: venv-cache | |
uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: venv-${{ runner.os }}-${{ github.job }}-${{ github.ref }}-3.12 | |
restore-keys: | | |
venv-${{ runner.os }}-${{ github.job }}-${{ github.ref }}- | |
venv-${{ runner.os }}-${{ github.job }}- | |
venv-${{ runner.os }}- | |
# 4. Install Poetry | |
- name: Install Poetry | |
run: python -m pip install poetry | |
# 5. Cache Poetry and pip dependencies (Optional but recommended) | |
- name: Cache Poetry and pip | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cache/pypoetry | |
~/.cache/pip | |
key: poetry-pip-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
poetry-pip-${{ runner.os }}- | |
# 6. Install project dependencies using Poetry | |
- name: Install Dependencies with Poetry | |
run: poetry install --no-interaction --no-ansi | |
# 7. Install additional requirements for documentation | |
- name: Install Documentation Requirements | |
run: | | |
cd docs | |
pip install -r requirements.txt | |
# 8. Build the documentation | |
- name: Build Documentation | |
run: | | |
cd docs | |
make html | |
# Adjust the build command if you're using a different tool | |
# 9. Install AWS CLI (required for S3-compatible APIs like Cloudflare R2) | |
- name: Install AWS CLI | |
run: | | |
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" | |
unzip awscliv2.zip | |
sudo ./aws/install | |
# 10. Configure AWS CLI for Cloudflare R2 | |
- name: Configure AWS CLI for Cloudflare R2 | |
run: | | |
aws configure set aws_access_key_id ${{ secrets.CF_R2_ACCESS_KEY_ID }} | |
aws configure set aws_secret_access_key ${{ secrets.CF_R2_SECRET_ACCESS_KEY }} | |
aws configure set default.region us-east-1 # R2 uses us-east-1 by default | |
aws configure set default.output json | |
# 11. Sync the built documentation to the Cloudflare R2 bucket | |
- name: Sync to Cloudflare R2 | |
env: | |
CF_R2_ENDPOINT: ${{ secrets.CF_R2_ENDPOINT }} | |
CF_R2_BUCKET_NAME: ${{ secrets.CF_R2_BUCKET_NAME }} | |
run: | | |
aws s3 sync docs/build/html s3://$CF_R2_BUCKET_NAME \ | |
--delete \ | |
--acl public-read \ | |
--endpoint-url $CF_R2_ENDPOINT |