Skip to content
CI/CD Inventory

galaxyproject/galaxy_codex (opens in new tab)

10 workflows

Triggers

push workflow_dispatch

Jobs

Jobs for Deploy Jekyll site to Pages
Job Runs on Steps Actions used
build ubuntu-24.04 6
actions/checkout@v6 ruby/setup-ruby@v1.288.0 actions/configure-pages@v5 actions/upload-pages-artifact@v4
deploy ubuntu-latest 1
actions/deploy-pages@v4
Raw YAML
name: Deploy Jekyll site to Pages

on:
  # Runs on pushes targeting the default branch
  push:
    branches: [ "main" ]
  # 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:
  build:
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - name: Setup Ruby
        uses: ruby/setup-ruby@v1.288.0
        with:
          ruby-version: '3.3'
          bundler-cache: true
          cache-version: 0
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Install dependencies
        run: |
          bundle install
      - name: Build with Jekyll
        # Outputs to the './_site' directory by default
        run: |
          bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
        env:
          PAGES_REPO_NWO: ${{ github.repository }}
          JEKYLL_ENV: production
          JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          JEKYLL_BUILD_BRANCH: ${{ github.ref_name }}
          JEKYLL_BASE_PATH: ${{ steps.pages.outputs.base_path }}
      - name: Upload artifact
        # Automatically uploads an artifact from the './_site' directory by default
        uses: actions/upload-pages-artifact@v4
        with:
          path: _site

  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

Last fetched:

Weekly resource fetching and community filtering

.github/workflows/fetch_filter_resources.yaml (opens in new tab)
Weekly resource fetching and community filtering status

Triggers

workflow_dispatch schedule

Jobs

Jobs for Weekly resource fetching and community filtering
Job Runs on Steps Actions used
Fetch servers ubuntu-latest 5
actions/checkout@v6 actions/setup-python@v6 actions/upload-artifact@v7
Fetch tool stepwise ubuntu-latest 6
actions/checkout@v6 actions/setup-python@v6 actions/download-artifact@v8 actions/upload-artifact@v7
Fetch tutorials ubuntu-latest 5
actions/checkout@v6 actions/setup-python@v6 actions/upload-artifact@v7
Fetch workflows ubuntu-latest 5
actions/checkout@v6 actions/setup-python@v6 actions/upload-artifact@v7
Merge tools, filter the resources for communities, and populate labs ubuntu-latest 18
actions/checkout@v6 actions/setup-python@v6 actions/download-artifact@v8 actions/download-artifact@v8 actions/download-artifact@v8 peter-evans/create-pull-request@v8
Raw YAML
name: Weekly resource fetching and community filtering

on:
  workflow_dispatch:
  schedule:
    #Every Sunday at 8:00 am
    - cron: "0 8 * * 0" 

# 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: "tools"
  cancel-in-progress: false

