From 65ada37d1d9d4c7f71fdc2263f4af90f18925025 Mon Sep 17 00:00:00 2001 From: Theodoros Katzalis Date: Tue, 3 Sep 2024 21:55:24 +0200 Subject: [PATCH] Migrate from circleci to github actions --- .circleci/config.yml | 128 ------------------------------------- .github/workflows/ci.yml | 133 +++++++++++++++++++++++++++++++++++++++ conda-recipe/meta.yaml | 1 + environment.yml | 9 +-- setup.py | 1 - 5 files changed, 139 insertions(+), 133 deletions(-) delete mode 100644 .circleci/config.yml create mode 100644 .github/workflows/ci.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index 75a82c6e..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,128 +0,0 @@ -version: 2 -jobs: - checkout_code: - docker: - - image: condaforge/mambaforge - working_directory: ~/repo - steps: - - checkout - - run: git submodule sync - - run: git submodule update --init - - save_cache: - key: v1-repo-{{ .Environment.CIRCLE_SHA1 }} - paths: - - ~/repo - - install_conda_env: - environment: - TIKTORCH_ENV_NAME: tiktorch-server-env - TIKTORCH_ENV_PREFIX: /opt/conda/envs/tiktorch-server-env - docker: - - image: condaforge/mambaforge - working_directory: ~/repo - steps: - - restore_cache: - keys: - - v1-repo-{{ .Environment.CIRCLE_SHA1 }} - - restore_cache: - keys: - - v11-dependencies-{{ checksum "environment.yml" }} - - - run: conda config --set channel_priority strict - - run: mamba update -n base -c conda-forge --update-all - - run: mamba install -c conda-forge conda-build make boa - - run: | - if [ ! -d ${TIKTORCH_ENV_PREFIX} ]; then - echo "Creating new environment ${TIKTORCH_ENV_NAME}" - make devenv - fi - - - save_cache: - paths: - - /opt/conda/envs - key: v11-dependencies-{{ checksum "environment.yml" }} - - pre_commit_check: - docker: - - image: condaforge/mambaforge - working_directory: ~/repo - steps: - - restore_cache: - keys: - - v1-repo-{{ .Environment.CIRCLE_SHA1 }} - - restore_cache: - keys: - - v11-dependencies-{{ checksum "environment.yml" }} - - - run: - name: run pre-commit - command: | - . /opt/conda/etc/profile.d/conda.sh - conda activate tiktorch-server-env - pre-commit run --from-ref origin/${CIRCLE_BRANCH} --to-ref ${CIRCLE_BRANCH} - - tests: - docker: - - image: condaforge/mambaforge - working_directory: ~/repo - steps: - - restore_cache: - keys: - - v1-repo-{{ .Environment.CIRCLE_SHA1 }} - - restore_cache: - keys: - - v11-dependencies-{{ checksum "environment.yml" }} - - - run: - name: run tests - command: | - . /opt/conda/etc/profile.d/conda.sh - conda activate tiktorch-server-env - conda list - python -m pytest -v - - build_conda_packages: - docker: - - image: condaforge/mambaforge - working_directory: ~/repo - steps: - - restore_cache: - keys: - - v1-repo-{{ .Environment.CIRCLE_SHA1 }} - - - run: mamba config --set channel_priority strict - - run: mamba install -c conda-forge conda-build anaconda-client boa - - run: - name: build packages - command: | - . /opt/conda/etc/profile.d/conda.sh - ./scripts/conda_build.sh conda-recipe - - -workflows: - version: 2 - build: - jobs: - - checkout_code: - filters: - tags: - only: /^v.*/ - - install_conda_env: - filters: - tags: - only: /^v.*/ - requires: - - checkout_code - - tests: - requires: - - install_conda_env - - pre_commit_check: - requires: - - install_conda_env - - build_conda_packages: - context: conda-upload - filters: - tags: - only: /^v.*/ - branches: - ignore: /.*/ diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..9cbcfc61 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,133 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + pre_commit_check: + name: Pre-Commit Check + runs-on: ubuntu-latest + defaults: + run: + shell: bash -l {0} + env: + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + auto-activate-base: false + activate-environment: tiktorch-server-env + environment-file: environment.yml + channel-priority: flexible + miniforge-variant: Miniforge3 + - name: Run Pre-Commit + run: | + echo $BRANCH_NAME + echo ${{ github.event.pull_request.base.ref }} + echo ${{ github.event.pull_request.head.sha }} + git fetch origin + pre-commit run --from-ref origin/${{ github.event.pull_request.base.ref }} --to-ref ${{ github.event.pull_request.head.sha }} + + conda-noarch-build: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.version.outputs.version }} + defaults: + run: + shell: bash -l {0} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + auto-activate-base: true + channel-priority: flexible + miniforge-variant: Miniforge3 + - name: install common conda dependencies + run: mamba install -n base -c conda-forge conda-build setuptools_scm -y + - name: Cache Conda Packages + uses: actions/cache@v4 + with: + path: | + pkgs/noarch + pkgs/channeldata.json + key: ${{ github.sha }}-packages + - id: version + run: | + vers=$( python setup.py --version ) + echo "version=${vers}" >> $GITHUB_OUTPUT + - name: Linux Conda Build Test + run: | + mkdir -p ./pkgs/noarch + conda build -c conda-forge conda-recipe --no-test --output-folder ./pkgs + + test-conda-packages: + needs: [conda-noarch-build] + strategy: + fail-fast: false + matrix: + os: [macos-latest, windows-latest, ubuntu-latest] + runs-on: ${{ matrix.os }} + env: + TIKTORCH_PACKAGE_NAME: tiktorch-${{ needs.conda-noarch-build.outputs.version }}-py_0.tar.bz2 + steps: + # Use GNU tar instead of BSD tar on Windows + - name: "Use GNU tar instead of BSD tar" + if: matrix.os == 'windows-latest' + shell: cmd + run: echo C:\Program Files\Git\usr\bin>>"%GITHUB_PATH%" + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: conda-incubator/setup-miniconda@v3 + with: + auto-update-conda: true + auto-activate-base: true + channel-priority: flexible + miniforge-variant: Miniforge3 + - name: install common conda dependencies + run: mamba install -n base -c conda-forge conda-build setuptools_scm -y + - name: Cache Conda Packages + uses: actions/cache@v4 + with: + path: | + pkgs/noarch + pkgs/channeldata.json + key: ${{ github.sha }}-packages + enableCrossOsArchive: true + - name: Linux Test + if: matrix.os == 'ubuntu-latest' + shell: bash -l {0} + run: | + conda build --test --override-channels \ + -c ./pkgs -c pytorch -c ilastik-forge -c conda-forge \ + ./pkgs/noarch/${TIKTORCH_PACKAGE_NAME} + - name: macOS Test + if: matrix.os == 'macos-latest' + shell: bash -l {0} + run: | + conda build --test --override-channels \ + -c ./pkgs -c pytorch -c ilastik-forge -c conda-forge \ + ./pkgs/noarch/${TIKTORCH_PACKAGE_NAME} + - name: Windows Test + if: matrix.os == 'windows-latest' + shell: cmd /C CALL {0} + run: | + dir .\pkgs + dir .\pkgs\noarch + conda info + conda build -h + conda build --test --override-channels ^ + -c .\pkgs -c pytorch -c ilastik-forge -c conda-forge ^ + .\pkgs\noarch\%TIKTORCH_PACKAGE_NAME% diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index d1d33fc0..99038063 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -30,6 +30,7 @@ requirements: - {{ dep.lower() }} {% endfor %} run_constrained: + - mkl <2024.1.0 # [linux] until pytorch is compatible with the current version - cudatoolkit >=10.2 {% for dep in setup_py_data['extras_require']['server-pytorch'] %} - {{ dep.lower() }} diff --git a/environment.yml b/environment.yml index 94b04c80..b5558f77 100644 --- a/environment.yml +++ b/environment.yml @@ -25,12 +25,11 @@ dependencies: # pytorch # remove cpuonly, add cudatoolkit and cudnn for gpu support - - pytorch=1.13.* - - inferno=v0.4.* + - pytorch=2.4.* # currently it's necessary to force the cpu version, remove # torchvision pin when going for gpu # - torchvision - #- cpuonly + - cpuonly # - cudatoolkit >=10.2 # - cudnn # - tochvision @@ -50,6 +49,8 @@ dependencies: - mypy - pre_commit + - mkl <2024.1.0 # [linux] until pytorch is compatible with the current version + + - setuptools - pip - - mkl <2024.1.0 # [linux] until pytorch is compatible with the current version diff --git a/setup.py b/setup.py index d34ab19e..b06250d7 100644 --- a/setup.py +++ b/setup.py @@ -37,7 +37,6 @@ ], extras_require={ "server-pytorch": [ - "inferno", "pytorch>=1.6", "scikit-learn", ],