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 i nput 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
.gitignorefile to ensure build artifacts are not pushed with theDockerfileandREADME.md
- Place a
-
Ensure Docker is correctly authenticated for pushing to
quay.iodocker 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 sectionNextflow.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