Skip to content
CI/CD Inventory

usegalaxy-eu/usegalaxy-eu-tools (opens in new tab)

5 workflows

Triggers

workflow_dispatch schedule

Jobs

Jobs for Clean (uninstallable) tools revisions
Job Runs on Steps Actions used
get-lockfiles ubuntu-latest 2
actions/checkout@v5
fix-outdated ubuntu-latest 7
actions/checkout@v5 actions/setup-python@v6 astral-sh/setup-uv@v7 actions/upload-artifact@v7
create-pr ubuntu-latest 4
actions/checkout@v5 actions/download-artifact@v8 peter-evans/create-pull-request@v8
Raw YAML
name: Clean (uninstallable) tools revisions

on:
  workflow_dispatch:
  schedule:
    - cron: '0 9 1 * *'

jobs:
  get-lockfiles:
    runs-on: ubuntu-latest
    outputs:
      lockfiles: ${{ steps.set-matrix.outputs.lockfiles }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Get all lock files
        id: set-matrix
        run: |
          lockfiles=$(ls *.yaml.lock | jq -R -s -c 'split("\n")[:-1]')
          echo "lockfiles=$lockfiles" >> $GITHUB_OUTPUT

  fix-outdated:
    needs: get-lockfiles
    runs-on: ubuntu-latest
    strategy:
      matrix:
        lockfile: ${{ fromJson(needs.get-lockfiles.outputs.lockfiles) }}
      fail-fast: false
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v5

      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version: '3.13'

      - name: Install uv
        uses: astral-sh/setup-uv@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

      - name: Install dependencies
        run: uv pip install --system -r requirements.txt

      - name: Fix ${{ matrix.lockfile }}
        run: python scripts/fix_outdated.py "${{ matrix.lockfile }}"

      - name: Get base name
        id: basename
        run: echo "name=${LOCKFILE%.yaml.lock}" >> $GITHUB_OUTPUT
        env:
          LOCKFILE: ${{ matrix.lockfile }}

      - name: Upload changes
        uses: actions/upload-artifact@v7
        if: always()
        with:
          name: ${{ matrix.lockfile }}
          path: |
            ${{ matrix.lockfile }}
            not-installable-revisions/${{ steps.basename.outputs.name }}.not-installable-revisions.yaml
          if-no-files-found: ignore

  create-pr:
    needs: fix-outdated
    if: always()
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v5
        with:
            fetch-depth: 0

      - name: Download all artifacts
        uses: actions/download-artifact@v8
        with:
          merge-multiple: true

      - name: Check for changes
        id: check_changes
        run: |
          if [[ -n $(git status --porcelain) ]]; then
            echo "changes=true" >> $GITHUB_OUTPUT
            echo "Changes detected in lock files"
          else
            echo "changes=false" >> $GITHUB_OUTPUT
            echo "No changes detected"
          fi

      - name: Create or update Pull Request
        id: cpr
        if: steps.check_changes.outputs.changes == 'true'
        uses: peter-evans/create-pull-request@v8
        with:
          branch: fix-outdated-tools
          commit-message: Remove not-installable tool revisions
          title: 'Remove not-installable tool revisions'
          body: |
            This PR was automatically generated by the `fix-outdated-tools` workflow.
            Workflow run: [${{ github.run_id }}](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})
          delete-branch: true

Last fetched:

Triggers

push pull_request

Jobs

