stephenneale / seng371-group16

Contains Group 16's work for SENG371 A02 - Group 16, Spring 2023
0 stars 1 forks source link

Maintain CI/CD Pipeline #54

Closed matt-lebl closed 1 year ago

matt-lebl commented 1 year ago

Make sure you have used the tools in CI/CD for your project. The tools were open-ended you can pick any of the tools for CI/CD which support your project. Write a detailed description of the tools you have used for CI/CD, like how you Implemented them, how are they helping you with your project, Why using these specific tools instead of other similar tools etc.

matt-lebl commented 1 year ago

Backend note:

We set up a CI pipeline for the backend Spring Boot application written in Kotlin with SpringMockk using GitHub Actions. We configured the workflow to run on the push event, so the workflow will automatically run each time a commit is pushed to the repository.

The workflow file, (springboot.yml), is stored in the .github/workflows directory in the root of the project repository. We used a preconfigured Maven environment for the action, which installs Maven into the workflow instance, along with other dependencies required by the application. These dependencies are specified in the project's pom.xml file.

Once the dependencies are installed, the job runs mvn -B package to build and test the application. The output of the build and test process is stored in log files associated with each invocation of the GitHub Action.

We can view the workflow status and logs in the GitHub Actions tab in the repository. This allows us to quickly identify any build or test failures and take appropriate action.

At this time, we have not set up a CD pipeline. While this is a logical next step, we have not done so due to the cost of hosting an instance of the application on a web server, which is the ultimate goal of continuous deployment. However, if we were to set up a CD pipeline, we could use Maven to package the application as a Docker container, tag it with a version number, and then upload it to an application server, or have the application rolled out using a container orchestration service like Kubernetes.