|
87 | 87 | echo "Uploading archive: $archive" |
88 | 88 | gh release upload "$TAG_NAME" "$archive" --clobber |
89 | 89 | done |
| 90 | +
|
| 91 | + deploy-docs: |
| 92 | + name: Deploy Documentation |
| 93 | + needs: publish-to-pypi |
| 94 | + runs-on: ubuntu-latest |
| 95 | + permissions: |
| 96 | + contents: write |
| 97 | + steps: |
| 98 | + - name: Checkout code |
| 99 | + uses: actions/checkout@v4 |
| 100 | + with: |
| 101 | + fetch-depth: 1 |
| 102 | + |
| 103 | + - name: Set up Python |
| 104 | + uses: actions/setup-python@v4 |
| 105 | + with: |
| 106 | + python-version: '3.11' |
| 107 | + |
| 108 | + - name: Install dependencies |
| 109 | + run: | |
| 110 | + cd python |
| 111 | + pip install -e .[docs,development] |
| 112 | +
|
| 113 | + - name: Extract version and check if stable |
| 114 | + id: version |
| 115 | + run: | |
| 116 | + # Extract version from tag (everything after 'python/') |
| 117 | + FULL_VERSION=${GITHUB_REF#refs/tags/python/} |
| 118 | + echo "Full version from tag: $FULL_VERSION" |
| 119 | + |
| 120 | + # Extract major.minor from version (drop patch) |
| 121 | + if [[ "$FULL_VERSION" =~ ^v?([0-9]+)\.([0-9]+)\.[0-9]+(.*)?$ ]]; then |
| 122 | + MAJOR=${BASH_REMATCH[1]} |
| 123 | + MINOR=${BASH_REMATCH[2]} |
| 124 | + SUFFIX=${BASH_REMATCH[3]} |
| 125 | + VERSION="v${MAJOR}.${MINOR}" |
| 126 | + |
| 127 | + # Check if this is a stable release (no suffix like -alpha, -beta, -rc) |
| 128 | + if [[ -z "$SUFFIX" ]]; then |
| 129 | + # Stable release - use 'latest' alias and make visible |
| 130 | + ALIAS="latest" |
| 131 | + HIDDEN="false" |
| 132 | + echo "Stable release detected: $FULL_VERSION -> $VERSION" |
| 133 | + else |
| 134 | + # Pre-release (alpha, beta, rc) - no 'latest' alias and hide from dropdown |
| 135 | + VERSION="${VERSION}${SUFFIX}" |
| 136 | + ALIAS="" |
| 137 | + HIDDEN="true" |
| 138 | + echo "Pre-release detected: $FULL_VERSION -> $VERSION" |
| 139 | + fi |
| 140 | + else |
| 141 | + echo "Error: Could not parse version format: $FULL_VERSION" |
| 142 | + exit 1 |
| 143 | + fi |
| 144 | + |
| 145 | + echo "version=$VERSION" >> $GITHUB_OUTPUT |
| 146 | + echo "alias=$ALIAS" >> $GITHUB_OUTPUT |
| 147 | + echo "hidden=$HIDDEN" >> $GITHUB_OUTPUT |
| 148 | + echo "Final - Version: $VERSION, Alias: $ALIAS, Hidden: $HIDDEN" |
| 149 | +
|
| 150 | + - name: Fetch gh-pages branch |
| 151 | + run: git fetch origin gh-pages --depth=1 |
| 152 | + |
| 153 | + - name: Configure Git |
| 154 | + run: | |
| 155 | + git config --global user.name "github-actions[bot]" |
| 156 | + git config --global user.email "github-actions[bot]@users.noreply.github.com" |
| 157 | +
|
| 158 | + - name: Deploy docs with mike |
| 159 | + run: | |
| 160 | + cd python |
| 161 | + VERSION="${{ steps.version.outputs.version }}" |
| 162 | + ALIAS="${{ steps.version.outputs.alias }}" |
| 163 | + HIDDEN="${{ steps.version.outputs.hidden }}" |
90 | 164 | |
| 165 | + # Always deploy the full version first, but hide it |
| 166 | + echo "Deploying full version $FULL_VERSION (hidden)" |
| 167 | + mike deploy "$FULL_VERSION" --push --prop-set hidden=true |
| 168 | + |
| 169 | + if [[ "$HIDDEN" == "false" ]]; then |
| 170 | + # Stable release: deploy abbreviated version with latest alias, visible in dropdown |
| 171 | + echo "Deploying stable release $VERSION with $ALIAS alias" |
| 172 | + mike deploy "$VERSION" "$ALIAS" --push --update-aliases |
| 173 | + fi |
| 174 | + env: |
| 175 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
0 commit comments