Continuous Integration With Github Actions
Continuous Integration With Github Actions
1. Write (or copy from stack overflow) some code into my project.
2. Do some tests to check if the new code works.
3. I’m a super developer!
Continuous Integration (CI) is a development practice where developers integrate code into a shared repository
frequently, preferably several times a day. Each integration can then be verified by an automated build and automated
tests.
Continuous integration + Continuous deployment + Continuous delivery = happy developers and better software
Basic: git
Basic: git
Basic: github
● Every interaction with github can trigger an action (push, pull_request, comment, another action, …)
● Github make a VM available to do (almost) everything I want
○ Not so bad spec (see next slide)
○ A lot of software preinstalled (see here)
○ If I need certain software I can use a docker image!
○ I can use my own machines to host my github actions.
● Actions are “programmed” with .yml files inside the folder .github/workflows
Github-hosted runners
Spec:
A lot of software preinstalled (e.g. python, conda, pip, mongodb, mysql, git, gcc…)
But how much it costs?
Note that 1min = 1min on Linux! On windows we have a x2 multiplier, on MacOS a x10 multiplier!
Some (boring) notation
● Workflow: is an automated procedure that you add to your repository. Workflows are made up of one
or more jobs and can be scheduled or triggered by an event.
● Event: is a specific activity that triggers a workflow.
● Job: is a set of steps that execute on the same runner. By default, a workflow with multiple jobs will
run those jobs in parallel.
● Step: is an individual task that can run commands in a job. A step can be either an action or a shell
command.
● Actions: are standalone commands that are combined into steps to create a job. Actions are the
smallest portable building block of a workflow. You can create your own actions, or use actions created
by the GitHub community.
Hands-on: automatically publish API-doc
Apart from being triggered by any interaction with Github, a workflow can also be scheduled to run
periodically.
Cron Jobs
Useful: 0 0 * * 0
Advanced Actions (in Avalanche)
Link: https://github.com/ContinualAI/avalanche