Skip to content

Packaging

Packaging #24

Workflow file for this run

---
name: Conda Packages
on:
workflow_dispatch:
pull_request:
branches:
- v11
- main
defaults:
run:
shell: bash -el {0}
jobs:
build:
strategy:
fail-fast: false
matrix:
setup:
- {os: ubuntu-22.04, os-family: linux-64, triplet: x64-linux-release}
- {os: windows-2022, os-family: win-64, triplet: x64-windows-release}
- {os: macos-13, os-family: osx-x64, triplet: x64-osx-release}
- {os: macos-14, os-family: osx-arm64, triplet: arm64-osx-release}
runs-on: ${{ matrix.setup.os }}
steps:
- name: Checkout Sources
uses: actions/checkout@v4
# with:
# submodules: true
- name: Install Miniconda
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
python-version: '3.12'
- name: Install Dependency Requirements for Building Conda Packages
run: conda install -y conda-build
# We need MacOS SDK 10.10 to build for macOS Intel
# See: https://docs.conda.io/projects/conda-build/en/3.21.x/resources/compiler-tools.html#macos-sdk
- name: Install Mac OS SDK 10.10
if: runner.os == 'macOS'
run: |
wget https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.1.5.sdk.tar.xz
sudo tar -zxvf MacOSX10.1.5.sdk.tar.xz -C /opt
- name: Build conda packages
run: |
conda build conda --output-folder ./builds/conda
- name: Upload conda packages artifact
uses: actions/upload-artifact@v4
with:
name: khiops-conda-${{ matrix.setup.os-family }}
path: ./builds/conda
retention-days: 7
# # Test Conda package on brand new environments
# test:
# needs: build
# strategy:
# fail-fast: false
# matrix:
# env:
# - {os: ubuntu-20.04, os-family: linux-64}
# - {os: ubuntu-22.04, os-family: linux-64}
# - {os: ubuntu-24.04, os-family: linux-64}
# - {os: windows-2019, os-family: win-64}
# - {os: windows-2022, os-family: win-64}
# - {os: macos-12, os-family: osx-64}
# - {os: macos-13, os-family: osx-64}
# - {os: macos-14, os-family: osx-arm64}
# runs-on: ${{ matrix.env.os }}
# steps:
# - name: Install Miniconda
# uses: conda-incubator/setup-miniconda@v3
# with:
# miniconda-version: latest # needed for macOS 13
# python-version: ${{ matrix.python-version }}
# - name: Download Conda Package Artifact
# uses: actions/download-artifact@v4
# with:
# name: khiops-conda-${{ matrix.env.os-family }}
# path: ./build/conda
# - name: Install the Conda package (Windows)
# if: runner.os == 'Windows'
# run: conda install --channel ./build/conda khiops-core
# # In Linux/macOS we need the conda-forge channel to install their pinned versions
# - name: Install the Conda package (Linux/macOS)
# if: runner.os != 'Windows'
# run: |
# conda install --channel conda-forge --channel ./build/conda khiops-core
# - name: Add CONDA_PREFIX to shared PATH
# run: |
# echo "$CONDA_PREFIX/bin" >> $GITHUB_PATH
# - name: Checkout sources
# uses: actions/checkout@v4
# - name: Test that the executables are installed
# uses: ./.github/actions/test-khiops-install
# - name: Test that khiops on Iris dataset
# uses: ./.github/actions/test-khiops-on-iris
# # Release is only executed on tags
# # Note: For this job to work the secrets variables KHIOPS_ANACONDA_CHANNEL_TOKEN and
# # KHIOPS_DEV_ANACONDA_CHANNEL_TOKEN must be set with valid anaconda.org access tokens
# release:
# if: github.ref_type == 'tag'
# needs: test
# runs-on: ubuntu-22.04
# permissions:
# contents: write
# steps:
# - name: Download package artifacts
# uses: actions/download-artifact@v4
# with:
# # See the upload-artifact step in the build job for the explanation of this pattern
# path: ./build/conda
# pattern: khiops-conda-*
# merge-multiple: true
# - name: Install Miniconda
# uses: conda-incubator/setup-miniconda@v3
# with:
# miniconda-version: latest
# python-version: '3.12'
# - name: Install requirement packages
# run: conda install -y anaconda-client conda-index
# - name: Reindex the package directory
# run: python -m conda_index ./build/conda
# - name: Upload the packages to anaconda.org
# run: |
# # Set the anaconda.org channel
# ANACONDA_CHANNEL="${{ inputs.release-channel || 'khiops-dev' }}"
# # For the release channel: upload without forcing; do not upload kni-transfer
# if [[ "$ANACONDA_CHANNEL" == "khiops" ]]
# then
# rm -f -v ./build/conda/*/kni-transfer*.tar.bz2
# anaconda --token "${{ secrets.KHIOPS_ANACONDA_CHANNEL_TOKEN }}" upload \
# --user "$ANACONDA_CHANNEL" ./build/conda/*/*.tar.bz2
# # For the dev channel: upload with forcing
# else
# anaconda --token "${{ secrets.KHIOPS_DEV_ANACONDA_CHANNEL_TOKEN }}" upload \
# --user "$ANACONDA_CHANNEL" --force ./build/conda/*/*.tar.bz2
# fi
# - name: Extract package version
# run: |
# PKG_VERSION=$(\
# conda search --override-channels --channel ./build/conda/ khiops-core \
# | awk '!/#|channels/ {print $2}' \
# | sort -u \
# )
# echo "PKG_VERSION=$PKG_VERSION" >> "$GITHUB_ENV"
# - name: Create the release zip archive
# uses: thedoctor0/[email protected]
# with:
# type: zip
# path: ./build/conda
# filename: khiops-${{ env.PKG_VERSION }}-conda.zip
# - name: Upload conda package artifacts for all platforms
# uses: actions/upload-artifact@v4
# with:
# name: khiops-conda-all
# path: ./khiops-${{ env.PKG_VERSION }}-conda.zip
# - name: Release the zip archive
# uses: ncipollo/release-action@v1
# with:
# allowUpdates: true
# body: |
# **This release is for testing purposes only and there is no support for it.**
# **Go to https://khiops.org to install the latest supported version.**
# draft: false
# makeLatest: false
# prerelease: true
# updateOnlyUnreleased: true