Task Actioner is a RabbitMQ comsumer that receives task messages and runs them as native or docker actions
- Always on - never crash or restart on crash
 - Consumes rabbitMQ
 - Read the message (i.e. payload-example.json)
 - Download the required files
 - Read the type of task to call the right action if it's a docker container:
 - mount the right volumes
 - convert the params as args
 
- Built in code (faster/reliable)
 - call of Docker image (GitHub actions-like)
 
docker pull myminifactory/task-actioner
Here are all the environment variables you need to run the container:
| Variable name | Description | Default value | 
|---|---|---|
| MMF_API_BASE_URL | The base url of your MyMiniFactory instance | null | 
| MMF_API_SECRET_KEY | Your access token to use your MyMiniFactory instance | null | 
| FILE_STORAGE_HOST | The url of your storage service | null | 
| FILE_STORAGE_PORT | The port of you storage service | null | 
| FILE_STORAGE_USE_SSL | put it to true if you want to use SSL to communicate with your storage service | null | 
| FILE_STORAGE_ACCESS_KEY | The login of your storage service | null | 
| FILE_STORAGE_SECRET_KEY | The password of your storage service | null | 
| RABBITMQ_HOST | The url of your RabbitMQ service | null | 
| RABBITMQ_PORT | The port of your storage service | null | 
| RABBITMQ_USE_SSL | set true if you want to use AMQPS to communicate with RabbitMQ AMQP otherwise | |
| RABBITMQ_USER | The login of your storage service | null | 
| RABBITMQ_PASSWORD | The password of your storage service | null | 
| UID | The user id of the user to manipulate your file in the container launched with docker actions | 1000 | 
| GID | The group id of the user to manipulate your file in the container launched with docker actions | 1000 | 
| UNAME | The name of the user to manipulate your file in the container launched with docker actions | worker | 
| TASK_ACTIONER_PATH | The location of your task actioner application | null | 
| SIMULTANEOUS_TASKS | Number of concurrent tasks | 1 | 
Go into the tests directory and run docker-compose specifying the environment variable TASK_ACTIONER_PATH, RABBITMQ_PORT, FILE_STORAGE_ACCESS_KEY and FILE_STORAGE_SECRET_KEY
TASK_ACTIONER_PATH=<task_actioner_path> RABBITMQ_PORT=<rabbitmq_port> FILE_STORAGE_ACCESS_KEY=<access_key> FILE_STORAGE_SECRET_KEY=<secret_key> docker-compose up -d
Go back tot the root the repository
Install the the test actions with docker and npm:
docker build -t zip -f tests/actions/zip/Dockerfile tests/actions/zip/
npm i tests/actions/unzip
Now you can run:
npm test
- Plug the consumer to rabbitMQ
 - Build docker image if it doesn't exist
 - Rebuild in Rust
 - Handle errors nicely and log!
 - Handle progress feedback of tasks