Skip to content

Conda Packages

Conda Packages #51

Workflow file for this run

---
name: Conda Packages
on:
workflow_dispatch:
inputs:
release-channel:
type: choice
default: khiops-dev
options: [khiops-dev, khiops]
description: Anaconda channel to release
defaults:
run:
shell: bash -el {0}
jobs:
build:
strategy:
fail-fast: false
matrix:
setup:
- {os: ubuntu-22.04, os-family: linux-x64}
- {os: windows-2022, os-family: win-x64}
#- {os: macos-13, os-family: osx-x64}
- {os: macos-14, os-family: osx-arm64}
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.10.sdk.tar.xz
sudo tar -zxvf MacOSX10.10.sdk.tar.xz -C /opt
- name: Set the environment variables
shell: bash
run: |
# Put the driver package version
if [[ "${{ github.ref_type }}" == "tag" ]]
then
GCS_DRIVER_VERSION="${{ github.ref_name }}"
else
GCS_DRIVER_VERSION="0.0.1"
fi
echo "GCS_DRIVER_VERSION=$GCS_DRIVER_VERSION" >> "$GITHUB_ENV"
- name: Build conda packages
run: |
conda build conda --output-folder ./builds/packages
- name: Upload conda packages artifact
uses: actions/upload-artifact@v4
with:
name: khiops-conda-${{ matrix.setup.os-family }}
path: ./builds/packages
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-x64}
- {os: ubuntu-22.04, os-family: linux-x64}
- {os: ubuntu-24.04, os-family: linux-x64}
- {os: windows-2019, os-family: win-x64}
- {os: windows-2022, os-family: win-x64}
#- {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 }}
permissions:
contents: 'read'
id-token: 'write'
steps:
- name: Install Miniconda
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest # needed for macOS 13
python-version: ${{ matrix.python-version }}
conda-remove-defaults: true
- name: Install the khiops-core Conda package (Windows)
run: conda install -c conda-forge -c khiops khiops-core
- name: Download Conda Package Artifact
uses: actions/download-artifact@v4
with:
name: khiops-conda-${{ matrix.env.os-family }}
path: ./build/conda
- name: Install the driver Conda package
run: |
conda install --channel ./build/conda khiops-driver-gcs
- 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
# Retrieve google credentials through WIF
# see https://github.com/google-github-actions/auth?tab=readme-ov-file#workload-identity-federation-through-a-service-account
- uses: google-github-actions/auth@v2
with:
service_account: 'khiops-gcs-driver-test-sa@ino-olr-dak-ideal-sbx.iam.gserviceaccount.com'
workload_identity_provider: 'projects/322269704080/locations/global/workloadIdentityPools/github/providers/my-repo'
- name: Test that khiops works on Iris dataset
uses: ./.github/actions/test-khiops-on-iris
with:
os-decription: ${{ matrix.env.os }}-${{ matrix.env.os-family }}
# 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
if [[ "$ANACONDA_CHANNEL" == "khiops" ]]
then
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-driver-gcs \
| 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-driver-gcs-${{ 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-driver-gcs-${{ 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