{"product_id":"138711","title":"Practical CI\/CD Design and Operation with GitHub Actions ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPCfBUmtUi4zSXVTz9VjtixFsqNL.png?v=1765067066\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Practical CI\/CD Design and Operation with GitHub Actions \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/147569986\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eBook Introduction\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e \u003cb\u003eFrom a developer who deals with automation to a developer who designs automation\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Automating your testing, release, and deployment processes will not only speed up development but also improve collaboration. \u003cbr\u003eGitHub Actions is a powerful tool for implementing automation in code. It goes beyond simply saving time and allows you to design your own development environment.\u003cbr\u003e Selected as one of the top 10 technical books in the 2025 Japan IT Engineer Book Awards, this book covers how to design and operate a practical CI\/CD system using GitHub Actions.\u003cbr\u003e It systematically explains key elements such as workflow configuration, release automation, cloud integration, and security strategy, and presents methods for designing a maintainable automation system through various practical examples.\u003cbr\u003e It will serve as a solid guide for developers who want to simplify complex workflows and build their own automation systems.\u003cbr\u003e\n\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e You can preview some of the book's contents.\u003cbr\u003e \u003cspan\u003ePreview\u003c\/span\u003e\n\n\u003c\/li\u003e\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindex\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e Translator's Preface xvi\u003cbr\u003e Beta Reader Review xvii\u003cbr\u003e Acknowledgements xxi\u003cbr\u003e About this book xxii\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePART I: Basics 1\u003c\/b\u003e\u003cbr\u003e \u003cbr\u003eCHAPTER 1 Software Development and GitHub 3\u003cbr\u003e 1.1 Software Development 3\u003cbr\u003e 1.2 CI\/CD 4\u003cbr\u003e 1.3 GitHub 8\u003cbr\u003e 1.4 Setting up the environment 11\u003cbr\u003e 1.5 Summary 14\u003cbr\u003e\u003cbr\u003e CHAPTER 2: Basic Concepts of GitHub Actions 16\u003cbr\u003e 2.1 Let's start with GitHub Actions 16\u003cbr\u003e 2.2 Components of GitHub Actions 18\u003cbr\u003e 2.3 Running GitHub Actions 21\u003cbr\u003e 2.4 GitHub Actions Error 23\u003cbr\u003e 2.5 How to Run a Workflow 26\u003cbr\u003e 2.6 Managing Workflow Execution 29\u003cbr\u003e 2.7 Job Execution Environment 31\u003cbr\u003e 2.8 Action 34\u003cbr\u003e 2.9 GitHub Actions' Billing Model 35\u003cbr\u003e 2.10 Summary 36\u003cbr\u003e [COLUMN] References: Basic Technology 37\u003cbr\u003e\u003cbr\u003e CHAPTER 3 Workflow Syntax Basics 38\u003cbr\u003e 3.1 Context 38\u003cbr\u003e 3.2 Environment Variables 40\u003cbr\u003e 3.3 Variable 43\u003cbr\u003e 3.4 Secret 45\u003cbr\u003e 3.5 Equation 48\u003cbr\u003e 3.6 Function 50\u003cbr\u003e 3.7 Conditional Branching 53\u003cbr\u003e 3.8 Naming Conventions 54\u003cbr\u003e 3.9 Data sharing between steps 56\u003cbr\u003e 3.10 Running the GitHub API 58\u003cbr\u003e [COLUMN] Source Code Read Permissions and Repository Types 62\u003cbr\u003e 3.11 Starter Workflow 63\u003cbr\u003e 3.12 Summary 65\u003cbr\u003e\u003cbr\u003e CHAPTER 4 CI Implementation 66\u003cbr\u003e 4.1 Running CI using pull requests 66\u003cbr\u003e 4.2 Automated Testing 68\u003cbr\u003e 4.3 Event Filtering 73\u003cbr\u003e 4.4 Setup Action 75\u003cbr\u003e 4.5 Static Analysis 78 \u003cbr\u003e4.6 Timeout 81\u003cbr\u003e 4.7 Shell 81\u003cbr\u003e 4.8 concurrency 83\u003cbr\u003e 4.9 CI's Golden Rule 86\u003cbr\u003e 4.10 How to Run Automated Tests 88\u003cbr\u003e 4.11 How Static Analysis Works 92\u003cbr\u003e [COLUMN] Recording Reasons for Suppression 92\u003cbr\u003e 4.12 Summary 93\u003cbr\u003e [COLUMN] References: Testing and Documentation 94\u003cbr\u003e\u003cbr\u003e CHAPTER 5 Designing Easy-to-Operate Workflows 95\u003cbr\u003e 5.1 Toolkit for Workflow Design 95\u003cbr\u003e 5.2 Log 96\u003cbr\u003e 5.3 Report 101\u003cbr\u003e 5.4 Chat Notifications 103\u003cbr\u003e 5.5 Controlling the Execution of Multiple Jobs 105\u003cbr\u003e 5.6 Matrix 108\u003cbr\u003e 5.7 Environments 111\u003cbr\u003e [COLUMN] There are three types of variables and secrets 115\u003cbr\u003e 5.8 Cache 115\u003cbr\u003e 5.9 Artifact 120\u003cbr\u003e 5.10 Summary 123\u003cbr\u003e\u003cbr\u003e CHAPTER 6 Modularization with Actions 124\u003cbr\u003e 6.1 Classification of Actions 124\u003cbr\u003e 6.2 Compound Action 126\u003cbr\u003e 6.3 Metadata Syntax 129\u003cbr\u003e 6.4 Differences between Metadata Syntax and Workflow Syntax 132\u003cbr\u003e 6.5 Action Design Techniques 134\u003cbr\u003e [COLUMN] Actions and Node.js Version 137\u003cbr\u003e 6.6 Summary 137\u003cbr\u003e [COLUMN] References: Software Design 138\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePART II: PRACTICAL 139\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e CHAPTER 7 Maintaining a Clean Repository 141\u003cbr\u003e 7.1 Code Review 141\u003cbr\u003e 7.2 Branch Protection 142 \u003cbr\u003e7.3 Maintaining a Sense of Ownership 146\u003cbr\u003e 7.4 Preventing Credential Intrusion 148\u003cbr\u003e 7.5 Documentation 151\u003cbr\u003e 7.6 Summary 153\u003cbr\u003e\u003cbr\u003e CHAPTER 8 Updating Dependencies with Dependabot 154\u003cbr\u003e 8.1 Dependencies 154\u003cbr\u003e 8.2 Dependabot 156\u003cbr\u003e 8.3 Automatic Merging via GitHub Actions 162\u003cbr\u003e 8.4 Dependabot's Workflow Design 167\u003cbr\u003e Scope of impact of version 8.5 update 169\u003cbr\u003e 8.6 Automatic Merge Strategy 171\u003cbr\u003e [COLUMN] Those who ignore the delimiter will cry because of the delimiter 172\u003cbr\u003e 8.7 Summary 173\u003cbr\u003e\u003cbr\u003e CHAPTER 9 Automating Releases with GitHub Releases 174\u003cbr\u003e 9.1 Software Release 174\u003cbr\u003e 9.2 Version Control 175\u003cbr\u003e 9.3 Notice 177\u003cbr\u003e 9.4 GitHub Release 179\u003cbr\u003e 9.5 Automatically generated release notes 181\u003cbr\u003e 9.6 Release Automation 185\u003cbr\u003e 9.7 Git Tag Protection 189\u003cbr\u003e 9.8 Summary 192\u003cbr\u003e [COLUMN] References: Software Development 193\u003cbr\u003e\u003cbr\u003e CHAPTER 10: Package Management with GitHub Packages 194\u003cbr\u003e 10.1 Package 194\u003cbr\u003e 10.2 GitHub Package 196\u003cbr\u003e 10.3 Container Registry 197\u003cbr\u003e 10.4 GitHub Package Management 199\u003cbr\u003e 10.5 Automatic Linking and Permission Inheritance in Packages 202 \u003cbr\u003e10.6 Automatically Releasing Container Images 205\u003cbr\u003e 10.7 Summary 211\u003cbr\u003e [COLUMN] References: Container Technology 212\u003cbr\u003e\u003cbr\u003e CHAPTER 11 Secure Cloud Integration with OpenID Connect 213\u003cbr\u003e 11.1 Cloud Service Authentication Information 213\u003cbr\u003e 11.2 OpenID Connect 215\u003cbr\u003e 11.3 Risk Management for Verification Work 218\u003cbr\u003e [COLUMN] Cloud Security 219\u003cbr\u003e 11.4 Preparing to Use OpenID Connect on AWS 220\u003cbr\u003e 11.5 AWS Integration Using OpenID Connect 225\u003cbr\u003e 11.6 Secure Operation of Cloud Roles 230\u003cbr\u003e 11.7 Summary 231\u003cbr\u003e [COLUMN] References: Infrastructure 232\u003cbr\u003e\u003cbr\u003e CHAPTER 12 CONTAINER ORCHESTRATING AND Deployment 233\u003cbr\u003e 12.1 Service 233\u003cbr\u003e 12.2 Building the Execution Environment 235\u003cbr\u003e 12.3 Managing Variables for Distribution Information 240\u003cbr\u003e 12.3.1 Checking Deployment Information 241 \/ 12.3.2 Registering Deployment Information 242\u003cbr\u003e 12.4 Deployment Automation 242\u003cbr\u003e [COLUMN] Node 16-Based Action 243\u003cbr\u003e Deploying to Multiple Environments Using 12.5 Environments 250\u003cbr\u003e 12.6 Deployment Design 255\u003cbr\u003e 12.7 Summary 256\u003cbr\u003e\u003cbr\u003e CHAPTER 13 Open-Sourcing Actions 257\u003cbr\u003e 13.1 Action Release 257\u003cbr\u003e 13.2 Action Test 261\u003cbr\u003e 13.3 Release Management of Actions 265 \u003cbr\u003e13.4 Documenting Actions 269\u003cbr\u003e 13.5 Released on GitHub Marketplace 270\u003cbr\u003e 13.6 The Evolutionary Process of Action 273\u003cbr\u003e 13.7 Summary 275\u003cbr\u003e [COLUMN] References: Operations 275\u003cbr\u003e\u003cbr\u003e \u003cb\u003ePART III APPLICATIONS 277\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e CHAPTER 14 Advanced Uses of GitHub Actions 279\u003cbr\u003e 14.1 Reusable Workflows 279\u003cbr\u003e 14.2 Defining Dynamic Workflows 288\u003cbr\u003e 14.3 Error Handling 290\u003cbr\u003e 14.4 Flow Control Through Context 292\u003cbr\u003e 14.5 Private Actions and Private Reusable Workflows 295\u003cbr\u003e 14.6 Summary 296\u003cbr\u003e [COLUMN] References: Security 297\u003cbr\u003e\u003cbr\u003e CHAPTER 15 Security in GitHub Actions 298\u003cbr\u003e 15.1 Software Supply Chain 298\u003cbr\u003e 15.2 Security Design Principles 300\u003cbr\u003e 15.3 GitHub's Service Characteristics 301\u003cbr\u003e 15.4 Repository Protection 302\u003cbr\u003e 15.5 Security of External Actions 304\u003cbr\u003e 15.6 Script Injection 308\u003cbr\u003e 15.7 Minimum Privileges 309\u003cbr\u003e 15.8 Secret Management 311\u003cbr\u003e 15.9 Fork Pull Request Countermeasure 313\u003cbr\u003e 15.10 OpenID Connect Configuration 315\u003cbr\u003e [COLUMN] Push Rule 322\u003cbr\u003e 15.11 Summary 323\u003cbr\u003e\u003cbr\u003e CHAPTER 16 Shifting Left in Security 324\u003cbr\u003e 16.1 Shift Left 324\u003cbr\u003e 16.2 Scanning for Vulnerabilities in Dependencies 325 \u003cbr\u003e16.3 Secret Protection 330\u003cbr\u003e 16.4 Application Security 333\u003cbr\u003e [COLUMN] Scanning Container Registries for Vulnerabilities 335\u003cbr\u003e 16.5 IaC Security 335\u003cbr\u003e 16.6 Continuous Security Improvements 338\u003cbr\u003e 16.7 Summary 339\u003cbr\u003e\u003cbr\u003e CHAPTER 17 Accessing Other Repositories Using GitHub App Tokens 340\u003cbr\u003e 17.1 GitHub Authentication Information 340\u003cbr\u003e 17.2 GitHub App Token 342\u003cbr\u003e 17.3 Accessing Other Repositories 347\u003cbr\u003e [COLUMN] Delete your secret key quickly 348\u003cbr\u003e [COLUMN] 350 for the curious reader\u003cbr\u003e 17.4 How GitHub App Tokens Are Generated 350\u003cbr\u003e 17.5 GitHub App Token Operational Techniques 357\u003cbr\u003e 17.6 Summary 360\u003cbr\u003e [COLUMN] References: Systems Design 360\u003cbr\u003e\u003cbr\u003e CHAPTER 18 CD Practice 361\u003cbr\u003e 18.1 Organizational Performance 361\u003cbr\u003e 18.2 Version Control Strategy 363\u003cbr\u003e 18.3 Testing Strategy 364\u003cbr\u003e 18.4 Release Strategy 365\u003cbr\u003e 18.5 Database Change Management 366\u003cbr\u003e 18.6 Change Management in IaC 367\u003cbr\u003e 18.7 Loosely Coupled Architecture 369\u003cbr\u003e 18.8 Don't forget to operate 370\u003cbr\u003e 18.9 Continuous Learning 371\u003cbr\u003e 18.10 Summary 372\u003cbr\u003e\u003cbr\u003e In conclusion 373\u003cbr\u003e Search 375\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDetailed image\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate5373\/MidCate006\/537250559.jpg\" border=\"0\" alt=\"Detailed Image 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eInto the book\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e  \u003cdiv\u003eWhen the OS executes a command, it returns a value called termination status.\u003cbr\u003e If successful, returns 0, otherwise returns a non-zero value.\u003cbr\u003e \/ In Unix-like OS, you can check the exit status of the most recently executed command by referencing the $? variable.\u003cbr\u003e For example, let's try executing a non-existent command:\u003cbr\u003e If the execution fails, a value other than 0 will be displayed.\u003cbr\u003e GitHub Actions uses this exact end state.\u003cbr\u003e --- p.25\u003cbr\u003e\u003cbr\u003e GitHub provides an API that can be integrated with programs, and this is called the GitHub API.\u003cbr\u003e For example, you can use curl or similar to add comments or labels to pull requests.\u003cbr\u003e The GitHub CLI, which was introduced earlier, also uses the GitHub API internally.\u003cbr\u003e \/ GitHub Actions provides easy access to the GitHub API. \u003cbr\u003eIf you are using the GitHub Host Runner, you can use the pre-installed GitHub CLI.\u003cbr\u003e\u003cbr\u003e --- p.58\u003cbr\u003e\u003cbr\u003e Some static analysis results contain warnings with low importance.\u003cbr\u003e Therefore, there are cases where this warning is treated as 'no action taken'.\u003cbr\u003e Simply ignoring the warning at this time is not a good solution.\u003cbr\u003e Ignored warnings become noise.\u003cbr\u003e Let's suppress unnecessary warnings.\u003cbr\u003e It doesn't take as much work as you might think.\u003cbr\u003e \/ When suppressing warnings, there are two directions to consider:\u003cbr\u003e Whether the suppression target is the entire code base or limited to a specific part.\u003cbr\u003e The former is controlled by settings files, etc.\u003cbr\u003e The latter involves inserting specific keywords directly into the code to be suppressed.\u003cbr\u003e The specific method varies depending on the tool.\u003cbr\u003e Let's search the tool's documentation using keywords such as ignore or suppress.\u003cbr\u003e Since this is a common occurrence, there will likely be a record of it.\u003cbr\u003e\u003cbr\u003e --- p.92\u003cbr\u003e \u003cbr\u003eGitHub Releases is a service that provides software delivery and change notifications.\u003cbr\u003e You can upload arbitrary files up to 2GB per release by linking with Git tags.\u003cbr\u003e \/ GitHub releases are often used when distributing command-line tools.\u003cbr\u003e For example, if you create a single binary executable file in Go and distribute it.\u003cbr\u003e It is suitable for simple purposes where you only need to be able to download files.\u003cbr\u003e There is also a usage method that distributes only release notes without distributing the software.\u003cbr\u003e \/ GitHub releases are naturally linked to repositories.\u003cbr\u003e You can track differences between versions in your browser down to the commit level.\u003cbr\u003e It can be manipulated through the GitHub CLI and is easy to automate.\u003cbr\u003e\u003cbr\u003e --- p.179\u003cbr\u003e\u003cbr\u003e Using OIDC in GitHub Actions eliminates the need to manage static credentials on GitHub.\u003cbr\u003e Because you can get temporary authentication information. \u003cbr\u003eTemporary credentials are more secure and easier to operate than static credentials.\u003cbr\u003e \/ There are other benefits as well.\u003cbr\u003e This means that you can precisely control who can access the cloud service when authenticating.\u003cbr\u003e For example, with GitHub Actions, you can grant access only to specific repositories.\u003cbr\u003e This is another side effect of using OIDC.\u003cbr\u003e\u003cbr\u003e --- p.216\u003cbr\u003e\u003cbr\u003e Authentication information such as access keys are assets that require high confidentiality.\u003cbr\u003e Credentials are incredibly attractive data for attackers.\u003cbr\u003e On the other hand, authentication information is also information that is easily handled carelessly.\u003cbr\u003e Some people manage it as text without encryption.\u003cbr\u003e \/ Even leaving aside text versioning, proper management of authentication information is quite a difficult task.\u003cbr\u003e It could potentially be leaked due to human error, so a lot of effort is needed to prevent this. \u003cbr\u003eThere is no clear reward, but mistakes can cause enormous damage.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e --- p.311\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003ePublisher's Review\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eGitHub CI\/CD, which has been handled by instinct, is now properly designed.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Many developers use GitHub Actions, but few have experience designing their structure.\u003cbr\u003e There are still many cases where people rely on intuition to operate CI\/CD or simply copy and paste complex settings.\u003cbr\u003e However, automation created in this way is not only difficult to maintain, but also impossible to scale.\u003cbr\u003e This book breaks away from such vague approaches and guides you through designing and operating a practical CI\/CD system centered around GitHub Actions.\u003cbr\u003e\u003cbr\u003e This book, consisting of three parts, provides step-by-step know-how from basic to advanced and applied.\u003cbr\u003e Part 1 explains the need for CI\/CD and the basic concepts of GitHub Actions. \u003cbr\u003eLearn workflow syntax, condition processing, environment variables, etc., and lay the foundation for test automation and CI design.\u003cbr\u003e Part 2 focuses on practical applications, covering repository structure design, dependency automation, release deployment, and cloud integration, along with ready-to-use automation flows and advanced topics such as OIDC authentication and open source action management.\u003cbr\u003e Part 3 introduces how to maintain a stable system even in complex environments through app tokens, security strategies, and advanced action features.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e This book is not simply a technical guide that teaches you how to use GitHub Actions.\u003cbr\u003e Rather than just explaining the code, we will look at why it should be designed that way and how to create a structure that will survive in the field for a long time.\u003cbr\u003e This is a practical design guide for those who want to structurally design automation and change the development culture of their teams and organizations. \u003cbr\u003eIn recognition of its practicality and expertise, it was selected as one of the top 10 technical book categories in the 2025 Japan IT Engineer Book Awards.\u003cbr\u003e This book is the starting point for becoming a developer who understands automation and knows how to design structures.\u003cbr\u003e\u003cbr\u003e \u003cb\u003eTarget audience\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e ● GitHub Actions is for first-time GitHub users\u003cbr\u003e ● Practitioners who only knew the CI\/CD concept\u003cbr\u003e ● Developers who want to learn automation systematically\u003cbr\u003e\u003cbr\u003e \u003cb\u003eKey Contents\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e ● Understanding the structure and workflow syntax of GitHub Actions\u003cbr\u003e ● Workflow execution conditions and environment setting method\u003cbr\u003e ● Implement automated testing, release, and package deployment\u003cbr\u003e ● How to apply custom actions and modularization strategies\u003cbr\u003e ● How to update dependencies and maintain a clean repository\u003cbr\u003e ● Cloud service authentication integration using OpenID Connect\u003cbr\u003e ● Utilizing GitHub App Tokens for Inter-Repository Integration\u003cbr\u003e ● Practice-oriented CI\/CD design and security operation strategy\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \"]\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e GOODS SPECIFICS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate of issue:\u003c\/strong\u003e July 8, 2025\u003c\/div\u003e\n\n \u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e- \u003cstrong\u003ePage count, weight, size:\u003c\/strong\u003e 404 pages | 188*245*19mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13:\u003c\/strong\u003e 9791194587248\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10:\u003c\/strong\u003e 1194587240 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893275951146,"sku":"138711","price":38.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/87a845eacd229ef1ea2cf5000d266845.jpg?v=1765395253","url":"https:\/\/librairie.coreenne.fr\/en\/products\/138711","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}