|
|
@@ -0,0 +1,36 @@
|
|
|
+node {
|
|
|
+ def app
|
|
|
+
|
|
|
+ stage('Clone repository') {
|
|
|
+ /* Let's make sure we have the repository cloned to our workspace */
|
|
|
+ checkout scm
|
|
|
+ }
|
|
|
+
|
|
|
+ stage('Build image') {
|
|
|
+ /* This builds the actual image; synonymous to
|
|
|
+ * docker build on the command line */
|
|
|
+
|
|
|
+
|
|
|
+ app = docker.build("strapi:latest")
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ stage('Test image') {
|
|
|
+ /* Ideally, we would run a test framework against our image.
|
|
|
+ * For this example, we're using a Volkswagen-type approach ;-) */
|
|
|
+ app.inside {
|
|
|
+ sh 'echo "Tests passed"'
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ stage('Push image') {
|
|
|
+ /* Finally, we'll push the image with two tags:
|
|
|
+ * First, the incremental build number from Jenkins
|
|
|
+ * Second, the 'latest' tag.
|
|
|
+ * Pushing multiple tags is cheap, as all the layers are reused. */
|
|
|
+ docker.withRegistry('https://container.kornblum.dev', 'container-kornblum-dev') {
|
|
|
+ app.push("${env.BUILD_NUMBER}")
|
|
|
+ app.push("latest")
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|