Introduction
A task corresponds to a process that can be executed.
Tasks are grouped by project.
Several types of tasks can be created (shell script, workflow, etc.), but they all share certain characteristics.
Scheduling
Each task can be scheduled using a cron expression that follows this format.
For example, to execute a task at 3 AM every 8th and 13th day of the month, you simply need to use this expression:
0 3 8,23 * *
Notifications
If notifiers (Slack, Microsoft Teams, email, etc.) have been configured for your project, you can assign one to your task to send a notification:
- When execution starts
- When execution ends ( = fails, is aborted, or completes successfully)
- When execution fails or is aborted
Execution triggering
Task executions can be triggered by:
- Admin users or Users attached to the task’s project (via the webapp or REST API)
- Ctfreak’s internal scheduler (every monday at 2pm, …)
- Incoming webhooks (push to a branch in a github/gitlab repo, event in a home automation server, alert received from third-party software, …)
- A workflow task
Multiple execution policy
When receiving an execution request while an execution is already running for a given task, several scenarios are possible.
Reject
One execution at a time is allowed, so any new execution request will be rejected until the current execution is finished.
Smart chaining
A new execution is created with a pending status and will only start when the current one is finished.
Any new execution request will be rejected as long as an execution with a pending status already exists.
This execution policy is recommended for setting up a CI/CD pipeline (for example, a build task triggered by an incoming webhook following a push on a Github/Gitlab repository).
Replacement
The current execution receives an aborting request.
A new execution is created with a pending status and will only start when the current one is completely aborted.
Any new execution request will be rejected as long as an execution with a pending status already exists.
Concurrency
A new execution is created and started concurrently with the current one.
Make sure that your task is designed to support concurrent executions before using this execution policy.