Core team tasks
This page provides detailed procedures for nf-core core team administrative tasks. Core team members rotate week ‘on-call’ duties to manage community operations and support pipeline development.
Review and onboard new pipelines
To approve and setup a new nf-core pipeline:
-
Core: Update the project status on the issue to ‘Proposed’
-
Community: Discuss benefits and limitations of the proposal:
-
Emphasise collaboration
Notenf-core prefers to have more developers working on fewer pipelines, rather than many pipelines with a single developer.
-
Ensure proposal follows nf-core pipeline guidelines.
-
In some cases, promote ‘partial acceptance’, i.e., if upstream steps already covered in another pipeline, propose new pipeline of just non-overlapping steps.
-
-
Core: Check proposal has received approval in nf-core/proposals from either:
- Two members of the core team.
- One member of the core team and one member of the maintainers team.
-
Core: Make final decision:
- If accepted: update the Project status on the issue to ‘Accepted’.
- If not accepted: update the project status to ‘Turned down’ (process ends here).
-
Core: Verify that the pipeline name follows the pipeline naming guidelines
-
Core: Create a slack channel with approved pipeline name:
- Inform the new developer of the next steps.
-
Core: Add the main developer(s) to:
-
Core: Create a branch with the pipeline name in the nf-core/test-datasets repository.
-
Core/Dev: Set up the pipeline repository:
- If development started in a custom (non-nf-core) repo, transfer the repository to nf-core.
- If starting fresh, create a new GitHub repository with the name of the pipeline.
-
Core: Add the pipeline name to the website YAML file designated to ignore this repository when building the website pipeline list.
-
Core/Dev: Use
nf-core pipelines createto create a git repository and push it to GitHub. -
Core/Dev: Once first release (mostly) ready:
- Transfer the repository to nf-core GitHub organisation and remove the repository on the local machine/user account.
-
Core/Dev: After first release, remove the pipeline name from the website YAML file ignoring this pipeline from the build, if it is listed.
-
Core/Dev: Trigger the GitHub action to sync the
nf-co.repipelines page:- Website repo > Actions > Build json files and md-cache > Run workflow > From main.
Upload test data to a S3 bucket
To upload full-test AWS files for to a S3 bucket:
-
Check the test data is valid.
NoteSmall input data may be unreliable when downloaded from other repositories (e.g., limit total file size to < 10 GB total).
-
Check that large files cannot be reduced or subset.
-
Select Amazon S3-managed keys (SSE-S3) and create the pipeline directory in the S3 bucket.
Transfer a repository to nf-core
To transfer an existing repository to the nf-core GitHub organisation:
-
Request repository ownership transfer from the developer.
- If the repository is under an organisation account, ask the developer to add a core team member as a co-owner.
- If the repository is under a personal user account, ask the developer to transfer ownership directly to a core team member’s personal account.
-
Transfer the repository to the nf-core organisation.
- In the repository, go to Settings, scroll to the bottom of the General page, and select Transfer
- Confirm or update the repository name if needed.
-
Configure repository settings in the nf-core organisation.
-
Ask Matthias for the repository ruleset JSON files.
NoteThese are still under development, but pinned in the core channel
-
In the repository, go to Settings.
-
In the left sidebar, select Rules.
-
Select New ruleset.
-
Select Import a ruleset, then select a JSON file.
-
Select Create at the bottom of the page.
WarningDo not modify any fields
-
Repeat the import and create steps for each JSON file provided.
-
Create custom Docker containers for modules
To add a custom docker containers to the nf-core https://quay.io organisation:
The person building the container must have organisation push rights. Only core members may have this access. New core members should request access from existing members.
-
Check with the module author to ensure there is no available solution via Conda, Bioconda, or BioContainers.
-
Ask the module author to:
- Place a
Dockerfilealongside the module (sub)directories - Add a
README.mddescribing why the container is needed, and provide instructions for building the container - (Optional) add a
.gitgnorefile to ensure build artifacts are not pushed with theDockerfileandREADME.md
- Place a
-
Ensure Docker is correctly authenticated for pushing to
quay.io.docker login --username <QUAY_USER_NAME> quay.io -
Build the Docker image locally and tag it appropriately:
docker build . -t quay.io/nf-core/<TOOL>:<VERSION> -
Push the built container image:
docker push quay.io/nf-core/<TOOL>:<VERSION> -
Share the container reference with the module author so they can update the module:
container "nf-core/<TOOL>:<VERSION>"NoteThis replaces the entire Docker/Singularity condition in the module.
Activate Zenodo archiving of a new pipeline
To set up up Zenodo DOI:
It’s recommended that a core team member transfers the DOI to the nf-core Zenodo community.
-
Before release:
-
Sign up and log in to Zenodo.
-
Select GitHub -> Connect Account in the dropdown menu of your account and connect your GitHub account.
-
Select GitHub in the dropdown menu of your account once connected.
-
Toggle the On switch of the pipeline to enable Zenodo archiving.
NoteIt’s a good idea to enable this for all active pipelines, as DOIs will only be assigned upon release.
NoteSome repositories (e.g.,
nf-core/exoseq) may not be activated as they are archived. -
Inform the pipeline developers to make a release.
-
-
Post release:
-
Select Github in the dropdown menu of your account in Zenodo and find the relevant repository.
-
Click the Zenodo Record page for the release.
-
Find the Communities box on the record page and submit the record to the nf-core community.
TipGoogle Chrome contains a graphical bug causing the Communities box not to show up, please use another browser if this happens to you.
-
Copy the DOI for Cite all versions? in the Versions tab.
-
Update files on the pipeline master branch:
README.md: Add the Zenodo Badge and update the If you use this pipeline cite section.Nextflow.config: Update the manifest block to include the DOI.- Commit these changes with the message “Add Zenodo ID after first release”.
-
Add new community members to the GitHub organisation
To add a member to the nf-core GitHub organisation via the #github-invitations` channel.
- Verify the request is reasonable (i.e., clearly not spam).
- Send an invitation via nf-core github teams.
- Add new member to the nf-core contributors team.
- Respond to the #github-invitations channel request by reacting with the ✅ emoji.
Updating online bingo cards
To update the bingo cards to ensure they are relevant:
To update the bingo cards:
- Ask for the outreach google account credentials from
@core-team. - Log in to Firebase Dashboard.
- Select nfcore-bingo.
- Select Realtime Database.
- Select games and navigate down the tree until you reach lexicon.
- Hover over lexicon and select + to add entries:
- Key: Number
- Value: New board entry
- Select the trash bin next to the given entry to remove it.
Make backups
The following items should be regularly backed up by a member of core team with admin access to the relevant service:
- HackMD: backup to Google Drive (Outreach).
- Bingo cards rules JSON (realtime database): backup to Google Drive (Outreach).
Onboard a core team member
To onboard a new core team member:
- Add to core team Slack channel.
- Add to GitHub core team.
- Add as owners on the GitHub organisation.
- Add to
@core-team@outreach-teamslack teams. - Add as admin on slack.
- Add to hackMD team as Admin.
- Add to
quay.ioin team owners. - Add to Tower organisation as owner.
- Add to nf-core google calendar(s).
- Add to
core@nf-co.reforwarder. - Add to Zenodo community as admin.
- Update Website / About (get new member to check).
- Ask new member to add nf-core apple core emoji as Status.
- Make Slack announcement.
- Make Social media announcement.
Complete on-call duties
Duties for core team weekly ‘on-call’ rotation:
- Facilitate discussions and handling acceptance/rejection procedures on nf-core/proposals (pipelines, RFCs, SIGs, etc.) => Github and Slack
- Add new community members to the GitHub organisation => Github and Slack
- Upload test data to AWS S3 buckets for new pipelines => Slack
- Upload containers to quay.io
- Distribute first release reviews => Slack
- Activate Zenodo => Link