jobs:
  fetch-servers:
    runs-on: ubuntu-latest
    name: Fetch servers
    steps:
      - name: Checkout main
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: '3.11'
      - name: Install requirement
        run: |
          python -m pip install -r requirements.txt
          sudo apt-get install jq
      - name: Fetch list of all available servers
        run: | 
          python sources/bin/get_public_galaxy_servers.py -o sources/data/available_public_servers.csv
      - name: Archive available servers
        uses: actions/upload-artifact@v7
        with:
          name: available-servers
          path: sources/data/available_public_servers.csv
  fetch-tools-stepwise:
    runs-on: ubuntu-latest
    name: Fetch tool stepwise
    environment: fetch-tools
    needs: fetch-servers
    strategy:
      #max-parallel: 1 #need to run one after another, since otherwise there is a chance, that mulitple jobs want to push to the results branch at the same time (which fails due to merge)
      matrix:
        subset:
         - repositories01.list
         - repositories02.list
         - repositories03.list
         - repositories04.list
    steps:
      - name: Checkout main
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: '3.11'
      - name: Install requirement
        run: python -m pip install -r requirements.txt
      - name: Download available servers
        uses: actions/download-artifact@v8
        with:
          name: available-servers
          path: sources/data/
      - name: Fetch all tool stepwise
        run: | 
          bash sources/bin/extract_all_tools.sh "${{ matrix.subset }}"
        env: 
          GITHUB_API_KEY: ${{ secrets.GH_API_TOKEN }}
      - name: Archive tool sublists production artifacts
        uses: actions/upload-artifact@v7
        with:
          name: tools-${{ matrix.subset }}
          path: communities/all/resources/${{ matrix.subset }}_tools.*
  fetch-tutorials:
    runs-on: ubuntu-latest
    name: Fetch tutorials
    steps:
      - name: Checkout main
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: '3.11'
      - name: Install requirement
        run: |
          python -m pip install -r requirements.txt
          sudo apt-get install jq
      - name: Fetch all tutorials
        run: | 
          bash sources/bin/extract_all_tutorials.sh
        env: 
          PLAUSIBLE_API_KEY: ${{ secrets.PLAUSIBLE_API_TOKEN }}
      - name: Archive tutorials artifacts
        uses: actions/upload-artifact@v7
        with:
          name: tutorials
          path: communities/all/resources/tutorials.*
  fetch-workflows:
    runs-on: ubuntu-latest
    name: Fetch workflows
    steps:
      - name: Checkout main
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: '3.11'
      - name: Install requirement
        run: |
          python -m pip install -r requirements.txt
          sudo apt-get install jq
      - name: Fetch all workflows
        run: | 
          bash sources/bin/extract_all_workflows.sh 
        env: 
          PLAUSIBLE_API_KEY: ${{ secrets.PLAUSIBLE_API_TOKEN }}
      - name: Archive tutorials artifacts
        uses: actions/upload-artifact@v7
        with:
          name: workflows
          path: communities/all/resources/workflows.json
#  fetch-citations:
#    runs-on: ubuntu-latest
#    name: Fetch citations
#    steps:
#      - name: Checkout main
#        uses: actions/checkout@v6
#      - uses: actions/setup-python@v6
#        with:
#          python-version: '3.11'
#      - name: Install requirement
#        run: |
#          python -m pip install -r requirements.txt
#          sudo apt-get install jq
#      - name: Fetch all citations
#        run: | 
#          bash sources/bin/extract_all_citations.sh
#      - name: Archive citations artifacts
#        uses: actions/upload-artifact@v7
#        with:
#          name: workflows
#          path: communities/all/resources/citations.json
  merge-fetch-filter:
    runs-on: ubuntu-latest
    needs: 
      - fetch-tools-stepwise
      - fetch-tutorials
      - fetch-workflows
#      - fetch-citations
    name: Merge tools, filter the resources for communities, and populate labs
    steps:
      - name: Checkout main
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: '3.11'
      - name: Install requirement
        run: |
          python -m pip install -r requirements.txt
          sudo apt-get install jq
      - name: Download stepwise tool lists
        uses: actions/download-artifact@v8
        with:
          pattern: tools-*
          merge-multiple: true
          path: communities/all/resources/
      - name: Download tutorials
        uses: actions/download-artifact@v8
        with:
          pattern: tutorials
          merge-multiple: true
          path: communities/all/resources/
      - name: Download workflows
        uses: actions/download-artifact@v8
        with:
          pattern: workflows
          merge-multiple: true
          path: communities/all/resources/
      - name: Display structure of downloaded files
        run: ls -R communities/all/resources/
      - name: Merge all tools
        run: | #merge files with only one header -> https://stackoverflow.com/questions/16890582/unixmerge-multiple-csv-files-with-same-header-by-keeping-the-header-of-the-firs; map(.[]) -> https://stackoverflow.com/questions/42011086/merge-arrays-of-json (get flat array, one tool per entry)
          awk 'FNR==1 && NR!=1{next;}{print}' communities/all/resources/repositories*.list_tools.tsv > communities/all/resources/tools.tsv
          jq -s 'map(.[])' communities/all/resources/repositories*.list_tools.json > communities/all/resources/tools.json 
          rm communities/all/resources/repositories*.list_tools.json
          rm communities/all/resources/repositories*.list_tools.tsv
          rm communities/all/resources/repositories*.list_tools.yml
      - name: Generate tools wordcloud and interactive table
        run: |
          bash sources/bin/format_tools.sh
      - name: Filter workflows for communities
        run: | 
          bash sources/bin/get_community_workflows.sh
      - name: Filter tutorials for communities
        run: | 
          bash sources/bin/get_community_tutorials.sh
      - name: Filter citations for communities
        run: | 
          bash sources/bin/get_community_citations.sh no-scholarly
      #- name: Update tool to keep and exclude for communities
      #  run: | 
      #    bash sources/bin/update_tools_to_keep_exclude.sh
      - name: Filter tools for communities
        run: | 
          bash sources/bin/get_community_tools.sh
      - name: Populate Microbiology (microGalaxy) Lab
        run: | 
          bash sources/bin/populate_labs.sh
        env: 
          COMMUNITY: microgalaxy
      - name: Populate biodiversity lab
        run: |
          bash sources/bin/populate_labs.sh
        env: 
          COMMUNITY: biodiversity
      - name: Populate earth-system Lab
        run: |
          bash sources/bin/populate_labs.sh
        env: 
          COMMUNITY: earth
      - name: Populate Imaging lab
        run: |
          bash sources/bin/populate_labs.sh
        env: 
          COMMUNITY: imaging
#To initiate a lab, we recommend adding it below. It will automatically create the folders and structures required.
#      - name: Populate <community-name> Lab
#        run: |
#          bash sources/bin/populate_labs.sh
#        env: 
#          COMMUNITY: <community-name>
      - name: Create Pull Request
        uses: peter-evans/create-pull-request@v8
        with:
          commit-message: Update resources
          title: Automatic resources update
          body: Automatic resource update done via GitHub Action once a week
          base: main
          branch: resource-update
          delete-branch: true
          add-paths: |
            communities/

Last fetched:

Triggers

workflow_dispatch push

Jobs

Jobs for Filter community resources
Job Runs on Steps Actions used
Filter resources for communities ubuntu-latest 7
actions/checkout@v6 actions/setup-python@v6 peter-evans/create-pull-request@v8
Raw YAML
name: Filter community resources

on:
  workflow_dispatch:
  # the workflow it also triggered when the community definitions are changed
  push:
    paths:
    - 'data/communities/*/metadata/*'
    branches: ["main"]

# 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: "filter"
  cancel-in-progress: false

jobs:
  filter-resources:
    name: Filter resources for communities
    runs-on: ubuntu-latest
    steps:
    - name: Checkout main
      uses: actions/checkout@v6
    - uses: actions/setup-python@v6
      with:
        python-version: '3.11' 
    - name: Install requirement
      run: python -m pip install -r requirements.txt
    - name: Filter tutorials for communities
      run: | 
        bash bin/get_community_tutorials.sh
    - name: Update tool to keep and exclude for communities
      run: | 
        bash bin/update_tools_to_keep_exclude.sh
    - name: Filter tools for communities
      run: | 
        bash bin/get_community_tools.sh
    - name: Create Pull Request
      uses: peter-evans/create-pull-request@v8
      with:
        commit-message: Update resources
        title: Resource filtering
        body: Resource filering done via GitHub Action when the community definitions are changed 
        base: main
        branch: resource-filtering
        delete-branch: true

Last fetched:

Triggers

workflow_run

Jobs

Jobs for Galaxy Labs PR - post comment(s)
Job Runs on Steps Actions used
test-labs ubuntu-latest 6
actions/checkout@v6 actions/setup-python@v6
Raw YAML
name: Galaxy Labs PR - post comment(s)

on:
  workflow_run:
    workflows: ["Test changed Lab pages"]
    types:
      - completed

jobs:
  test-labs:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout base branch
        uses: actions/checkout@v6
        with:
          repository: ${{ github.repository }}
          ref: main

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

      - name: Install pygithub
        run: pip install pygithub==2.6

      - name: Install GitHub CLI
        run: sudo apt-get install gh

      - name: Download "Test changed Lab pages" artifact
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh repo set-default galaxyproject/galaxy_codex
          RUN_ID=$(gh run list --workflow "Test changed Lab pages" --limit 1 | tail -n 1 | grep -oE '\b[0-9]{11}\b')
          echo "RUN_ID: $RUN_ID"
          gh run view $RUN_ID --log
          gh run download $RUN_ID --name labs_test_comments --dir ./labs_test_comments

      - name: Post comment if matching changes found
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}  #${{ secrets.GH_PR_TOKEN }}
        run: |
          if ls labs_test_comments/*.md 1> /dev/null 2>&1; then
            echo "Changed files found"
            echo "Sourcing environment variables from env.sh:"
            cat labs_test_comments/env.sh
            source labs_test_comments/env.sh
            python3 ./sources/bin/labs_post_comments.py labs_test_comments
          else
            echo "No changed files found"
          fi

Last fetched:

Triggers

pull_request

Jobs

Jobs for Test changed Lab pages
Job Runs on Steps Actions used
test-changed-labs ubuntu-latest 9
actions/checkout@v6 actions/setup-python@v6 actions/checkout@v6 actions/checkout@v6 actions/upload-artifact@v7
Raw YAML
name: Test changed Lab pages

on:
  pull_request:
    types: [opened, reopened, synchronize]

jobs:
  test-changed-labs:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout base branch
        uses: actions/checkout@v6
        with:
          repository: ${{ github.repository }}
          ref: main
          path: base

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

      - name: Checkout base branch
        uses: actions/checkout@v6
        with:
          repository: ${{ github.event.pull_request.base.repo.full_name }}
          ref: ${{ github.event.pull_request.base.ref }}
          path: base

      - name: Checkout head branch
        uses: actions/checkout@v6
        with:
          repository: ${{ github.event.pull_request.head.repo.full_name }}
          ref: ${{ github.event.pull_request.head.ref }}
          path: head

      - name: Get list of changed files
        id: changed-files
        run: |
          cd head
          git remote add upstream https://github.com/${{ github.repository }}
          git fetch upstream main
          git diff --name-only upstream/main...HEAD | grep '/lab/' > ../paths.txt || true
          cd ..
          echo ""
          echo "Changed files:"
          cat paths.txt
          mkdir output
          mv paths.txt output/

      - name: Test changed Lab pages
        id: test-labs
        env:
          BRANCH_NAME: ${{ github.event.pull_request.head.ref }}
          HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
        run: |
          if [ -s output/paths.txt ]; then
            echo "Changed files found"
            python3 base/sources/bin/labs_test.py output/paths.txt
          else
            echo "No changes to Galaxy Labs found"
          fi
        continue-on-error: true

      - name: Write pull request variables to env.sh
        env:
          PR_NUMBER: ${{ github.event.number }}
          BRANCH_NAME: ${{ github.event.pull_request.head.ref }}
          HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
          BASE_REPO: ${{ github.repository }}
        run: |
          echo "export PR_NUMBER=${PR_NUMBER}" >> output/env.sh
          echo "export BASE_REPO=${BASE_REPO}" >> output/env.sh

      - name: Upload test result comments artifact
        uses: actions/upload-artifact@v7
        with:
          name: labs_test_comments
          path: output

      - name: Check outcome of the previous step
        id: check-outcome
        run: |
          if [ "${{ steps.test-labs.outcome }}" == "failure" ]; then
            echo "Test failed"
            exit 1
          else
            echo "Test passed"
          fi

Last fetched:

Triggers

pull_request

Jobs

Jobs for Update Labs Engine cache
Job Runs on Steps Actions used
update_cache ubuntu-latest 4
actions/checkout@v6
Raw YAML
name: Update Labs Engine cache

on:
  pull_request:
    types: [closed]
    branches:
      - main

jobs:
  update_cache:
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v6
        with:
          fetch-depth: 0

      - name: Get list of changed files
        run: |
          BASE=${{ github.event.pull_request.base.sha }}
          HEAD=${{ github.event.pull_request.merge_commit_sha }}
          git diff --name-only $BASE $HEAD | grep "^communities/[^/]\+/lab" > paths.txt || true
          echo ""
          echo "Changed files:"
          cat paths.txt

      - name: Test changed Lab pages
        id: test-labs
        env:
          BRANCH_NAME: main
          HEAD_REPO: ${{ github.event.pull_request.base.repo.full_name }}
        run: |
          if [ -s paths.txt ]; then
            echo "Changed files found. Updating Labs Engine cache and running tests..."
            ln -s . head  # script expects repo to be here
            python3 sources/bin/labs_test.py paths.txt
          else
            echo "No changes to Galaxy Labs found"
          fi
        continue-on-error: true

      - name: Check outcome of the previous step
        id: check-outcome
        run: |
          if [ "${{ steps.test-labs.outcome }}" == "failure" ]; then
            echo "Test failed"
            exit 1
          else
            echo "Test passed"
          fi

Last fetched:

Triggers

push pull_request

Jobs

Jobs for Code Best Practices and Testing
Job Runs on Steps Actions used
lint ubuntu-latest 4
actions/checkout@v6 actions/setup-python@v6
test ubuntu-latest 7
actions/checkout@v6 actions/setup-python@v6 actions/upload-artifact@v7
Raw YAML
name: Code Best Practices and Testing

on:
  push:
  pull_request:
    branches:
      - main
    paths:
      - 'sources/bin/**'

permissions:
  contents: read

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: '3.11'
      - name: Install tox
        run: python -m pip install 'tox>=1.8.0'
      - name: Lint
        run: tox -e lint

  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ['3.11']
    steps:
      - uses: actions/checkout@v6

      - uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}

      - name: Install dependencies
        run: python -m pip install -r requirements.txt

      - name: Run tests and measure coverage
        working-directory: sources
        run: |
          PYTHONPATH=bin coverage run -m unittest discover -s bin/tests -v

      - name: Print coverage report
        working-directory: sources
        run: coverage report
      - name: Generate HTML coverage report
        if: github.event_name == 'push' && github.ref == 'refs/heads/main'
        working-directory: sources
        run: coverage html

      - name: Upload coverage HTML report
        if: github.event_name == 'push' && github.ref == 'refs/heads/main'
        uses: actions/upload-artifact@v7
        with:
          name: coverage-html
          path: sources/htmlcov  # Use full path relative to root

Last fetched:

Triggers

push pull_request

Jobs

Jobs for Lint Jekyll site
Job Runs on Steps Actions used
check-internal-links ubuntu-latest 5
actions/checkout@v6 ruby/setup-ruby@v1.288.0 actions/configure-pages@v5
Raw YAML
name: Lint Jekyll site

on: [push, pull_request]

jobs:
  check-internal-links:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: ruby/setup-ruby@v1.288.0
        with:
          ruby-version: '3.3'
          bundler-cache: true
          cache-version: 0
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Install dependencies
        run: |
          bundle install
      - name: Build with Jekyll
        # Outputs to the './_site' directory by default
        run: |
          bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" --strict_front_matter 
        env:
          PAGES_REPO_NWO: ${{ github.repository }}
          JEKYLL_ENV: production
          JEKYLL_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          JEKYLL_BUILD_BRANCH: ${{ github.ref_name }}
          JEKYLL_BASE_PATH: ${{ steps.pages.outputs.base_path }}
      #- name: Validate HTML and check links
      #  run: |
      #    bundle exec htmlproofer \
      #      --allow_missing_href=true \
      #      --ignore-urls "/.*localhost.*/","/.*gitter\.im.*/" \
      #      --enforce-https=false  \
      #      --disable-external=true \
      #      --ignore_empty_alt=true \
      #      --ignore_missing_alt=true \
      #      --check-internal-hash=false \
      #      ./_site

Last fetched:

Triggers

pull_request push

Jobs

Jobs for Run tests
Job Runs on Steps Actions used
test-tools ubuntu-latest 6
actions/checkout@v6 actions/setup-python@v6
test-tutorials ubuntu-latest 5
actions/checkout@v6 actions/setup-python@v6
test-workflows ubuntu-latest 5
actions/checkout@v6 actions/setup-python@v6
Raw YAML
name: Run tests

# This GitHub Actions workflow is designed to automate testing for the project.
# It triggers under two conditions:
# 1. Pull requests targeting the main branch, ensuring that internal changes
#    are validated before merging.
# 2. Pushes to the dev branch, allowing for continuous integration
#    as changes are made directly to the development branch.
#
# The workflow consists of three main jobs:
# - **test-tools**: Runs tests for tools extracted from the repository.
# - **test-tutorials**: Runs tests for community tutorials.
# - **test-workflows**: Runs tests for workflow scripts.
#
# Each job includes the following steps:
# - Checkout the repository code.
# - Set up the Python environment using the specified version.
# - Install required dependencies.
# - Execute scripts for extraction and filtering of tools, tutorials, or workflows.
#
# This ensures that the code remains reliable and functional as new changes are introduced.

on:
  pull_request:
    branches:
      - main  # Trigger on pull requests targeting the main branch
  push:
    branches:
      - dev  # Trigger on pushes to the dev branch

