From 66a9fe7bc1af858e50241a151810043fb804a2ee 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 | 129 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+), 128 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..ff7868d6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,129 @@ +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: strict + miniforge-variant: Miniforge3 + - name: Run Pre-Commit + run: | + echo $BRANCH_NAME + echo $CI_DEFAULT_BRANCH + echo $CI_COMMIT_SHA + git fetch origin/$BRANCH_NAME + pre-commit run --from-ref origin/$BRANCH_NAME --to-ref $BRANCH_NAME + + 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: strict + 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: ${{ runner.os }}-packages-${{ hashFiles('conda-recipe/meta.yaml') }} + - 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: ${{ needs.conda-noarch-build.outputs.version }}.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: strict + 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: ${{ runner.os }}-packages-${{ hashFiles('conda-recipe/meta.yaml') }} + 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: | + conda build --test --override-channels ^ + -c .\pkgs -c pytorch -c ilastik-forge -c conda-forge ^ + .\pkgs\noarch\%TIKTORCH_PACKAGE_NAME%