Packaging sge #29
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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-x64} | |
- {os: windows-2019, os-family: win-x64} | |
- {os: macos-12, 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 | |
fetch-depth: 0 | |
- 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 ninja | |
# 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: 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-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 | |