CI\CD

    toml 파일을 사용해 Gradle 의존성 관리하기

    toml 파일이란 무엇인가? TOML(Tom's Obvious, Minimal Language)은 GitHub의 공동 창립자인 Tom Preston-Werner가 만든 파일 형식으로, 이름 그대로, 간결하면서도 읽기 쉬운 파일 형식이다. 일반적으로 키-값쌍으로 값들을 관리하며, 하나의 파일로 여러 프로젝트의 버전 관리를 통합하는데 사용될 수 있다. 그동안 안드로이드에서는 주로 buildSrc를 사용해 버전 관리를 해왔는데, 최근 toml이 매우 활성화되기 시작해 이번 글에서 다뤄보고자 한다. *Android Developers 에서도 공식적으로 Version Catalog로 이전 이라는 명칭으로, toml 파일을 사용하는 방법을 설명하고 있으며, Android Gradle Plugin(AGP) 버전 7...

    [GitHub Actions] if문 사용해 Job 실패 제어하기

    Step과 Job의 차이점 Step은 무조건 순차적으로 실행되는 반면, Job은 병렬적으로 실행될 수도 있고 순서대로 실행될 수도 있다. 이 말은 Step에서 실패를 제어하기 위해 사용했던 전제인 "먼저 실행된 Step은 이후 Step 시작 전에 끝난다"가 더이상 유효하지 않다는 뜻이다. 따라서 이 전제를 맞추기 위해 추가적인 설정을 해주어야 한다. 병렬적인 Job 간의 실패 제어 일단, 병렬적인 Job A와 Job B가 있다고 해보자. B가 A의 실패를 제어하는 것은 불가능하다. 이유는 B는 A에 대한 정보가 없기 때문이다. 하나의 Job이 다른 Job에 대한 정보를 알기 위해서는 needs Context를 사용해야 하는데, 병렬적인 Job 간에는 needs에 다른 Job의 정보가 없다. 공식 문서에는..

    [GitHub Actions] outputs Context 활용해 특정 step이 fail 되었는지 체크하기

    Step 실패 시 흐름 제어 이전 글에서 if와 failure() 을 조합해 Step 실패 시 실행되는 Step을 정의해보았다. 그렇다면 만약 여러 Step이 있고 특정 Step이 fail 되었을 때만 수행되어야 하는 Step이 있으면 어떻게 해야할까? 바로 if 문에 step failure을 체크하기 위한 코드를 추가하는 것이다. 이를 위해 다른 step의 어떤 상태 값에 접근할 수 있는지 Context를 확인해보자. 특정 step이 fail 되었는지 체크하기 위한 Context steps Context 에서는 steps..outcome 를 통해 step 실행 결과에 대한 상태 값을 제공한다. 속성 이름 Type Description steps..outcome string continue-on-erro..

    [GitHub Actions] if 사용해 Step이 Fail되었을 때 다음 Step 제어하기

    Step의 Fail을 제어하는 것이 필요한 이유 테스트를 돌렸는데 테스트가 Fail 되었을 때 Test 리포트를 업로드 하는 Step이 수행되어야 하는데 수행되지 않는다면 어떻게 될까? 테스트를 돌린 것 자체가 의미가 없어진다. 테스트가 Fail 되면 Test 리포트가 업로드 되어야 한다. 즉, 특정한 Step이 Fail 되더라도 다른 Step이 진행되어야 할 수 있다. Job을 만들다 보면 위와 같은 상황을 자주 마주한다. 이번 글에서는 위 상황을 제어하는 방법에 대해 알아본다. 먼저 문제 상황을 만들어보자 문제 상황 만들기 이번 글에서 다룬 문제 상황은 바로 안드로이드에서 테스트를 돌렸는데 실패하는 경우이다. Workflow 파일 만들기 app 모듈에 대해 testDebug Task를 실행하고 테스트..

    [GitHub Actions] 테스트, 릴리즈 환경 별로 다른 Secrets 설정하는 방법 알아보기

    환경 별로 다른 값을 전달하는 것이 중요한 이유 환경 별로 다른 값이 필요한 이유는 환경 별로 아이디/비밀번호 혹은 DB 이름 등이 다를 수 있기 때문이다. 실제로 많은 앱들은 테스트용 환경과 릴리즈 환경을 나누어 놓는데 이는 보안에 매우 중요하다. 이 문제를 해결하기 위해 GitHub Actions는 같은 Key로 Secrets에 접근한다고 하더라도 환경 별로 다른 값을 전달할 수 있는 기능을 제공한다. 이 글에서는 바로 환경 별로 다른 Secrets 를 전달하는 방법에 알아볼 것이다. 환경별로 다른 Secrets 생성하기 환경 별로 다른 Secrets를 생성하기 위해서는 GitHub의 Environment 기능을 설정해야 한다. Environment는 Settings-Environments 에 위치한..