This is the repository for Assignment #2: Continuous Integration in the course DD2480 Software Engineering Fundamentals at KTH Royal Institute of Technology, Sweden. This project is written in Java and uses Gradle as the build tool.
The goal of this assignment is to master the core of continuous integration. To achieve this goal, a small continuous integration CI server is implemented. This CI server only contains the core features of continuous integration.
Install Gradle according to this guide and the Java JDK from here. We can only guarantee support for Gradle v7.6 and Java version 19, although it would likely work with different versions of Java.
After installing Gradle and Java download the repository and open a terminal or command prompt. Use cd to change directory to the same one where the gradlew.bat file is. Run, bundle or test the program by using the gradlew tool. Platform specific commands are listed below.
Linux/OSX:
- Run without bundling: ./gradlew run
- Bundle application: ./gradlew build
- Test application: ./gradlew test
Windows:
- Run without bundling: gradlew run
- Bundle application: gradlew build
- Test application: gradlew test
To use the program, set up a github webhook with a payload URL indicating the server and its associated port (default 9000). Content type should be application/json. To receive emails, you need to ensure that you do not have your email set to private when you commit. More info here.
The server will build and test the branch where your latest commit was made and send an email to your non-private email address.
==[TO BE ADDED: how compilation has been implemented and unit-tested]==
==[TO BE ADDED: how test execution has been implemented and unit-tested]==
==[TO BE ADDED: how notification has been implemented and unit-tested]==
The CI server keeps the history of past builds, see build list.
We are proud of this project and what we have accomplished in such a short amount of time. The team's creativity has been extremely useful in this project since it facilitated overcoming various predicaments that arised during the imlementation of this CI. Even though this project proved to be quite difficult, we are all convinced that it did yield profound knowledge in how CI servers are implemented.
- Implementation of the handling of the webhook triggers and logging
- Part of combining everything together
- Server Administration
- Managing issues that correspond to the requirements
- Foundation for README
- Ensuring all public classes and methods are well-documented and follow code conventions
- Created project email
- Implemented the EmailSender class
- Code for building and testing programatically
- Part of combining the different components together
- Initialization of Gradle project and dependencies
- GitInteractions.java
- General skeleton work and bug fixing
Copyright 2023 Simon Grunwald, Linnéa Gustafsson, Oscar Olsson, Jesper Slagarp & Hans Stammler
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.