Clean (uninstallable) tools revisions
.github/workflows/fix-outdated-tools.yml (opens in new tab)Triggers
workflow_dispatch schedule
Jobs
| 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:
Tool linting
.github/workflows/lint.yml (opens in new tab)Triggers
push pull_request
Jobs
| 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:
Deploy static content to Pages
.github/workflows/static.yml (opens in new tab)Triggers
push workflow_dispatch
Jobs
| 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:
Sync IUC Tools
.github/workflows/sync-iuc-tools.yml (opens in new tab)Triggers
workflow_dispatch schedule
Jobs
| 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:
Update Trusted Tools
.github/workflows/update-trusted.yml (opens in new tab)Triggers
schedule workflow_dispatch
Jobs
| 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: