Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/actions/nf-test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ runs:

- name: Setup apptainer
if: contains(inputs.profile, 'singularity')
uses: eWaterCycle/setup-apptainer@3f706d898c9db585b1d741b4692e66755f3a1b40 # v2
uses: eWaterCycle/setup-apptainer@4bb22c52d4f63406c49e94c804632975787312b3 # v2.0.0

- name: Set up Singularity
if: contains(inputs.profile, 'singularity')
Expand Down
60 changes: 38 additions & 22 deletions .github/workflows/branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,61 @@ name: nf-core branch protection
# This workflow is triggered on PRs to `main`/`master` branch on the repository
# It fails when someone tries to make a PR against the nf-core `main`/`master` branch instead of `dev`
on:
pull_request_target:
pull_request:
branches:
- main
- master

permissions: {}

jobs:
test:
runs-on: ubuntu-latest
steps:
# PRs to the nf-core repo main/master branch are only ok if coming from the nf-core repo `dev` or any `patch` branches
- name: Check PRs
if: github.repository == 'nf-core/multiplesequencealign'
env:
HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
run: |
{ [[ ${{github.event.pull_request.head.repo.full_name }} == nf-core/multiplesequencealign ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]]
{ [[ "$HEAD_REPO" == nf-core/multiplesequencealign ]] && [[ $GITHUB_HEAD_REF == "dev" ]]; } || [[ $GITHUB_HEAD_REF == "patch" ]]

# If the above check failed, post a comment on the PR explaining the failure
# NOTE - this doesn't currently work if the PR is coming from a fork, due to limitations in GitHub actions secrets
- name: Post PR comment
# If the above check failed, build a comment to be posted by the shared poster workflow
- name: Build PR comment
if: failure()
uses: mshick/add-pr-comment@8e4927817251f1ff60c001f04568532b38e0b4a0 # v3
with:
message: |
## This PR is against the `${{github.event.pull_request.base.ref}}` branch :x:
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
BASE_REF: ${{ github.event.pull_request.base.ref }}
HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
PR_USER: ${{ github.event.pull_request.user.login }}
run: |
mkdir -p pr-comment
echo "$PR_NUMBER" > pr-comment/pr_number.txt
echo "branch" > pr-comment/header.txt
cat > pr-comment/comment.md <<EOF
## This PR is against the \`${BASE_REF}\` branch :x:

* Do not close this PR
* Click _Edit_ and change the `base` to `dev`
* This CI test will remain failed until you push a new commit
* Do not close this PR
* Click _Edit_ and change the \`base\` to \`dev\`
* This CI test will remain failed until you push a new commit

---
---

Hi @${{ github.event.pull_request.user.login }},
Hi @${PR_USER},

It looks like this pull-request is has been made against the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) ${{github.event.pull_request.base.ref}} branch.
The ${{github.event.pull_request.base.ref}} branch on nf-core repositories should always contain code from the latest release.
Because of this, PRs to ${{github.event.pull_request.base.ref}} are only allowed if they come from the [${{github.event.pull_request.head.repo.full_name }}](https://github.com/${{github.event.pull_request.head.repo.full_name }}) `dev` branch.
It looks like this pull-request is has been made against the [${HEAD_REPO}](https://github.com/${HEAD_REPO}) ${BASE_REF} branch.
The ${BASE_REF} branch on nf-core repositories should always contain code from the latest release.
Because of this, PRs to ${BASE_REF} are only allowed if they come from the [${HEAD_REPO}](https://github.com/${HEAD_REPO}) \`dev\` branch.

You do not need to close this PR, you can change the target branch to `dev` by clicking the _"Edit"_ button at the top of this page.
Note that even after this, the test will continue to show as failing until you push a new commit.
You do not need to close this PR, you can change the target branch to \`dev\` by clicking the _"Edit"_ button at the top of this page.
Note that even after this, the test will continue to show as failing until you push a new commit.

Thanks again for your contribution!
repo-token: ${{ secrets.GITHUB_TOKEN }}
allow-repeats: false
Thanks again for your contribution!
EOF

- name: Upload PR comment artifact
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: pr-comment
path: pr-comment/
18 changes: 18 additions & 0 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,21 @@ jobs:
lint_log.txt
lint_results.md
PR_number.txt

# Build a comment for the shared pr-comment.yml poster to publish on the PR
- name: Prepare PR comment
if: ${{ always() }}
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
mkdir -p pr-comment
echo "$PR_NUMBER" > pr-comment/pr_number.txt
echo "lint" > pr-comment/header.txt
[ -f lint_results.md ] && cp lint_results.md pr-comment/comment.md || true

- name: Upload PR comment artifact
if: ${{ always() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: pr-comment
path: pr-comment/
28 changes: 0 additions & 28 deletions .github/workflows/linting_comment.yml

This file was deleted.

57 changes: 57 additions & 0 deletions .github/workflows/nf-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,22 @@ jobs:
fi
fi

# continue-on-error keeps latest-everything from failing the job, so it never shows up in
# `needs.nf-test.result` downstream and CI stays green. Surface it via a PR comment instead;
# other NXF_VER failures already fail the job/CI directly, so no comment is needed for those.
- name: Prepare PR comment fragment
if: ${{ always() && steps.run_nf_test.outcome == 'failure' && matrix.NXF_VER == 'latest-everything' }}
run: |
mkdir -p pr-comment-fragment
echo "* ❌ \`${{ matrix.profile }}\` | \`${{ matrix.NXF_VER }}\` | Shard ${{ matrix.shard }}/${{ env.TOTAL_SHARDS }}" > pr-comment-fragment/fragment.md

- name: Upload PR comment fragment
if: ${{ always() && steps.run_nf_test.outcome == 'failure' && matrix.NXF_VER == 'latest-everything' }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: pr-comment-fragment-${{ strategy.job-index }}
path: pr-comment-fragment/

confirm-pass:
needs: [nf-test]
if: always()
Expand All @@ -142,3 +158,44 @@ jobs:
echo "DEBUG: toJSON(needs) = ${{ toJSON(needs) }}"
echo "DEBUG: toJSON(needs.*.result) = ${{ toJSON(needs.*.result) }}"
echo "::endgroup::"

- name: Download PR comment fragments
if: ${{ always() }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
continue-on-error: true
with:
pattern: pr-comment-fragment-*
path: pr-comment-fragments
merge-multiple: true

# Build a comment for the shared pr-comment.yml poster to publish on the PR.
# Based on the fragments above (not needs.*.result) so non-blocking failures are still reported.
- name: Prepare PR comment
if: ${{ always() }}
env:
PR_NUMBER: ${{ github.event.pull_request.number }}
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
run: |
mkdir -p pr-comment
echo "$PR_NUMBER" > pr-comment/pr_number.txt
echo "nf-test" > pr-comment/header.txt
if [ -d pr-comment-fragments ] && [ -n "$(ls -A pr-comment-fragments)" ]; then
{
echo "## ❌ nf-test failed with latest Nextflow version"
echo ""
echo "> [!NOTE]"
echo "> Tests with Nextflow's latest version failed but it will not cause a CI workflow failure."
echo "> Please check if the failure is expected with newer (edge-)releases of Nextflow or if it needs fixing."
echo ""
cat pr-comment-fragments/*.md
echo ""
echo "See the [full run](${RUN_URL}) for details."
} > pr-comment/comment.md
fi

- name: Upload PR comment artifact
if: ${{ always() }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: pr-comment
path: pr-comment/
82 changes: 82 additions & 0 deletions .github/workflows/pr-comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Post PR comment
# Shared, privileged comment poster.
#
# This is the single workflow that runs with a write token. It is triggered
# after any of the listed "producer" workflows complete on a pull request.
# Each producer runs untrusted PR code (if any) with a read-only token and
# uploads a `pr-comment` artifact describing the comment to post; this workflow
# only ever reads that plain-text artifact, so no PR code is executed here.
#
# Artifact contract (uploaded by producers under the name `pr-comment`):
# pr_number.txt - the pull request number
# header.txt - sticky-comment identifier (keeps comment types separate)
# comment.md - the Markdown body (omit the file to post nothing)

on:
workflow_run:
workflows:
- "nf-core linting"
- "nf-core template version comment"
- "nf-core branch protection"
- "Run nf-test"

permissions:
actions: read
contents: read
pull-requests: write

jobs:
post-comment:
runs-on: ubuntu-latest
if: github.event.workflow_run.event == 'pull_request'
steps:
- name: Download PR comment artifact
uses: dawidd6/action-download-artifact@b6e2e70617bc3265edd6dab6c906732b2f1ae151 # v21
with:
run_id: ${{ github.event.workflow_run.id }}
name: pr-comment
path: pr-comment
if_no_artifact_found: ignore

- name: Read comment metadata
id: meta
run: |
echo "::group::Downloaded pr-comment contents"
ls -la pr-comment 2>/dev/null || echo "No pr-comment/ directory was downloaded."
echo "::endgroup::"

if [ ! -d pr-comment ]; then
echo "No pr-comment artifact found; nothing to post."
exit 0
fi

if [ ! -f pr-comment/comment.md ]; then
echo "Artifact present but no comment.md; nothing to post."
exit 0
fi

pr_number=$(cat pr-comment/pr_number.txt)
header=$(cat pr-comment/header.txt)
echo "Found comment.md (header='$header', pr_number='$pr_number')."

# Guard against anything unexpected ending up in the PR number.
case "$pr_number" in
''|*[!0-9]*)
echo "Invalid PR number: '$pr_number'"
exit 1
;;
esac

echo "pr_number=$pr_number" >> "$GITHUB_OUTPUT"
echo "header=$header" >> "$GITHUB_OUTPUT"
echo "post=true" >> "$GITHUB_OUTPUT"
echo "Will post comment to PR #${pr_number}."

- name: Post PR comment
if: steps.meta.outputs.post == 'true'
uses: marocchino/sticky-pull-request-comment@5770ad5eb8f42dd2c4f34da00c94c5381e49af88 # v3.0.5
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
number: ${{ steps.meta.outputs.pr_number }}
header: ${{ steps.meta.outputs.header }}
path: pr-comment/comment.md
2 changes: 1 addition & 1 deletion .github/workflows/release-announcements.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
id: get_description
run: |
echo "description=$(curl -s https://nf-co.re/pipelines.json | jq -r '.remote_workflows[] | select(.full_name == "${{ github.repository }}") | .description')" >> $GITHUB_OUTPUT
- uses: rzr/fediverse-action@563159eb8d45f70ab6aaba36ed55cd037e51f441 # master
- uses: rzr/fediverse-action@66c2cbb5b1997666b0e28d597631b6a4f09a2719 # v0.0.6
with:
access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }}
host: "mstdn.science" # custom host if not "mastodon.social" (default)
Expand Down
56 changes: 35 additions & 21 deletions .github/workflows/template-version-comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ name: nf-core template version comment
# This workflow is triggered on PRs to check if the pipeline template version matches the latest nf-core version.
# It posts a comment to the PR, even if it comes from a fork.

on: pull_request_target
on:
pull_request:

permissions: {}

jobs:
template_version:
check_template_version:
runs-on: ubuntu-latest
steps:
- name: Check out pipeline code
Expand All @@ -22,25 +25,36 @@ jobs:
- name: Install nf-core
run: |
python -m pip install --upgrade pip
pip install nf-core==${{ steps.read_yml.outputs['nf_core_version'] }}
pip install nf-core

- name: Build PR comment if template is outdated
# The fork-controlled version is passed via the environment and only ever
# used as quoted shell data (never interpolated into a command), so it
# cannot be used for script injection.
env:
PR_VERSION: ${{ steps.read_yml.outputs['nf_core_version'] }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
mkdir -p pr-comment
echo "$PR_NUMBER" > pr-comment/pr_number.txt
echo "template-version" > pr-comment/header.txt

latest_version=$(nf-core --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)

- name: Check nf-core outdated
id: nf_core_outdated
run: echo "OUTPUT=$(pip list --outdated | grep nf-core)" >> ${GITHUB_ENV}
if [ -n "$PR_VERSION" ] && [ -n "$latest_version" ] && [ "$PR_VERSION" != "$latest_version" ]; then
cat > pr-comment/comment.md <<EOF
> [!WARNING]
> Newer version of the nf-core template is available.
>
> Your pipeline is using an old version of the nf-core template: ${PR_VERSION}.
> Please update your pipeline to the latest version.
>
> For more documentation on how to update your pipeline, please see the [Synchronisation documentation](https://nf-co.re/docs/developing/template-syncs/overview).
EOF
fi

- name: Post nf-core template version comment
uses: mshick/add-pr-comment@8e4927817251f1ff60c001f04568532b38e0b4a0 # v3
if: |
contains(env.OUTPUT, 'nf-core')
- name: Upload PR comment artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
repo-token: ${{ secrets.NF_CORE_BOT_AUTH_TOKEN }}
allow-repeats: false
message: |
> [!WARNING]
> Newer version of the nf-core template is available.
>
> Your pipeline is using an old version of the nf-core template: ${{ steps.read_yml.outputs['nf_core_version'] }}.
> Please update your pipeline to the latest version.
>
> For more documentation on how to update your pipeline, please see the [Synchronisation documentation](https://nf-co.re/docs/developing/template-syncs/overview).
#
name: pr-comment
path: pr-comment/
6 changes: 5 additions & 1 deletion .nf-core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,12 @@ lint:
- conf/igenomes_ignored.config
files_unchanged:
- .github/CONTRIBUTING.md
- .gitignore
- assets/nf-core-multiplesequencealign_logo_light.png
- docs/images/nf-core-multiplesequencealign_logo_light.png
- .prettierignore
multiqc_config: false
nf_core_version: 4.0.2
nf_core_version: 4.0.3
repository_type: pipeline
template:
author: Luisa Santus, Jose Espinosa-Carrasco
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[![nf-test](https://img.shields.io/badge/unit_tests-nf--test-337ab7.svg)](https://www.nf-test.com)

[![Nextflow](https://img.shields.io/badge/version-%E2%89%A525.10.4-green?style=flat&logo=nextflow&logoColor=white&color=%230DC09D&link=https%3A%2F%2Fnextflow.io)](https://www.nextflow.io/)
[![nf-core template version](https://img.shields.io/badge/nf--core_template-4.0.2-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/4.0.2)
[![nf-core template version](https://img.shields.io/badge/nf--core_template-4.0.3-green?style=flat&logo=nfcore&logoColor=white&color=%2324B064&link=https%3A%2F%2Fnf-co.re)](https://github.com/nf-core/tools/releases/tag/4.0.3)
[![run with conda](http://img.shields.io/badge/run%20with-conda-3EB049?labelColor=000000&logo=anaconda)](https://docs.conda.io/en/latest/)
[![run with docker](https://img.shields.io/badge/run%20with-docker-0db7ed?labelColor=000000&logo=docker)](https://www.docker.com/)
[![run with singularity](https://img.shields.io/badge/run%20with-singularity-1d355c.svg?labelColor=000000)](https://sylabs.io/docs/)
Expand Down
Loading
Loading