diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..da3137b2d3461e0aa17e267848c6cdeece1b0bcc --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,23 @@ +image: openjdk:latest + +build: + stage: build + script: + - javac SiteGen.java + +test: + stage: test + script: + - javac -cp "./junit-platform-console-standalone-1.8.1.jar" SiteGenTest.java SiteGen.java + - java -jar junit-platform-console-standalone-1.8.1.jar -cp "." -c SiteGenTest + +pages: + stage: deploy + script: + - javac SiteGen.java + - java SiteGen + artifacts: + paths: + - public + only: + - main diff --git a/README.md b/README.md index e46f4a50fbb8de6acf2f9a2b8cbb58e1e4f0a165..7b6fb2eb6057fbdbb5b2bf5da14045245514f059 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,19 @@ -# Ohtu-harjoitus5 +# DEVOPS demonstration + +Build your own CI/CD pipeline to the Gitlab environment through following steps: + +- Create new project to either UTU gitlab https://gitlab.utu.fi/ or Gitlab.com https://gitlab.com/users/sign_in if you don’t have an UTU account +- Use the project template as a basis for your project +- The CI/CD pipeline should fail at the testing phase; read the console logs for all the phases and see what goes wrong +- Create new branch to investigate the situation; verify that the pipeline still fails +- Fix the situation by modifying the Java source code file based on the unit testing report found from the CI/CD console log +- When the testing phase goes green, merge the branch to the main branch +- The resulting web page generated by the Java application should now be deployed to the Gitlab Pages; Access the web pages via Gitlab setting and give public access to the resulting web site +- Read through the .gitlab-ci.yml file and try to understand what each line does +- Prepare to demonstrate you CI/CD pipeline and explain how it works + +Note: Each step can be done using the Gitlab online tools and editors + + + diff --git a/SiteGen.java b/SiteGen.java new file mode 100644 index 0000000000000000000000000000000000000000..9d777ae3773c6731075973995e40fd6af3b46cae --- /dev/null +++ b/SiteGen.java @@ -0,0 +1,27 @@ +import java.nio.file.*; +import java.util.*; +import java.util.stream.*; + +class SiteGen { + static String siteTitle = "My favorite movies"; + + static List<String> movieList = List.of( + "Star Wars", + "Star Trek", + "Battlestar Galactica" + ); + + static String htmlString = + "<html>" + + "<head><title>" + siteTitle + "</title></head>" + + "<body>" + + "<h1>" + siteTitle + "</h1>" + + "<ul>" + movieList.stream().map(i -> "<li>"+ i + "</li>").collect(Collectors.joining()) + "</ul>" + + "</body>" + + "<html>"; + + public static void main(String args[]) throws Exception { + Files.createDirectory(Paths.get("public/")); + Files.write(Paths.get("public/index.html"), htmlString.getBytes()); + } +} diff --git a/SiteGenTest.java b/SiteGenTest.java new file mode 100644 index 0000000000000000000000000000000000000000..4e7dc08b6c45a7e435a591852efb8c9a736a25dd --- /dev/null +++ b/SiteGenTest.java @@ -0,0 +1,13 @@ +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class SiteGenTest { + + @Test + public void testHtmlString() { + String correctHtml = "<html><head><title>My favorite movies</title></head><body><h1>My favorite movies</h1><ul><li>Star Wars</li><li>Star Trek</li><li>Battlestar Galactica</li></ul></body></html>"; + Assertions.assertEquals(correctHtml, SiteGen.htmlString); + } + +} + diff --git a/junit-platform-console-standalone-1.8.1.jar b/junit-platform-console-standalone-1.8.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..7a904901b242d782feec6ba9f62f16d8a2cd2038 Binary files /dev/null and b/junit-platform-console-standalone-1.8.1.jar differ