jobs:
  test-tools:
    runs-on: ubuntu-latest
    # This job runs tests for tools.
    # It checks for internal pull requests targeting the main branch,
    # as well as pushes to the dev branch.
    # The workflow performs the following steps:
    # 1. Checkout the repository code.
    # 2. Set up Python environment using the specified version.
    # 3. Install required Python packages.
    # 4. Extract tools using a provided script.
    # 5. Filter community tools using a provided script.
    # 6. Format tools into an interactive table and generate a word cloud.
    if: github.event.pull_request.head.repo.full_name == github.repository || github.ref == 'refs/heads/dev'
    strategy:
      matrix:
        python-version: ['3.11']
    environment: fetch-tools
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install requirements
        run: python -m pip install -r requirements.txt
      - name: Tool extraction
        run: | 
          bash sources/bin/extract_all_tools.sh test 
        env: 
          GITHUB_API_KEY: ${{ secrets.GH_API_TOKEN }}
      - name: Tool filter
        run: | 
          bash sources/bin/get_community_tools.sh test
      - name: Create interactive table and wordcloud
        run: | 
          bash sources/bin/format_tools.sh test

  test-tutorials:
    runs-on: ubuntu-latest
    # This job runs tests for tutorials.
    # Similar to the tools job, it checks for internal pull requests
    # to the main branch and pushes to the dev branch.
    # The workflow performs the following steps:
    # 1. Checkout the repository code.
    # 2. Set up Python environment using the specified version.
    # 3. Install required Python packages.
    # 4. Extract tutorials using a provided script.
    # 5. Filter community tutorials using a provided script.
    if: github.event.pull_request.head.repo.full_name == github.repository || github.ref == 'refs/heads/dev'
    strategy:
      matrix:
        python-version: ['3.11']
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install requirements
        run: python -m pip install -r requirements.txt
      - name: Tutorial extraction
        run: | 
          bash sources/bin/extract_all_tutorials.sh test 
        env: 
          PLAUSIBLE_API_KEY: ${{ secrets.PLAUSIBLE_API_TOKEN }}
      - name: Tutorial filtering
        run: | 
          bash sources/bin/get_community_tutorials.sh test

  test-workflows:
    runs-on: ubuntu-latest
    # This job runs tests for workflows.
    # It performs the same checks as the other jobs, ensuring
    # quality for workflow scripts.
    if: github.event.pull_request.head.repo.full_name == github.repository || github.ref == 'refs/heads/dev'
    strategy:
      matrix:
        python-version: ['3.11']
    steps:
      - name: Checkout
        uses: actions/checkout@v6
      - uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - name: Install requirements
        run: python -m pip install -r requirements.txt
      - name: Workflow extraction
        run: | 
          bash sources/bin/extract_all_workflows.sh test
      - name: Workflow filtering
        run: | 
          bash sources/bin/get_community_workflows.sh test


#  test-citations:
#    runs-on: ubuntu-latest
    # This job runs tests for citations.
    # Similar to the tools job, it checks for internal pull requests
    # to the main branch and pushes to the dev branch.
    # The workflow performs the following steps:
    # 1. Checkout the repository code.
    # 2. Set up Python environment using the specified version.
    # 3. Install required Python packages.
    # 4. Extract citations using a provided script.
    # 5. Filter community citations using a provided script.
#    if: github.event.pull_request.head.repo.full_name == github.repository || github.ref == 'refs/heads/dev'
#    strategy:
#      matrix:
#        python-version: ['3.11']
#    steps:
#      - name: Checkout
#        uses: actions/checkout@v6
#      - uses: actions/setup-python@v6
#        with:
#          python-version: ${{ matrix.python-version }}
#      - name: Install requirements
#        run: python -m pip install -r requirements.txt
#      - name: Citation extraction
#        run: | 
#          bash sources/bin/extract_all_citations.sh test
#      - name: Citation filtering
#        run: | 
#          bash sources/bin/get_community_citations.sh test

Last fetched:

Triggers

workflow_run workflow_dispatch

Jobs

Jobs for Deploy static content to Pages
Job Runs on Steps Actions used
deploy ubuntu-latest 4
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:

  # the workflow it triggered when the tools where filtered
  workflow_run:
    workflows: ["Filter community tools"]
    types:
      - completed

  # 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:
    if: github.repository_owner == 'galaxyproject'
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout main
        uses: actions/checkout@v6
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v4
        with:
          # Upload results index.html repository
          path: '.'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

Last fetched: