From 88b66866bf2723591a4b7a73cada691fc81a7738 Mon Sep 17 00:00:00 2001 From: Tom Close Date: Sat, 16 Mar 2024 15:33:20 +1100 Subject: [PATCH 1/2] [skip ci] Update README.md updated and extended description on how to use fileformats --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 35a8c2c..e3d17bc 100644 --- a/README.md +++ b/README.md @@ -10,10 +10,15 @@ All tasks will be inserted into the `pydra.tasks.` namespac 1. Give your repo a name. 1. Once the repo is created and cloned, search for CHANGEME (`grep -rn CHANGEME . `) and replace with appropriate name. -1. Rename the following folders to replace `CHANGEME` with the name of the package: +1. Rename the namespace package root directory to replace `CHANGEME` with the name of the package: * `src/pydra/tasks/CHANGEME` - * `fileformats/fileformats/medimage_CHANGEME` - * `fileformats/fileformats/extras/medimage_CHANGEME` +1. If you are planning to define [fileformats](https://arcanaframework.github.io/fileformats/) classes specific + to the tools defined in the task package, then rename the base and "extras" packages using a + matching name to the package (if the tool is from in another field other than medical imaging, + also replace the `medimage` part). If you don't need to define and tool-specific fileformats you can delete + these packages and the .github/workflows/fileformats-ci-cd.yaml + * `related-packages/fileformats/fileformats/medimage_CHANGEME` + * `related-packages/fileformats-extras/fileformats/extras/medimage_CHANGEME` 1. Under the newly renamed package (i.e. formerly CHANGEME) there is a directory named "v1", `src/pydra/tasks//v1`, change this to valid Python package name starting with 'v' to indicate the version of the tool the Pydra interfaces will be designed for, From c7bc621c915121be73f92802f8aad1979bd90dc8 Mon Sep 17 00:00:00 2001 From: Tom Close Date: Sat, 16 Mar 2024 15:35:35 +1100 Subject: [PATCH 2/2] added ci-cd workflow for related fileformats packages --- .github/workflows/fileformats-ci-cd.yaml | 132 +++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 .github/workflows/fileformats-ci-cd.yaml diff --git a/.github/workflows/fileformats-ci-cd.yaml b/.github/workflows/fileformats-ci-cd.yaml new file mode 100644 index 0000000..58b80a8 --- /dev/null +++ b/.github/workflows/fileformats-ci-cd.yaml @@ -0,0 +1,132 @@ +name: CI/CD + +on: + push: + branches: [ main, develop ] + pull_request: + branches: [ main, develop ] + release: + types: [published] + +defaults: + run: + shell: bash + +jobs: + test: + strategy: + matrix: + os: [ubuntu-latest] + python-version: ["3.8", "3.12"] + fail-fast: false + runs-on: ${{ matrix.os }} + defaults: + run: + shell: bash -l {0} + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Unset header + # checkout@v2 adds a header that makes branch protection report errors + # because the Github action bot is not a collaborator on the repo + run: git config --local --unset http.https://github.com/.extraheader + - name: Fetch tags + run: git fetch --prune --unshallow + - name: Disable etelemetry + run: echo "NO_ET=TRUE" >> $GITHUB_ENV + - name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Update build tools + run: python3 -m pip install --upgrade pip + - name: Install Package + run: python3 -m pip install -e related-packages/fileformats[test] -e related-packages/fileformats-extras[test] + - name: Pytest + run: pytest -vvs --cov fileformats.medimage_CHANGEME --cov-config .coveragerc --cov-report xml . + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v2 + with: + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + + build: + needs: [test] + runs-on: ubuntu-latest + strategy: + matrix: + pkg: + - ["main", "related-packages/fileformats"] + - ["extras", "related-packages/fileformats-extras"] + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + fetch-depth: 0 + - name: Unset header + # checkout@v2 adds a header that makes branch protection report errors + # because the Github action bot is not a collaborator on the repo + run: git config --local --unset http.https://github.com/.extraheader + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + - name: Install build tools + run: python3 -m pip install build twine + - name: Build source and wheel distributions + run: python3 -m build ${{ matrix.pkg[1] }} + - name: Check distributions + run: twine check ${{ matrix.pkg[1] }}/dist/* + - uses: actions/upload-artifact@v3 + with: + name: built-${{ matrix.pkg[0] }} + path: ${{ matrix.pkg[1] }}/dist + + deploy: + needs: [build] + runs-on: ubuntu-latest + steps: + - name: Download build + uses: actions/download-artifact@v3 + with: + name: built-main + path: dist + - name: Check for PyPI token on tag + id: deployable + if: github.event_name == 'release' + env: + PYPI_API_TOKEN: "${{ secrets.FILEFORMATS_PYPI_API_TOKEN }}" + run: if [ -n "$PYPI_API_TOKEN" ]; then echo "DEPLOY=true" >> $GITHUB_OUTPUT; fi + - name: Upload to PyPI + if: steps.deployable.outputs.DEPLOY + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.FILEFORMATS_PYPI_API_TOKEN }} + + deploy-extras: + needs: [build, deploy] + runs-on: ubuntu-latest + steps: + - name: Download build + uses: actions/download-artifact@v3 + with: + name: built-extras + path: dist + - name: Check for PyPI token on tag + id: deployable + if: github.event_name == 'release' + env: + EXTRAS_PYPI_API_TOKEN: "${{ secrets.FILEFORMATS_EXTRAS_PYPI_API_TOKEN }}" + run: if [ -n "$EXTRAS_PYPI_API_TOKEN" ]; then echo "DEPLOY=true" >> $GITHUB_OUTPUT; fi + - name: Upload to PyPI + if: steps.deployable.outputs.DEPLOY + uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.FILEFORMATS_EXTRAS_PYPI_API_TOKEN }} + +# Deploy on tags if PYPI_API_TOKEN is defined in the repository secrets. +# Secrets are not accessible in the if: condition [0], so set an output variable [1] +# [0] https://github.community/t/16928 +# [1] https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-output-parameter