Subject Area: | CI/CD Pipeline |
Topic | Building the image an storing it |
Architectural Decision: | Using Github actions to push image to QuayIO |
Issue or Problem Statement: | Need for automatic code testing and building the image to then be stored in the container registry |
Assumptions: | Compatibility with NodeJS |
Motivation: | Good software development process, Increased integration speed |
Alternatives: | Jenkins, CircleCI, Travis CI, IBM Cloud CI, AWS CodePipeline |
Justifications: | We chose GitHub Actions because - well documented, easy-of-use, readily available examples and templates, Already using GitHub Actions for assigning issues to projects automatically, NodeJS build and test workflow available, OpenShift deployment available |
Jenkins - Quite old, poor support for some plug-ins, extra set-up, despite being available on OpenShift Developer Sandbox there is no possibility for configuring plug-ins manually which makes this entirely not feasible | |
Circle CI - Isn't fully Open Source | |
Travis CI - Many compatible features but doesn't have as many templates available as GitHub Actions | |
IBM Cloud CI - Requires the use of IBM CD, quite advanced set-up and features available which put it beyond the scope of our project | |
AWS CodePipeline - Hard to set-up, requires other AWS products, e.g., network set-up. Available documentation is hard to navigate | |
Implications: | Ties us to GitHub Actions more, making using third-party tools more difficult to integrate into the pipeline |
Derived requirements: | Use a CI template to build and push the container registry |
Related Decisions: | Using GitHub Actions for OpenShift deployments (template available) |
References: | https://katalon.com/resources-center/blog/ci-cd-tools |
https://harness.io/blog/devops/ci-cd-tools/ | |
https://circleci.com/ | |
https://circleci.com/pricing/ | |
https://argoproj.github.io/ | |
https://argo-cd.readthedocs.io/en/stable/ | |
https://github.com/features/actions | |
https://resources.github.com/devops/tools/automation/actions | |
https://access.redhat.com/documentation/en-us/openshift_container_platform/4.8/html/building_applications/working-with-helm-charts | |
https://docs.openshift.com/container-platform/3.11/dev_guide/deployments/how_deployments_work.html | |
https://github.blog/2022-02-02-build-ci-cd-pipeline-github-actions-four-steps/ | |
https://www.trustradius.com/products/travis-ci/reviews?qs=pros-and-cons#product-details |
Subject Area: | CI/CD Pipeline |
Topic | Pulling and deploying image from registry |
Architectural Decision: | Using Github actions to deploy the image |
Issue or Problem Statement: | After the image is built it must be shipped to the customers, and so another stage is required to deploy it |
Assumptions: | Compatibility with QuayIO |
Motivation: | Good software development process, Increased delivery speed |
Alternatives: | ArgoCD, IBM CD, AWS CodeDeploy, Helm Charts (Openshift container platform) |
Justifications: | We chose GitHub Actions because - well documented, easy-of-use, readily available examples and templates, Already using GitHub Actions for assigning issues to projects automatically, NodeJS build and test workflow available, OpenShift deployment available |
ArgoCD - steep learning curve, kubernetes focused, difficult set-up | |
IBM CD - dependent on use of IBM CI toolchain | |
AWS CodeDepoly - dependent on use of AWS CodePipeline | |
Helm Charts - Steep learning curve, available in the OpenShift Container platform however, sandbox version may have limitations, kubernetes focused | |
Implications: | Ties us to GitHub Actions more, making using third-party tools more difficult to integrate into the pipeline |
Derived requirements: | Use a CD template to perform deployment to OpenShift |
Related Decisions: | Using GitHub Actions for building and storing the image |
References: | https://katalon.com/resources-center/blog/ci-cd-tools |
https://harness.io/blog/devops/ci-cd-tools/ | |
https://circleci.com/ | |
https://circleci.com/pricing/ | |
https://argoproj.github.io/ | |
https://argo-cd.readthedocs.io/en/stable/ | |
https://github.com/features/actions | |
https://resources.github.com/devops/tools/automation/actions | |
https://access.redhat.com/documentation/en-us/openshift_container_platform/4.8/html/building_applications/working-with-helm-charts | |
https://docs.openshift.com/container-platform/3.11/dev_guide/deployments/how_deployments_work.html | |
https://github.blog/2022-02-02-build-ci-cd-pipeline-github-actions-four-steps/ | |
https://www.trustradius.com/products/travis-ci/reviews?qs=pros-and-cons#product-details |
Subject Area | CI/CD Pipeline |
Topic | Static Analysis Tool |
Architectural Decision | Selecting a tool to automatically detect code smells |
Motivation | Good software development process |
Increased integration speed | |
Requirements | Compatibility with JS |
Tool Selected | Qodana |
Alternatives | SonarCloud, CodeFactor, Semgrep |
Justification | Qodana ++ Easy to set-up, ++ Easy integration with GitHub workflows, ++ Detects and presents code smells within the GitHub Actions UI |
SonarCloud -- Missed code smells that alternative tools detected | |
CodeFactor -- Doesn't integrate through GitHub Actions | |
Semgrep -- Difficult to use, -- Unclear UI | |
References | https://github.com/marketplace/category/code-quality |
https://github.com/marketplace/semgrep-dev | |
https://github.com/marketplace/qodana | |
https://github.com/marketplace/codefactor | |
https://github.com/marketplace/actions/sonarcloud-scan |