6 § 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
7 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.
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
18 § 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
36 2. 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
37 3. 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.
38 4. Junit Dependency • Either your IDE takes car of the dependency or goes and add it manually as follows (this is Junit 5) <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.8.2</version> <scope>test</scope> </dependency> </dependencies>
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 ); } }
40 6. Build • And let us ask Maven to build the application also. <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> </plugin> </plugins> </build>
43 9. GitHub readme.md 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)
45 11. 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.
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.