|
7 | 7 | description: 'Git tag to download artifacts from (e.g., v0.45.0)' |
8 | 8 | required: true |
9 | 9 | type: string |
| 10 | + anaconda_label: |
| 11 | + description: 'Anaconda.org label (dev, main, etc.)' |
| 12 | + required: false |
| 13 | + type: string |
| 14 | + default: 'dev' |
| 15 | + copy_to_main: |
| 16 | + description: 'Copy packages to main label after upload' |
| 17 | + required: false |
| 18 | + type: boolean |
| 19 | + default: false |
10 | 20 | push: |
11 | 21 | branches: |
12 | 22 | - gha/upload_packages_workflow |
@@ -156,3 +166,62 @@ jobs: |
156 | 166 | repository-url: https://test.pypi.org/legacy/ |
157 | 167 | verbose: true |
158 | 168 |
|
| 169 | + publish-anaconda-org: |
| 170 | + name: Publish to Anaconda.org |
| 171 | + needs: download-artifacts |
| 172 | + runs-on: ubuntu-latest |
| 173 | + env: |
| 174 | + ANACONDA_USER: numba |
| 175 | + ANACONDA_LABEL: ${{ inputs.anaconda_label || 'dev' }} |
| 176 | + defaults: |
| 177 | + run: |
| 178 | + shell: bash -elx {0} |
| 179 | + |
| 180 | + steps: |
| 181 | + - name: Setup Miniconda |
| 182 | + uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0 |
| 183 | + with: |
| 184 | + python-version: '3.13' |
| 185 | + auto-update-conda: true |
| 186 | + auto-activate-base: true |
| 187 | + |
| 188 | + - name: Install anaconda-client |
| 189 | + run: conda install -c anaconda anaconda-client |
| 190 | + |
| 191 | + - name: Download conda packages artifact |
| 192 | + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 |
| 193 | + with: |
| 194 | + name: conda-packages |
| 195 | + path: conda_packages |
| 196 | + |
| 197 | + - name: List conda packages to publish |
| 198 | + run: | |
| 199 | + echo "=== Conda packages to publish ===" |
| 200 | + find conda_packages -type f -name "*.conda" -print | sort |
| 201 | + echo "" |
| 202 | + echo "=== Total packages ===" |
| 203 | + find conda_packages -type f -name "*.conda" | wc -l |
| 204 | + echo "" |
| 205 | +
|
| 206 | + - name: Publish conda packages to Anaconda.org |
| 207 | + env: |
| 208 | + ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }} |
| 209 | + run: | |
| 210 | + echo "Publishing to: ${{ env.ANACONDA_USER }}/label/${{ env.ANACONDA_LABEL }}" |
| 211 | + find conda_packages -name "*.conda" -type f | while read -r pkg; do |
| 212 | + echo "Uploading: $pkg" |
| 213 | + anaconda -t "$ANACONDA_API_TOKEN" upload --force -u ${{ env.ANACONDA_USER }} -l ${{ env.ANACONDA_LABEL }} "$pkg" |
| 214 | + done |
| 215 | +
|
| 216 | + - name: Copy packages to main label |
| 217 | + if: inputs.copy_conda_to_main |
| 218 | + env: |
| 219 | + ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }} |
| 220 | + run: | |
| 221 | + echo "Copying packages from ${{ env.ANACONDA_LABEL }} to main" |
| 222 | + find conda_packages -name "*.conda" -type f | while read -r pkg; do |
| 223 | + PKG_NAME=$(basename "$pkg" .conda) |
| 224 | + echo "Copying: $PKG_NAME" |
| 225 | + anaconda -t "$ANACONDA_API_TOKEN" copy ${{ env.ANACONDA_USER }}/$PKG_NAME --from-label ${{ env.ANACONDA_LABEL }} --to-label main |
| 226 | + done |
| 227 | +
|
0 commit comments