Skip to content
CI/CD Inventory

galaxyproject/galaxy-tool-repository-template (opens in new tab)

4 workflows

Weekly global Tool Linting and Tests

.github/workflows/ci.yaml (opens in new tab)
Weekly global Tool Linting and Tests status

Triggers

schedule repository_dispatch

Jobs

Jobs for Weekly global Tool Linting and Tests
Job Runs on Steps Actions used
Setup cache and determine changed repositories ubuntu-latest 10
peter-evans/create-or-update-comment@v4 actions/setup-python@v5 actions/cache@v4 actions/checkout@v4 galaxyproject/planemo-ci-action@v1
Lint tool-list ubuntu-latest 5
actions/checkout@v4 actions/setup-python@v5 actions/cache@v4 galaxyproject/planemo-ci-action@v1 actions/upload-artifact@v4
Test tools ubuntu-latest 7
actions/checkout@v4 actions/setup-python@v5 actions/cache@v4 SimenB/github-actions-cpu-cores@v2 galaxyproject/planemo-ci-action@v1 actions/upload-artifact@v4
Combine chunked test results ubuntu-latest 9
actions/download-artifact@v4 actions/setup-python@v5 actions/cache@v4 galaxyproject/planemo-ci-action@v1 actions/upload-artifact@v4 peter-evans/create-or-update-comment@v4 galaxyproject/planemo-ci-action@v1
Raw YAML
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_25.0
  MAX_CHUNKS: 40
jobs:
  setup:
    name: Setup cache and determine changed repositories
    if: ${{ github.repository_owner == 'galaxyproject' }}
    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 --skip version_bumped
    - 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

Last fetched:

Triggers

pull_request

Jobs

Jobs for Fallback
Job Runs on Steps Actions used
Check workflow success ubuntu-latest 1
Raw YAML
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"'

Last fetched:

Galaxy Tool Linting and Tests for push and PR

.github/workflows/pr.yaml (opens in new tab)
Galaxy Tool Linting and Tests for push and PR status

Triggers

pull_request push

Jobs

Jobs for Galaxy Tool Linting and Tests for push and PR
Job Runs on Steps Actions used
Setup cache and determine changed repositories ubuntu-latest 13
actions/setup-python@v5 actions/cache@v4 actions/cache@v4 actions/checkout@v4 galaxyproject/planemo-ci-action@v1
Lint tool-list ubuntu-latest 7
actions/checkout@v4 actions/setup-python@v5 actions/cache@v4 galaxyproject/planemo-ci-action@v1 actions/upload-artifact@v4
Lint Python scripts ubuntu-latest 6
actions/checkout@v4 actions/setup-python@v5 actions/cache@v4 actions/upload-artifact@v4
Lint R scripts ${{ matrix.os }} 6
actions/checkout@v4 r-lib/actions/setup-r@v2 actions/cache@v4 r-lib/actions/setup-r-dependencies@v2 actions/upload-artifact@v4
Check file sizes ubuntu-latest 3
actions/checkout@v4 actions/upload-artifact@v4
Test tools ubuntu-latest 8
actions/checkout@v4 actions/setup-python@v5 actions/cache@v4 actions/cache@v4 SimenB/github-actions-cpu-cores@v2 galaxyproject/planemo-ci-action@v1 actions/upload-artifact@v4
Combine chunked test results ubuntu-latest 8
actions/download-artifact@v4 actions/setup-python@v5 actions/cache@v4 galaxyproject/planemo-ci-action@v1 actions/upload-artifact@v4 galaxyproject/planemo-ci-action@v1
Deploy ubuntu-latest 5
actions/checkout@v4 actions/setup-python@v5 actions/cache@v4 galaxyproject/planemo-ci-action@v1 galaxyproject/planemo-ci-action@v1
Report deploy status ubuntu-latest 2
8BitJonny/gh-get-current-pr@2.2.0 peter-evans/create-or-update-comment@v4
Check workflow success ubuntu-latest 5
Raw YAML
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_25.0
  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: Set skip version check for push event (i.e. merge to main)
      if: ${{ github.event_name != 'pull_request' }}
      run:
        echo "EXTRA_SKIP=--skip version_bumped" >> "$GITHUB_ENV"
    - name: Set no skip vor pull_request events
      if: ${{ github.event_name == 'pull_request' }}
      run:
        echo "EXTRA_SKIP=" >> "$GITHUB_ENV"
    - 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: ${{ env.EXTRA_SKIP }}
    - 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 == 'galaxyproject' }}
    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

Last fetched:

Triggers

issue_comment

Jobs

Jobs for Slash Command Dispatch
Job Runs on Steps Actions used
slashCommandDispatch ubuntu-latest 1
peter-evans/slash-command-dispatch@v4
Raw YAML
name: Slash Command Dispatch
on:
  issue_comment:
    types: [created]
jobs:
  slashCommandDispatch:
    runs-on: ubuntu-latest
    steps:
      - name: Slash Command Dispatch
        if: github.repository_owner == 'galaxyproject'
        uses: peter-evans/slash-command-dispatch@v4
        with:
          token: ${{ secrets.PAT }}
          commands: |
            run-all-tool-tests

Last fetched: