GitHub Action의 세가지 구성요소 GitHub Actions는 Workflow, Job, Step 세가지 구성요소로 이루어진다. Step은 Job에 포함되고, Job은 Workflow에 포함된다. 즉, Workflow가 가장 큰 작업 단위이고, 그 아래 Job이 있고, Job 아래에는 Step이 있다. 이를 그림으로 나타내면 아래와 같다. 이 세가지를 잘 활용하면, 많은 작업들을 자동화 할 수 있다. 이제 이들 각각이 무엇인지 알아보자. Workflows Workflow는 GitHub Repository에 들어가는 작업 단위이다. 보통 Repository의 /.github/workflows/ 경로에 존재하며, 확장자는 .yml 이다. 예를 들어 위의 그림에서는 first_action.yml이라는..
CI, CD
Git Git은 소스코드의 변경을 관리하기 위해 만들어진 툴으로 VCS(Version Control System)라고도 불린다. 말 그대로 코드의 버전을 관리하는 시스템이다. Git은 코드를 관리하기 위해 다양한 기능을 제공한다. Commit이라 불리는 Snapshot을 생성하거나 Branch를 사용해 서로 다른 code version을 만들어낼 수 있고, checkout을 사용해 Branch간에 전환을 할 수 있다. 즉, Git으로 코드를 망가트리지 않고 특정 Code 스냅샷으로 이동하거나 할 수 있어 코드의 변경을 관리해야 될 때 주로 사용된다. Github Github는 Cloud 기반 Git 저장소를 제공하는 서비스이다. GitHub을 사용하면 로컬 Git을 Cloud에 보관할 수 있다. 이를 통..
Project 수준의 build.gradle에서 모듈 수준의 build.gradle 제어하기 멀티 모듈 프로젝트를 만들다보면, 모든 모듈에 dependencies나 task들이 적용되어야 하는 경우가 있다. 이를 위해 프로젝트 수준의 build.gradle에서 모듈 수준의 build.gradle을 제어해야 할 경우가 생긴다. 이를 위해 Gradle에서는 allprojects, subprojects, project 메서드를 제공하는데 이번 글에서는 이 메서드들을 다루어볼 것이다. allprojects : 프로젝트 수준의 build.gradle 뿐만 아니라 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 제어 subprojects : 해당 프로젝트에 포함된 모든 모듈의 build.gradle을 ..
Gradle Plugin이란? Plugin이란 Gradle Task의 집합이다. Gradle Task는 어플리케이션 빌드부터 테스트까지 다양한 작업을 수행하는 작업 단위를 뜻한다. *만약 Task에 대한 이해가 부족하다면 다음글을 참조하길 바란다. Plugin을 우리가 특정 작업(어플리케이션 개발 등)을 하기 위해서 모아놓은 Task 들의 묶음이다. 예를 들어 안드로이드 어플리케이션을 개발하기 위해서는 필요한 라이브러리들을 받아온 후 해당 라이브러리들을 사용해 코틀린이나 자바 코드를 컴파일하고, 컴파일된 바이트코드의 묶음을 패키징 해 apk나 aab 파일로 만들어야 한다. 추가적으로 DB와 통신하는 부분들에 문제가 없는지, 서버와 통신하는 부분들에 문제가 없는지에 대한 테스트를 돌리기도 해야 한다. 이러..
build.gradle의 task build.gradle의 task는 Project 객체의 메서드이다. task는 task이름과 람다식을 인자로 받으며, 이 task는 gradle [task 이름]을 통해 수행 가능해진다. build.gradle에 커스텀 task 만들기 build.gradle에는 메서드와 같이 커스텀 task를 만들 수도 있다. 커스텀 task는 다음의 문법으로 만들어진다. task 자체가 메서드이며, task의 인자로 task 이름이 넘어간다. task [task 이름] { [task에서 수행할 람다식] } Groovy는 다양한 방식으로 task를 만들 수 있다. 이는 Groovy의 특수한 문법 때문인데, String에서 ""을 생략하고도 쓸 수 있고 메서드를 수행하기 위해 [메서드명..