Introducing MicronautBuild, Test, and Deploy JavaMicroservices on Oracle CloudTodd Raymond SharpIntroducing Micronaut: Build, Test, and Deploy Java Microservices onOracle Cloud Todd Raymond Sharp Blairsville, GA, USA ISBN-13 (pbk): 978-1-4842-8289-2 ISBN-13 (electronic): 978-1-4842-8290-8 https://doi.org/10.1007/978-1-4842-8290-8 Copyright 2022 by Todd Raymond Sharp This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made.
The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Steve Anglin Development Editor: James Markham Coordinating Editor: Jill Balzano Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 1 New York Plaza, Suite 4600, New York, NY 10004-1562, USA. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail orders-ny@springer-sbm.com, or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail booktranslations@springernature.com; for reprint, paperback, or audio rights, please e-mail bookpermissions@springernature.com.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub or via the books product page, located at www.springer. com/978-1-4842-8289-2. Printed on acid-free paper For Rhonda, Ribb, and D-Bones.Youre my world and my inspiration.Table of Contents About the Author xi Acknowledgments xiii Introduction xv Chapter 1: Creating a Micronaut Application and Getting Started with GitHub Actions 1 Creating the Service 2 Running the App 4 Adding Support for GitHub Actions 5 Bling 10 TL;DR 11 Next 11 Source Code 11 Chapter 2: Building and Publishing a JAR 13 Runners 13 Intro to Actions 14 Checkout 16 Setup Java 16 Progress Check 17 Building the JAR 19 Publishing the JAR 19 v Table of ConTenTs TL;DR 23 Next 24 Source Code 24 Chapter 3: Running Tests and Publishing Test Reports 25 Preparing Our App for Spock 26 Create a Spock Test 27 Add a Controller and Test It 30 Add an Action to Run Tests33 Add an Action to Publish Tests 33 When Failure Happens 35 TL;DR 37 Next 37 Source Code 38 Chapter 4: Deploying a Microservice to Oracle Cloud with GitHub Actions and the OCI CLI 39 Can You Keep a Secret? 40 Using Secrets in Your Workflow 43 Installing the CLI 43 Creating the Instance 44 Deploy the App 47 Wait for SSH 48 Stop App 48 Push JAR 49 Start App 50 Run the Build 50 TL;DR 53 vi Table of ConTenTs Next 54 Source Code 54 Chapter 5: Deploying a Microservice to Oracle Cloud with GitHub Actions and the OCI Gradle Plugin 55 Configure Gradle 56 TL;DR 62 Next 62 Source Code 63 Chapter 6: Adding a Persistence Tier to the Microservice 65 Managing Schema Modifications 65 Spin Up a DB 66 Liquibase-Micronaut Integration 67 Add Micronaut Data 71 Add Dependencies 71 Start the Application 73 Create a Model 75 Create a Repository 76 Modify the Controller 78 Test Persistence 79 TL;DR 80 Next 80 Source Code 80 Chapter 7: Testing the Persistence Tier with Testcontainers 81 Adding Dependencies 82 Modifying Our Abstract Spec 82 Running the Pipeline Tests with Testcontainers 85 vii Table of ConTenTs TL;DR 88 Next 88 Source Code 88 Chapter 8: Deploying the Microservice with a Tested Persistence Tier in Place 89 Autonomous Wallet 90 Configure the Local Autonomous DB Datasource 91 Configure the Production Datasource 95 TL;DR 103 Next 104 Source Code 104 Chapter 9: Deploying the Microservice as a Docker Container 105 The Dockerfile 106 Preparing to Build the Docker Image 107 Building the Docker Image 107 Running the Docker Build Locally 109 Modifying the Build 110 TL;DR 113 Next 113 Source Code 113 Chapter 10: Deploying the Microservice Docker Container to Kubernetes 115 Create a Service Account 116 Step 1 116 Step 2 116 Step 3 117 Step 4 117 viii Table of ConTenTs Step 5 117 Step 6 117 Create Kubernetes Deployment Configuration 118 Create a Secret 119 Create Deployment YAML 119 Add a Deployment Step 122 Kill an Existing Pod 122 The Final Build 123 TL;DR 125 Next 125 Source Code 126 Index 127 ix About the AuthorToddSharp is a developer who advocates and evangelizes about Amazon Interactive Video Service at Twitch.
He has been writing code since 2004 and feels extremely lucky to be paid to do what he loves and is truly passionate about. As part of his role as a developer advocate, he writes a lot of demo applications that show other developers how to use certain languages, frameworks, and technologies to solve the problems that they face every day. Todd has a background in writing and a love for theater, so he feels fortunate to have found a career that lets him use those skills and passions as part of his everyday routine. Todd is married to his best friend, and they live in the North Georgia mountains with their two kids, eight chickens, two dogs, a cat, and a potbelly pig named Milton. When hes not working, Todd loves to cook, play video games, and tinker with electronics and microcontrollers. xi Acknowledgments Id like to acknowledge my appreciation of the following people who have helped me in my career.
Without these folks, this book wouldnt be possible. Gerald Venzl, for all your support and mentorship during my time at Oracle. Graeme Rocher, for being a great friend and for patiently and expertly answering years of dumb questions and for creating some of the best frameworks that Ive ever used. There are very few people in programming who think like you, and I will forever value your contributions and mentorship. Raymond Camden and Scott Stroz, for putting up with me and being there for me whenever I need you. Love you, guys.
All the amazing engineers, product managers, project managers, and marketing and social team members whom I worked with during my time at Oracle. Thanks for making my time at Oracle special and fun. Ill never forget the time we spent together! Finally, Id never be the man that I am today without my beautiful wife, Rhonda. Youve made me a better person and pushed me to be so much more than I ever dreamed of being. Thank you. xiii
Next page