This toolchain is a combination of tools that aid in the delivery, development, and management of software applications throughout the systems development life cycle, as coordinated by an organisation that uses DevOps practices.
This tools fit into one or more activities, which supports specific DevOps initiatives: Plan, Create, Verify, Package, Release, Configure, Monitor, and Version Control.
- Jenkins
A self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software. - SonarQube
An open-source platform developed by SonarSource for continuous inspection of code quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities on 20+ programming languages. SonarQube offers reports on duplicated code, coding standards, unit tests, code coverage, code complexity, comments, bugs, and security vulnerabilities. - Nexus Repository Manager OSS
- A proxy for remote repositories which caches artifacts saving both bandwidth and time required to retrieve a software artifact from a remote repository, and;
- a host for internal artifacts providing an organization with a deployment target for software artifacts. An automatic code review tool to detect bugs, vulnerabilities, and code smells in your code.
- Eliezer Efrain Chavez - eliezerchavez
-
Ansible
Ansible is an open-source software provisioning, configuration management, and application-deployment tool enabling infrastructure as code. It runs on many Unix-like systems, and can configure both Unix-like systems as well as Microsoft Windows. -
A user with sudo capabilities.
ansible-playbook install.yml
or
ansible-playbook install.yml -e "<variable_name>=<variable_value>,..."
You can override the value of the following variables in the playbook:
Variable Name | Default Value |
---|---|
server |
hostname |
timezone |
America/Lima |
username |
tools |
After that you can access the tools via:
Tool | URL |
---|---|
Jenkins | http://<server>/jenkins e.g. http://localhost/jenkins |
SonarQube | http://<server>/sonarqube e.g. http://toolchain.westus.cloudapp.azure.com/sonarqube |
Nexus | http://<server>/nexus e.g. http://tools.local/nexus |
The default credentials for all the tools installed are: admin/letmein
ansible-playbook uninstall.yml
The following is completely optional!!!
If your machine doesn't have enough resources to run this demo environment, you could use the provided ARM Template to provision the recommended environment.
- Azure CLI
az group create -g CICDToolchain az group deployment create -g CICDToolchain -n CICDToolchain --template-file azure/toolchain.json \ --parameters adminPublicKey="$(cat ~/.ssh/id_rsa.pub)" domainNameLabel=<label>
- PowerShell
New-AzResourceGroup -Name CICDToolchain New-AzResourceGroupDeployment -ResourceGroupName CICDToolchain ` -TemplateFile azure/toolchain.json ` -domainNameLabel <label> ` -adminPublicKey <pubkey>
ansible-playbook -i <server_name>, -e "server=<server_name>,..." -u <ssh_user> install.yml
ansible-playbook -i <server_name>, -e "server=<server_name>,..." -u <ssh_user> uninstall.yml