The performance of third-party tools installed in CI/CD environment needs to be measured. Docker is one of the most commonly used tools on Semaphore. In order to improve the experience of using Docker on Semaphore, we need to start measuring how it performs on our platform.
In order to be aware of the docker performance, we have created wrapper scripts that will generate reports for docker push|pull durations.
To start reporting slow docker performance in your CI/CD pipeline please do the following steps:
Add the following command to your semaphore YAML:
curl https://raw.githubusercontent.com/renderedtext/snippets/master/install_docker_debug.sh | bash
A) You can add to global_job_config:
global_job_config:
prologue:
commands:
- curl https://raw.githubusercontent.com/renderedtext/snippets/master/install_docker_debug.sh | bash
...
B) Or within single block prologue:
task:
prologue:
commands:
- curl https://raw.githubusercontent.com/renderedtext/snippets/master/install_docker_debug.sh | bash
...
C) Or put the installation command at the beginning before other job commands:
jobs:
- name: Docker push
commands:
- curl https://raw.githubusercontent.com/renderedtext/snippets/master/install_docker_debug.sh | bash
...
Replace calls to docker push <IMAGE>:<TAG>
command with docker-debug-push <IMAGE>:<TAG>
command.
Replace calls to docker pull <IMAGE>:<TAG>
command with docker-debug-pull <IMAGE>:<TAG>
command.
Scripts will generate logs for every called push|pull in /tmp/docker-debug-logs
directory and they need to be pushed to artifacts and sent to the support for evaluation.
For that you can use docker-debug-log
scripts at the end of each job for which you gathered docker logs.
Script will push /tmp/docker-debug-logs_${DATE}_${SEMAPHORE_JOB_ID}.tar.gz
archive to job artifacts.
jobs:
- name: Docker push
commands:
- curl https://raw.githubusercontent.com/renderedtext/snippets/master/install_docker_debug.sh | bash
- docker-debug-pull mariadb:latest
- docker-debug-pull php:latest
- docker-debug-log
Get the logs from the job artifacts and send them to the support.
Due to the additional commands for log gathering push and pull commands migh take up to 15 sec longer.
In case you are concerned about introducing the script to your CI/CD pipeline, you can have a look at its code for push.sh, pull.sh or log.sh scripts in this repository.
For any additional concerns about the script please contact us through Semaphore support.