Jenkins | Build and Deploy a Groovy App
Introduction
Using Jenkins as an automation server for your development, you can automate such repeating tasks as testing and deploying your app.
Starting with a sample Groovy App (a simple calculator) with tests, you will learn how to integrate your app in Jenkins and build a pipeline, so that Jenkins runs the desired tasks every time, you change the code.
Prepare the sources
Clone the sample repository from Github.
You should clone the demo repository into you demo account, because you may change some file during this post., and you will not get write permissions for the demo repository.
Also, clone the repository to your local machine to see what our demo app looks like.
$ git clone https://github.com/jenkins-toolbox/SampleApp_GroovyCalculator Cloning into 'SampleApp_GroovyCalculator'... remote: Enumerating objects: 194, done. remote: Counting objects: 100% (194/194), done. remote: Compressing objects: 100% (138/138), done. remote: Total 194 (delta 44), reused 137 (delta 23), pack-reused 0 Receiving objects: 100% (194/194), 93.40 KiB | 817.00 KiB/s, done. Resolving deltas: 100% (44/44), done.
Go into the new create folder
$ cd SampleApp_GroovyCalculator/ $ ls Jenkinsfile README.md bin build.gradle gradlew src Makefile SampleCalculator build gradle settings.gradle
The first task, Jenkins will do in our pipeline: build your app
$ ./gradlew build
Because it’s the first time you start gradlew
, the required software will be downloaded:
First: the current Gradle Version (Gradle is the Build Tool used by Groovy Projects)
Downloading https://services.gradle.org/distributions/gradle-6.2.1-bin.zip ………10%………20%………30%……….40%………50%………60%……….70%………80%………90%……….100% Welcome to Gradle 6.2.1! Here are the highlights of this release: - Dependency checksum and signature verification - Shareable read-only dependency cache - Documentation links in deprecation messages For more details see https://docs.gradle.org/6.2.1/release-notes.html Starting a Gradle Daemon, 2 stopped Daemons could not be reused, use --status for details
After this, your app will be tested
> Task :test Calculator02Spec > two plus two should equal four PASSED Calculator01Spec > add: 2 + 3 PASSED Calculator01Spec > subtract: 4 - 3 PASSED Calculator01Spec > multiply: 2 * 3 PASSED BUILD SUCCESSFUL in 34s 5 actionable tasks: 5 executed
Perform the build again
No download is required. The build is much quicker.
$ ./gradlew build BUILD SUCCESSFUL in 1s 5 actionable tasks: 5 up-to-date
Now, test our app:
./gradlew clean test > Task :test Calculator02Spec > two plus two should equal four PASSED Calculator01Spec > add: 2 + 3 PASSED Calculator01Spec > subtract: 4 - 3 PASSED Calculator01Spec > multiply: 2 * 3 PASSED BUILD SUCCESSFUL in 4s 5 actionable tasks: 5 executed
Create a Jenkins Pipeline
Start by clicking on the BlueOcean menu item.
Hint: Blue Ocean is not installed with the default Jenkins installation.
You have to install the corresponding Plugins.
Select Manage Jenkins
→ Manage Plugins
.
Then, select the tab Available
and enter in the Filter
box: Blue Ocean.
Install all plugins, that will be listed.
Next: Click on the New Pipeline to create your first Pipeline
Use the Item GitHub to specify, where our code is stored
Next, use your GitHub account.
Be sure, that you cloned the demo repository
Next, we select the demo repository SampleApp_GroovyCalculator
Click on Create Pipeline and after a few seconds, the pipeline is created.
Immediately after creating the pipeline, Jenkins is starting the pipeline and all steps included.
If everything went well, you see a positive status
Now, click on the pipeline (e.g. the text master
or the status icon) and you will see the pipeline with all steps and their corresponding state.
If you, want to edit the pipeline, for example to add another step, like on the pencil in the header.
Click on Cancel
to leave the Pipeline editor.
Hint: If you click on Save
, all changes are pushed back to the repository and Jenkins starts the Pipeline again.
Run the Pipeline
If you want to run your pipeline, click on the rerun icon for your pipeline