Skip to content

Conda packaging

Conda packaging #119

Workflow file for this run

# SPDX-FileCopyrightText: 2024 geisserml <geisserml@gmail.com>
# SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause
name: Conda packaging
on:
workflow_dispatch:
inputs:
package:
type: choice
default: raw
options:
- raw
- helpers
pdfium_ver:
default: 'latest'
type: string
test:
default: true
type: boolean
publish:
default: false
type: boolean
py_version:
default: '3.12'
type: string
# This is required for setup-miniconda / conda init
# see https://github.com/conda-incubator/setup-miniconda#important
defaults:
run:
shell: bash -el {0}
# TODO it might be nice to support building both packages in one run and testing the helpers package with the newly-built raw package, but this may be fairly complicated
# TODO add ability to rebuild helpers with different pdfium version bounds
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
repository: ${{ github.repository }}
fetch-depth: 0
- name: Miniconda setup
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: ${{ inputs.py_version }}
channels: pypdfium2-team,bblanchon
channel-priority: strict
- name: Prepare
run: |
python -VV
conda install -y conda-build conda-verify
git config --global user.email "geisserml@gmail.com"
git config --global user.name "geisserml"
python -m pip install -U -r req/setup.txt
- name: Build package
run: ./run craft --pdfium-ver "${{ inputs.pdfium_ver }}" conda_${{ inputs.package }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: conda_package
path: conda/${{ inputs.package }}/out/
test:
if: ${{ inputs.test }}
needs: build
strategy:
fail-fast: false
matrix:
# NOTE On GH actions, macOS <=13 is Intel, whereas macOS >=14 will be ARM64
os: ['ubuntu-latest', 'macos-13', 'macos-14', 'windows-latest']
py: ['3.8', '3.9', '3.10', '3.11', '3.12']
runs-on: ${{ matrix.os }}
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
repository: ${{ github.repository }}
- name: Miniconda setup
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: ${{ matrix.py }}
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: conda_package
path: conda_dist/
- name: Show debug info
run: |
python -VV
ls -l conda_dist/
# according to the docs, --override-channels disables searching config file channels, and -c options priority decreases from left to right
- name: Install/Test raw package
if: inputs.package == 'raw'
run: |
conda install -y pypdfium2_${{ inputs.package }} --override-channels -c ./conda_dist/ -c bblanchon -c defaults
python conda/raw/minitest.py
- name: Install/Test helpers package
if: inputs.package == 'helpers'
run: |
conda install -y pytest pillow numpy
conda install -y pypdfium2_${{ inputs.package }} --override-channels -c ./conda_dist/ -c pypdfium2-team -c bblanchon -c defaults
pytest tests/ tests_old/
publish:
if: ${{ inputs.publish }}
needs: [build, test]
runs-on: ubuntu-latest
# TODO upload as GH release as well
steps:
# FIXME custom channels probably not necessary here
- name: Miniconda setup
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: ${{ matrix.py }}
channels: pypdfium2-team,bblanchon
channel-priority: strict
- name: Install deps
run: conda install -y anaconda-client
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: conda_package
path: conda_dist/
- name: Upload to Anaconda
env:
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_API_TOKEN }}
run: |
ARTIFACT_PATH=conda_dist/noarch/pypdfium2_${{ inputs.package }}-*.tar.bz2
file $ARTIFACT_PATH
anaconda upload $ARTIFACT_PATH