diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 0d65129..85e498a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -4,20 +4,99 @@ on: push: branches: - develop + + tags: + - 'v*' + paths: - - 'docs/*' + - 'docs/**' - 'mkdocs.yml' + - '.github/workflows/docs.yml' permissions: contents: write +concurrency: + group: docs-deploy + cancel-in-progress: false + jobs: deploy: runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v6 - - uses: actions/setup-python@v6 + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Setup Python + uses: actions/setup-python@v6 with: - python-version: 3.x - - run: pip install mkdocs-material - - run: mkdocs gh-deploy --force + python-version: '3.x' + + - name: Install dependencies + run: pip install mkdocs-material mike + + - name: Fetch gh-pages + run: git fetch origin gh-pages --depth=1 || true + + - name: Configure git + run: | + git config user.name github-actions[bot] + git config user.email 41898282+github-actions[bot]@users.noreply.github.com + + - name: Deploy docs with mike + shell: bash + run: | + set -e + + deploy_version () { + local VERSION="$1" + local UPDATE_LATEST="${2:-false}" + + VERSION="${VERSION#v}" + + MINOR=$(echo "$VERSION" | sed -E 's/^([0-9]+\.[0-9]+).*/\1/') + + echo "Deploying docs version: $MINOR" + + if [ "$UPDATE_LATEST" = "true" ]; then + mike deploy --push --update-aliases "$MINOR" latest + return + fi + + mike deploy --push "$MINOR" + } + + # + # Develop branch + # + if [ "${{ github.ref_type }}" = "branch" ] && [ "${{ github.ref_name }}" = "develop" ]; then + echo "Deploying dev docs" + + mike deploy --push dev + + exit 0 + fi + + # + # Release tags + # + if [ "${{ github.ref_type }}" = "tag" ]; then + VERSION="${{ github.ref_name }}" + + if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Skipping non-stable release tag: $VERSION" + exit 0 + fi + + deploy_version "$VERSION" true + + echo "Setting default docs version: latest" + + mike set-default --push latest + + exit 0 + fi + + echo "Unsupported ref" + exit 1 diff --git a/docs/CNAME b/docs/CNAME deleted file mode 100644 index 035b9d9..0000000 --- a/docs/CNAME +++ /dev/null @@ -1 +0,0 @@ -settings.codeigniter.com diff --git a/docs/overrides/main.html b/docs/overrides/main.html new file mode 100644 index 0000000..bd5293a --- /dev/null +++ b/docs/overrides/main.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} + +{% block outdated %} + {% if config.site_url.rstrip("/").endswith("/dev") %} + You're viewing the development version. + Some features may not be available in a stable release yet. + + Go to the latest stable version. + + {% else %} + You're not viewing the latest version. + + Click here to go to latest. + + {% endif %} +{% endblock %} diff --git a/mkdocs.yml b/mkdocs.yml index 0702b76..62ac076 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,8 +1,12 @@ site_name: CodeIgniter Settings site_description: Settings documentation for CodeIgniter 4 framework +exclude_docs: | + overrides/ + theme: name: material + custom_dir: docs/overrides logo: assets/flame.svg favicon: assets/favicon.ico icon: @@ -35,6 +39,8 @@ theme: extra: homepage: https://codeigniter.com generator: false + version: + provider: mike social: - icon: material/github