Jobs for Tool linting
Job Runs on Steps Actions used
build ubuntu-latest 5
actions/checkout@v6 actions/setup-python@v6 actions/cache@v5
Raw YAML
name: Tool linting

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.11]
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - name: Cache downloads
        uses: actions/cache@v5
        with:
          path: ~/.cache/pip
          key: cache-${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
      - name: Perform linting
        run: make pr_check

Last fetched:

Triggers

push workflow_dispatch

Jobs

Jobs for Deploy static content to Pages
Job Runs on Steps Actions used
deploy ubuntu-latest 7
actions/setup-python@v6 actions/checkout@v6 actions/configure-pages@v5 actions/upload-pages-artifact@v4 actions/deploy-pages@v4
Raw YAML
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches: ["master"]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
  contents: read
  pages: write
  id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  # Single deploy job since we're just deploying
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v6
        with:
          python-version: '3.12'
          architecture: 'x64'
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Install pyyaml
        run: pip install PyYAML
      - name: Build API
        run:
          python scripts/api.py
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v4
        with:
          # Upload entire repository
          path: '.'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

Last fetched:

Triggers

workflow_dispatch schedule

Jobs

Jobs for Sync IUC Tools
Job Runs on Steps Actions used
check ubuntu-latest 1
juliangruber/find-pull-request-action@v1
sync-iuc-tools ubuntu-latest 9
actions/checkout@v6 actions/setup-python@v6 astral-sh/setup-uv@v7 actions/checkout@v6 tj-actions/verify-changed-files@v20 peter-evans/create-pull-request@v8
Raw YAML
name: Sync IUC Tools

on:
  workflow_dispatch:
    inputs:
      force:
        description: 'Force sync even if an open PR already exists'
        type: boolean
        default: false
  schedule:
    - cron: '0 8 * * 5'

jobs:
  check:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: read
    outputs:
      pr_number: ${{ steps.find_pr.outputs.number }}
    steps:
      - name: Check if sync PR already exists
        id: find_pr
        uses: juliangruber/find-pull-request-action@v1
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          branch: sync-iuc-tools
          state: open

  sync-iuc-tools:
    needs: check
    if: needs.check.outputs.pr_number == '' || github.event.inputs.force == 'true'
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - name: Checkout repository
        uses: actions/checkout@v6

      - name: Set up Python
        uses: actions/setup-python@v6
        with:
          python-version: '3.11'

      - name: Install uv
        uses: astral-sh/setup-uv@v7

      - name: Install dependencies
        run: uv pip install --system -r requirements.txt

      - name: Clone IUC repository
        uses: actions/checkout@v6
        with:
          repository: galaxyproject/tools-iuc
          path: tools-iuc
          fetch-depth: 0

      - name: Run sync script
        run: |
          python scripts/sync-iuc-tools.py \
            --tools-yaml tools_iuc.yaml \
            --mapping-file scripts/category-mapping.yml \
            --iuc-repo-path tools-iuc \
            --github-token ${{ secrets.GITHUB_TOKEN }} \
            --last-sync-sha-file scripts/.last-iuc-sync-sha \
            --skip-list scripts/iuc-sync-skipped-tools.yml \
            --report-file ${{ runner.temp }}/sync-report.md

      - name: Check for changes
        id: check_changes
        uses: tj-actions/verify-changed-files@v20

      - name: Validate changes with pr_check
        if: steps.check_changes.outputs.files_changed == 'true'
        run: make pr_check

      - name: Create or update Pull Request
        if: steps.check_changes.outputs.files_changed == 'true'
        uses: peter-evans/create-pull-request@v8
        with:
          branch: sync-iuc-tools
          commit-message: 'Add new tools from IUC repository'
          title: 'Add new tools from IUC repository'
          body-path: ${{ runner.temp }}/sync-report.md
          delete-branch: true
          add-paths: |
            tools_iuc.yaml
            scripts/.last-iuc-sync-sha

Last fetched:

Triggers

schedule workflow_dispatch

Jobs

Jobs for Update Trusted Tools
Job Runs on Steps Actions used
build ubuntu-latest 6
actions/checkout@v6 actions/setup-python@v6 ad-m/github-push-action@v1
Raw YAML
name: Update Trusted Tools

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    # We'll run this weekly at 23.00 on Saturday.
    - cron:  '0 23 * * 6'
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.11]
    steps:
      - uses: actions/checkout@v6
        with:
          fetch-depth: 0
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
      - name: Perform linting
        run: |
            # Update the trusted tools.
            make fix -j $(nproc)
            make lint -j $(nproc)
            make update_trusted -j $(nproc)

      - name: Commit files
        run: |
          git config --local user.email "github-bot@github.com"
          git config --local user.name "github-actions[bot]"
          git add *.lock
          git commit -m "Updated trusted tools ($(date -I))" || true

      - name: Push changes
        uses: ad-m/github-push-action@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: ${{ github.ref }}

Last fetched: