jgs CSC 309 Software Engineering II Lecture 14: Continuous Integration Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.com Building 14 -227 Office Hours: By appointment
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 4 Code repositories Let's you an others work together on projects from anywhere. (version control and collaboration) Context
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 7 § What? The practice of automating the integration of code changes from multiple contributors into a single software project. Continuous Integration (CI) https://www.pagerduty.com
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 8 Continuous Integration (CI) https://www.devopsschool.com/blog/top-10-continuous-integration-tool/ used in combination with automated tests use a build server to implement continuous compilation, running unit and integration tests, and even static analyses and profile performance.
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 10 § Which One? Money, Experience, Learning Curve Jenkins, Travis, and CircleCI have been popular options. Tools Build Test Report
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 11 § GitHub launched their own Continuous Integration(CI) and Deployment (CD) system called GitHub Actions. § You can implement CI directly inside the tool that store your code (2019). Tools
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 19 § Actions are individual jobs that can be combined in a Workflow to create a complex pipeline. (Jobs such as build the code in your repository and run your tests) § A Workflow can be configured in YAML file and triggered to run on specific events (such as each time someone pushes code to the master branch). Workflow YAML file events jobs
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 33 Office Hours Tuesday and Thursday 3 - 5 pm But an appointment required Sent me an email – [email protected]
jgs CSC 309 Software Engineering II Lab 14: Continuous Integration Dr. Javier Gonzalez-Sanchez [email protected] www.javiergs.com Building 14 -227 Office Hours: By appointment
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 36 2. IDE • Use your IDE • Create a new project and either choice as build system Maven or add Maven as you did before.
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 37 3. Code • Add this class: public class Main { public static void main(String args[]) { hypothenuse(10, 20); } public static double hypothenuse(double a, double b) { return Math.sqrt(Math.pow(a,2) + Math.pow(b,2)); } } • It should be in src/main/java folder. • Check your Maven
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 38 4. Test Case • Create a test case. You can do that by selecting your class name, right-clicking, selecting generate…/Test… • Select the method to be tested and click OK.
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 39 5. Run Your Test Case • You can test something like this: import org.junit.jupiter.api.Assertions; class MainTest { @Test void hypothenuse() { Assertions.assertEquals( Main.hypothenuse(10,20), 22.360679774997898 ); } }
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 40 5. Junit Dependency • Either your IDE takes car of the dependency or goes and add it manually as follows (this is Junit 5)
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 44 1. GitHub 1. Go To GitHub and add a README.md file 2. Edit the README file and add your names (only team members present) 3. Add me as a collaborator (javiergs)
jgs Javier Gonzalez-Sanchez | CSC 309 | Winter 2023 | 46 1. GitHub Actions Permissions 1. If the Build fails, then go to Settings/Actions/General and provide Read and Write permissions to Workflow 2. Review your Java versions 8. 11, 15, 19 etc. It is better if they match.
jgs CSC 309 Software Engineering II Javier Gonzalez-Sanchez, Ph.D. [email protected] Winter 2023 Copyright. These slides can only be used as study material for the class CSC308 at Cal Poly. They cannot be distributed or used for another purpose.