CI / CD#

It’s no time to waste too much time to do something MANUALLY after develop. In particular, something is necessary to do every times like run tests.

Below are somethings be necessary to do and they could be automation with some CI tools:

  • Prepare the runtime environment for testing

  • Run tests

  • Collect the code coverage which be tested

  • Combine the code coverage results

  • Report code coverage result

  • Check and record the code quality

  • Build codes

  • Release codes

Absolutely, it does different things with different branch. For example, branch develop focus on test and code coverage, branch master is responsible for run all entire flows includes run tests, report code coverage and release code, etc.

CI/CD Building Status#

OS

Building Status

Coverage Status

Linux

travis-ci build status

(Deprecated CI)

Linux/MacOS

github-actions build status

Test coverage with 'codecov'

Windows

circle-ci build status

Test coverage with 'coveralls'

Windows

github-actions build status

(Deprecated CI)

CI/CD Flow#

Work Flow#

CI/CD work flow

Work Circle#

CI/CD work flow

Tool#

MultiRunnable be developed with using multiple different CI tools before. Currently, it only uses 2 CI tools: GitHub Actions & Circle-CI.

GitHub Actions#

OS

Building Status

Coverage Status

Linux/MacOS

github-actions build status

Test coverage with 'codecov'

  • Runtime OS:

    • Linux

    • MacOS

  • Procedures (By branches):

    • master: Prepare test items -> run tests and save code coverages -> combine code coverage and submit to coverage service -> run pre-build tests -> build code -> release code

      CI/CD work-flow by Git branch 'master'

    • release: Prepare test items -> run tests and save code coverages -> combine code coverage and submit to coverage service -> run pre-build tests

      CI work-flow by Git branch 'release'

    • develop: Prepare test items -> run tests and save code coverages -> combine code coverage and report it

      CI work-flow by Git branch 'develop'

  • Using Motivation:

    1. It’s highly integrated with code repository platform — GitHub.

    2. Setting of configuration is clean and easy (it’s great of readable).

    3. It has rich plugins (actions) which could operate with other services, etc.

    4. The workflow feature of CI/CD is powerful.

    5. GitHub provides a UI page (Actions) to let develop clearly monitor anything about GitHub Actions (includes entire workflow).

    6. It’s FREE and it provides many credits per month.

Circle-CI#

OS

Building Status

Coverage Status

Windows

circle-ci build status

Test coverage with 'coveralls'

  • Runtime OS:

    • Windows

  • Procedures (For every branches):

    • Prepare test items -> run tests and save code coverages -> submit to coverage service

  • Using Motivation:

    1. It’s workflow feature of CI/CD is powerful.

    2. It provides a website to let develop clearly monitor anything (includes entire workflow).

    3. It’s FREE and it provides many credits per month.

AppVeyor (Deprecated)#

OS

Building Status

Coverage Status

Windows

github-actions build status

(Deprecated CI)

  • Runtime OS:

    • Windows

  • Procedures (For every branches):

    • Prepare test items -> run tests and save code coverages -> submit to coverage service

  • Deprecated Motivation:

    1. It’s not good at workflow I need of DevOps.

    2. Setting of configuration isn’t clean.

Travis-CI (Deprecated)#

OS

Building Status

Coverage Status

Linux

travis-ci build status

(Deprecated CI)

  • Runtime OS:

    • Linux

  • Procedures (For every branches):

    • Prepare test items -> run tests and save code coverages -> submit to coverage service

  • Deprecated Motivation:

    1. It’s not FREE.