diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..aa15865 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,234 @@ +name: Weekly global Tool Linting and Tests +on: + schedule: + # Run at midnight every monday + - cron: '0 0 * * 1' + repository_dispatch: + types: [run-all-tool-tests-command] +env: + GALAXY_FORK: galaxyproject + GALAXY_BRANCH: release_24.2 + MAX_CHUNKS: 40 +jobs: + setup: + name: Setup cache and determine changed repositories + if: ${{ github.repository_owner == 'arpcard' }} + runs-on: ubuntu-latest + outputs: + galaxy-head-sha: ${{ steps.get-galaxy-sha.outputs.galaxy-head-sha }} + fork: ${{ steps.get-fork-branch.outputs.fork }} + branch: ${{ steps.get-fork-branch.outputs.branch }} + repository-list: ${{ steps.discover.outputs.repository-list }} + chunk-count: ${{ steps.discover.outputs.chunk-count }} + chunk-list: ${{ steps.discover.outputs.chunk-list }} + strategy: + matrix: + python-version: ['3.11'] + steps: + - name: Add reaction + if: ${{ github.event.client_payload.slash_command.command == 'run-all-tool-tests' }} + uses: peter-evans/create-or-update-comment@v4 + with: + token: ${{ secrets.PAT }} + repository: ${{ github.event.client_payload.github.payload.repository.full_name }} + comment-id: ${{ github.event.client_payload.github.payload.comment.id }} + reactions: hooray + - name: Set galaxy fork and branch + id: get-fork-branch + run: | + TMP="${{ github.event.client_payload.slash_command.args.named.fork }}" + echo "fork=${TMP:-$GALAXY_FORK}" >> $GITHUB_OUTPUT + TMP="${{ github.event.client_payload.slash_command.args.named.branch }}" + echo "branch=${TMP:-$GALAXY_BRANCH}" >> $GITHUB_OUTPUT + - name: Determine latest commit in the Galaxy repo + id: get-galaxy-sha + run: echo "galaxy-head-sha=$(git ls-remote https://github.com/${{ steps.get-fork-branch.outputs.fork }}/galaxy refs/heads/${{ steps.get-fork-branch.outputs.branch }} | cut -f1)" >> $GITHUB_OUTPUT + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ steps.get-galaxy-sha.outputs.galaxy-head-sha }} + # Install the `wheel` package so that when installing other packages which + # are not available as wheels, pip will build a wheel for them, which can be cached. + - name: Install wheel + run: pip install wheel + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Fake a Planemo run to update cache and determine commit range, repositories, and chunks + uses: galaxyproject/planemo-ci-action@v1 + id: discover + with: + create-cache: ${{ steps.cache-pip.outputs.cache-hit != 'true' || steps.cache-planemo.outputs.cache-hit != 'true' }} + galaxy-fork: ${{ steps.get-fork-branch.outputs.fork }} + galaxy-branch: ${{ steps.get-fork-branch.outputs.branch }} + max-chunks: ${{ env.MAX_CHUNKS }} + python-version: ${{ matrix.python-version }} + - name: Show repository list + run: echo '${{ steps.discover.outputs.repository-list }}' + - name: Show chunks + run: | + echo 'Using ${{ steps.discover.outputs.chunk-count }} chunks (${{ steps.discover.outputs.chunk-list }})' + + lint: + name: Lint tool-list + needs: setup + if: ${{ needs.setup.outputs.repository-list != '' || needs.setup.outputs.tool-list != '' }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.11'] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Planemo lint + uses: galaxyproject/planemo-ci-action@v1 + id: lint + with: + mode: lint + fail-level: warn + repository-list: ${{ needs.setup.outputs.repository-list }} + tool-list: ${{ needs.setup.outputs.tool-list }} + additional-planemo-options: --biocontainers + - uses: actions/upload-artifact@v4 + if: ${{ failure() }} + with: + name: 'Tool linting output' + path: lint_report.txt + + test: + name: Test tools + # This job runs on Linux + runs-on: ubuntu-latest + needs: setup + if: ${{ needs.setup.outputs.repository-list != '' }} + strategy: + fail-fast: false + matrix: + chunk: ${{ fromJson(needs.setup.outputs.chunk-list) }} + python-version: ['3.11'] + services: + postgres: + image: postgres:11 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + ports: + - 5432:5432 + steps: + # checkout the repository + # and use it as the current working directory + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Get number of CPU cores + uses: SimenB/github-actions-cpu-cores@v2 + id: cpu-cores + - name: Clean dotnet folder for space + run: rm -Rf /usr/share/dotnet + - name: Planemo test + uses: galaxyproject/planemo-ci-action@v1 + id: test + with: + mode: test + repository-list: ${{ needs.setup.outputs.repository-list }} + galaxy-fork: ${{ needs.setup.outputs.fork }} + galaxy-branch: ${{ needs.setup.outputs.branch }} + chunk: ${{ matrix.chunk }} + chunk-count: ${{ needs.setup.outputs.chunk-count }} + galaxy-slots: ${{ steps.cpu-cores.outputs.count }} + # Limit each test to 15 minutes + test_timeout: 900 + - uses: actions/upload-artifact@v4 + with: + name: 'Tool test output ${{ matrix.chunk }}' + path: upload + + # - combine the results of the test chunks (which will never fail due + # to `|| true`) and create a global test report as json and html which + # is provided as artifact + # - check if any tool test actually failed (by lookup in the combined json) + # and fail this step if this is the case + combine_outputs: + name: Combine chunked test results + needs: [setup, test] + strategy: + matrix: + python-version: ['3.11'] + # This job runs on Linux + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + path: artifacts + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Combine outputs + uses: galaxyproject/planemo-ci-action@v1 + id: combine + with: + mode: combine + html-report: true + markdown-report: true + - uses: actions/upload-artifact@v4 + with: + name: 'All tool test results' + path: upload + - run: cat upload/tool_test_output.md >> $GITHUB_STEP_SUMMARY + - name: Create URL to the run output + if: ${{ github.event.client_payload.slash_command.command == 'run-all-tool-tests' }} + id: vars + run: echo "run-url=https://github.com/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> $GITHUB_OUTPUT + + - name: Create comment + if: ${{ github.event.client_payload.slash_command.command == 'run-all-tool-tests' }} + uses: peter-evans/create-or-update-comment@v4 + with: + token: ${{ secrets.PAT }} + repository: ${{ github.event.client_payload.github.payload.repository.full_name }} + issue-number: ${{ github.event.client_payload.github.payload.issue.number }} + body: | + Summary: + + ${{ steps.combine.outputs.statistics }} + + [Find all tool test results here][1] + + [1]: ${{ steps.vars.outputs.run-url }} + - name: Check outputs + uses: galaxyproject/planemo-ci-action@v1 + id: check + with: + mode: check diff --git a/.github/workflows/main-shed.yml b/.github/workflows/main-shed.yml deleted file mode 100644 index 378080e..0000000 --- a/.github/workflows/main-shed.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Autobuild - -on: - push: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up Python - uses: actions/setup-python@v1 - with: - python-version: '3.x' - - name: Cache pip - uses: actions/cache@v1 - with: - path: ~/.cache/pip # This path is specific to Ubuntu - # Look to see if there is a cache hit for the corresponding requirements file - key: ${{ runner.os }}-pip-planemo-0.74.9 - restore-keys: | - ${{ runner.os }}-pip- - ${{ runner.os }}- - - name: Install dependencies - run: python -m pip install --upgrade pip setuptools wheel 'planemo==0.74.9' - - name: planemo shed_update - env: - SHED_KEY: ${{ secrets.SHED_KEY }} - run: planemo shed_update -r -t toolshed --check_diff --force_repository_creation --shed_key_from_env SHED_KEY diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml new file mode 100644 index 0000000..7b81d8d --- /dev/null +++ b/.github/workflows/pr.yaml @@ -0,0 +1,432 @@ +name: Galaxy Tool Linting and Tests for push and PR +on: + pull_request: + paths-ignore: + - 'deprecated/**' + - 'docs/**' + - '*' + push: + branches: + - main + - master + paths-ignore: + - 'deprecated/**' + - 'docs/**' + - '*' +env: + GALAXY_FORK: galaxyproject + GALAXY_BRANCH: release_24.2 + MAX_CHUNKS: 4 + MAX_FILE_SIZE: 1M +concurrency: + # Group runs by PR, but keep runs on the default branch separate + # because we do not want to cancel ToolShed uploads + group: pr-${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main') && github.run_number || github.ref }} + cancel-in-progress: true +jobs: + # the setup job does two things: + # 1. cache the pip cache and .planemo + # 2. determine the list of changed repositories + # it produces one artifact which contains + # - a file with the latest SHA from the chosen branch of the Galaxy repo + # - a file containing the list of changed repositories + # which are needed in subsequent steps. + setup: + name: Setup cache and determine changed repositories + runs-on: ubuntu-latest + outputs: + galaxy-head-sha: ${{ steps.get-galaxy-sha.outputs.galaxy-head-sha }} + repository-list: ${{ steps.discover.outputs.repository-list }} + tool-list: ${{ steps.discover.outputs.tool-list }} + chunk-count: ${{ steps.discover.outputs.chunk-count }} + chunk-list: ${{ steps.discover.outputs.chunk-list }} + commit-range: ${{ steps.discover.outputs.commit-range }} + strategy: + matrix: + python-version: ['3.11'] + steps: + - name: Print github context properties + run: | + echo 'event: ${{ github.event_name }}' + echo 'sha: ${{ github.sha }}' + echo 'ref: ${{ github.ref }}' + echo 'head_ref: ${{ github.head_ref }}' + echo 'base_ref: ${{ github.base_ref }}' + echo 'event.before: ${{ github.event.before }}' + echo 'event.after: ${{ github.event.after }}' + - name: Determine latest commit in the Galaxy repo + id: get-galaxy-sha + run: echo "galaxy-head-sha=$(git ls-remote https://github.com/${{ env.GALAXY_FORK }}/galaxy refs/heads/${{ env.GALAXY_BRANCH }} | cut -f1)" >> $GITHUB_OUTPUT + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ steps.get-galaxy-sha.outputs.galaxy-head-sha }} + - name: Cache .planemo + uses: actions/cache@v4 + id: cache-planemo + with: + path: ~/.planemo + key: planemo_cache_py_${{ matrix.python-version }}_gxy_${{ steps.get-galaxy-sha.outputs.galaxy-head-sha }} + # Install the `wheel` package so that when installing other packages which + # are not available as wheels, pip will build a wheel for them, which can be cached. + - name: Install wheel + run: pip install wheel + - name: Install flake8 + run: pip install flake8 flake8-import-order + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Fake a Planemo run to update cache and determine commit range, repositories, and chunks + uses: galaxyproject/planemo-ci-action@v1 + id: discover + with: + create-cache: ${{ steps.cache-pip.outputs.cache-hit != 'true' || steps.cache-planemo.outputs.cache-hit != 'true' }} + galaxy-fork: ${{ env.GALAXY_FORK }} + galaxy-branch: ${{ env.GALAXY_BRANCH }} + max-chunks: ${{ env.MAX_CHUNKS }} + python-version: ${{ matrix.python-version }} + - name: Show commit range + run: echo '${{ steps.discover.outputs.commit-range }}' + - name: Show repository list + run: echo '${{ steps.discover.outputs.repository-list }}' + - name: Show tool list + run: echo '${{ steps.discover.outputs.tool-list }}' + - name: Show chunks + run: | + echo 'Using ${{ steps.discover.outputs.chunk-count }} chunks (${{ steps.discover.outputs.chunk-list }})' + + # Planemo lint the changed repositories + lint: + name: Lint tool-list + needs: setup + if: ${{ needs.setup.outputs.repository-list != '' || needs.setup.outputs.tool-list != '' }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.11'] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Planemo lint + uses: galaxyproject/planemo-ci-action@v1 + id: lint + with: + mode: lint + fail-level: warn + repository-list: ${{ needs.setup.outputs.repository-list }} + tool-list: ${{ needs.setup.outputs.tool-list }} + - uses: actions/upload-artifact@v4 + if: ${{ failure() }} + with: + name: 'Tool linting output' + path: lint_report.txt + + # flake8 of Python scripts in the changed repositories + flake8: + name: Lint Python scripts + needs: setup + if: ${{ github.event_name == 'pull_request' && needs.setup.outputs.repository-list != '' }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.11'] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Install flake8 + run: pip install flake8 flake8-import-order + - name: Flake8 + run: echo '${{ needs.setup.outputs.repository-list }}' | xargs -d '\n' flake8 --output-file pylint_report.txt --tee + - uses: actions/upload-artifact@v4 + if: ${{ failure() }} + with: + name: 'Python linting output' + path: pylint_report.txt + + lintr: + name: Lint R scripts + needs: setup + if: ${{ needs.setup.outputs.repository-list != '' }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-24.04] + r-version: ['release'] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.r-version }} + - name: Cache R packages + uses: actions/cache@v4 + with: + path: ${{ env.R_LIBS_USER }} + key: r_cache_${{ matrix.os }}_${{ matrix.r-version }} + - name: Install packages + uses: r-lib/actions/setup-r-dependencies@v2 + with: + packages: | + any::argparse + any::styler + - name: lintr + run: | + set -eo pipefail + echo '${{ needs.setup.outputs.repository-list }}' | xargs -d '\n' -n 1 ./.github/styler.R --dry off + git status + git diff --exit-code | tee rlint_report.txt + - uses: actions/upload-artifact@v4 + if: ${{ failure() }} + with: + name: 'R linting output' + path: rlint_report.txt + + file_sizes: + name: Check file sizes + needs: setup + if: ${{ github.event_name == 'pull_request' && needs.setup.outputs.repository-list != '' }} + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Check file sizes + run: | + touch file_size_report.txt + git diff --diff-filter=d --name-only ${{ needs.setup.outputs.commit-range }} > git.diff + while read line; do + find "$line" -type f -size +${{ env.MAX_FILE_SIZE }} >> file_size_report.txt + done < git.diff + if [[ -s file_size_report.txt ]]; then + echo "Files larger than ${{ env.MAX_FILE_SIZE }} found" + cat file_size_report.txt + exit 1 + fi + - uses: actions/upload-artifact@v4 + if: ${{ failure() }} + with: + name: 'File size report' + path: file_size_report.txt + + # Planemo test the changed repositories, each chunk creates an artifact + # containing HTML and JSON reports for the executed tests + test: + name: Test tools + needs: setup + if: ${{ needs.setup.outputs.repository-list != '' }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + chunk: ${{ fromJson(needs.setup.outputs.chunk-list) }} + python-version: ['3.11'] + services: + postgres: + image: postgres:11 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + ports: + - 5432:5432 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Cache .planemo + uses: actions/cache@v4 + id: cache-planemo + with: + path: ~/.planemo + key: planemo_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Get number of CPU cores + uses: SimenB/github-actions-cpu-cores@v2 + id: cpu-cores + - name: Clean dotnet folder for space + run: rm -Rf /usr/share/dotnet + - name: Planemo test + uses: galaxyproject/planemo-ci-action@v1 + id: test + with: + mode: test + repository-list: ${{ needs.setup.outputs.repository-list }} + galaxy-fork: ${{ env.GALAXY_FORK }} + galaxy-branch: ${{ env.GALAXY_BRANCH }} + chunk: ${{ matrix.chunk }} + chunk-count: ${{ needs.setup.outputs.chunk-count }} + galaxy-slots: ${{ steps.cpu-cores.outputs.count }} + # Limit each test to 15 minutes + test_timeout: 1800 + - uses: actions/upload-artifact@v4 + with: + name: 'Tool test output ${{ matrix.chunk }}' + path: upload + + # - combine the results of the test chunks (which will never fail due + # to `|| true`) and create a global test report as json and html which + # is provided as artifact + # - check if any tool test actually failed (by lookup in the combined json) + # and fail this step if this is the case + combine_outputs: + name: Combine chunked test results + needs: [setup, test] + if: ${{ always() && needs.setup.outputs.repository-list != '' }} + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11'] + steps: + - uses: actions/download-artifact@v4 + with: + path: artifacts + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Combine outputs + uses: galaxyproject/planemo-ci-action@v1 + id: combine + with: + mode: combine + html-report: true + markdown-report: true + - uses: actions/upload-artifact@v4 + with: + name: 'All tool test results' + path: upload + - run: cat upload/tool_test_output.md >> $GITHUB_STEP_SUMMARY + - name: Check outputs + uses: galaxyproject/planemo-ci-action@v1 + id: check + with: + mode: check + - name: Check if all test chunks succeeded + run: | + NFILES=$(ls artifacts/ | grep "Tool test output" | wc -l) + if [[ "${{ needs.setup.outputs.chunk-count }}" != "$NFILES" ]]; then + exit 1 + fi + + # deploy the tools to the toolsheds (first TTS for testing) + deploy: + name: Deploy + needs: [setup, lint, combine_outputs] + if: ${{ (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' ) && github.repository_owner == 'arpcard' }} + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11'] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache .cache/pip + uses: actions/cache@v4 + id: cache-pip + with: + path: ~/.cache/pip + key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ needs.setup.outputs.galaxy-head-sha }} + - name: Deploy on testtoolshed + uses: galaxyproject/planemo-ci-action@v1 + with: + mode: deploy + repository-list: ${{ needs.setup.outputs.repository-list }} + shed-target: testtoolshed + shed-key: ${{ secrets.TTS_API_KEY }} + continue-on-error: true + - name: Deploy on toolshed + uses: galaxyproject/planemo-ci-action@v1 + with: + mode: deploy + repository-list: ${{ needs.setup.outputs.repository-list }} + shed-target: toolshed + shed-key: ${{ secrets.TS_API_KEY }} + + deploy-report: + name: Report deploy status + needs: [deploy] + if: ${{ always() && needs.deploy.result != 'success' && (github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' ) && github.repository_owner == 'galaxyproject' }} + runs-on: ubuntu-latest + steps: + # report to the PR if deployment failed + - name: Get PR object + uses: 8BitJonny/gh-get-current-pr@2.2.0 + id: getpr + with: + sha: ${{ github.event.after }} + - name: Create comment + uses: peter-evans/create-or-update-comment@v4 + with: + token: ${{ secrets.PAT }} + issue-number: ${{ steps.getpr.outputs.number }} + body: | + Attention: deployment ${{ needs.deploy.result }}! + + https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} + + determine-success: + name: Check workflow success + needs: [setup, lint, flake8, lintr, file_sizes, combine_outputs] + if: ${{ always() && github.ref != 'refs/heads/master' && github.ref != 'refs/heads/main' }} + runs-on: ubuntu-latest + steps: + - name: Check tool lint status + if: ${{ needs.lint.result != 'success' && needs.flake8.result != 'skipped' }} + run: exit 1 + - name: Indicate Python script lint status + if: ${{ needs.flake8.result != 'success' && needs.flake8.result != 'skipped' }} + run: exit 1 + - name: Indicate R script lint status + if: ${{ needs.lintr.result != 'success' && needs.lintr.result != 'skipped' }} + run: exit 1 + - name: Indicate file size check status + if: ${{ needs.file_sizes.result != 'success' && needs.file_sizes.result != 'skipped' }} + run: exit 1 + - name: Check tool test status + if: ${{ needs.combine_outputs.result != 'success' && needs.combine_outputs.result != 'skipped' }} + run: exit 1 diff --git a/.github/workflows/pr_without_tool_change.yaml b/.github/workflows/pr_without_tool_change.yaml new file mode 100644 index 0000000..edff410 --- /dev/null +++ b/.github/workflows/pr_without_tool_change.yaml @@ -0,0 +1,15 @@ +name: Fallback +# Fallback workflow that provides a succeeding "Check workflow success" job +# as this is a requirement for being able to merge a PR +# see https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks +on: + pull_request: +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true +jobs: + determine-success: + name: Check workflow success + runs-on: ubuntu-latest + steps: + - run: 'echo "No tool tests required for this PR"' diff --git a/.shed.yml b/tools/rgi/.shed.yml similarity index 100% rename from .shed.yml rename to tools/rgi/.shed.yml diff --git a/README.rst b/tools/rgi/README.rst similarity index 100% rename from README.rst rename to tools/rgi/README.rst diff --git a/rgi.xml b/tools/rgi/rgi.xml similarity index 63% rename from rgi.xml rename to tools/rgi/rgi.xml index d65a095..4cc14b9 100644 --- a/rgi.xml +++ b/tools/rgi/rgi.xml @@ -1,45 +1,50 @@ - + This tool predicts resistome(s) from protein or nucleotide data based on homology and SNP models. + + 6.0.3 + 0 + - rgi + rgi + + rgi main --version + --orf_finder $orf_finder + ]]> - + + + + + + @@ -48,7 +53,8 @@ rgi main - + + @@ -56,29 +62,10 @@ rgi main - - - - - - - - - - - - - - - - - - - - - - - + + + + @@ -92,9 +79,7 @@ rgi main - - - + @@ -142,41 +127,6 @@ report.json A json version of summary.txt. -Help ----- - -**usage:** - ``rgi main [-h] -i INPUT_SEQUENCE -o OUTPUT_FILE [-t {read,contig,protein,wgs}] [-a {DIAMOND,BLAST}] [-n THREADS] [--include_loose] [--local] [--clean] [--debug] [--low_quality] [-d {wgs,plasmid,chromosome,NA}] [-v]`` - -**optional arguments:** - -- ``-h, --help`` - show this help message and exit -- ``-i INPUT_SEQUENCE, --input_sequence INPUT_SEQUENCE`` - input file must be in either FASTA (contig and protein) or gzip format e.g myFile.fasta, myFasta.fasta.gz -- ``-o OUTPUT_FILE, --output_file OUTPUT_FILE`` - output folder and base filename -- ``-t {read,contig,protein,wgs}, --input_type {read,contig,protein,wgs}`` - specify data input type (default = contig) -- ``-a {DIAMOND,BLAST}, --alignment_tool {DIAMOND,BLAST}`` - specify alignment tool (default = BLAST) -- ``-n THREADS, --num_threads THREADS`` - number of threads (CPUs) to use in the BLAST search (default=8) -- ``--include_loose`` - include loose hits in addition to strict and perfect hits -- ``--local`` - use local database (default: uses database in executable directory) -- ``--clean`` - removes temporary files -- ``--debug`` - debug mode -- ``--low_quality`` - use for short contigs to predict partial genes -- ``-d {wgs,plasmid,chromosome,NA}, --data {wgs,plasmid,chromosome,NA}`` - specify a data-type (default = NA) -- ``-v, --version`` - prints software version number - Links ----- diff --git a/test-data/test1.fasta b/tools/rgi/test-data/test1.fasta similarity index 100% rename from test-data/test1.fasta rename to tools/rgi/test-data/test1.fasta