반복되는 작업 캐싱이 필요한 이유 CI/CD 작업을 하면 계속해서 반복되는 작업들이 있다. 만약 이런 작업들이 반복된다면 리소스가 낭비되며, 요금 청구가 늘어날 수 있다. 특히 GitHub Action의 경우 무료 사용자에게는 2000분의 시간만을 무료로 제공해주고 Pro 사용자에게는 3000분만을 무료로 제공해주기 때문에 리소스 사용을 아껴야 할 필요가 있다. 이러한 반복되는 작업들은 GitHub Actions에서 제공해주는 cache Action을 통해 해결이 가능하다. cache Action은 GitHub에서 공식적으로 지원하는 캐싱 방식이다. 참고 : https://github.com/actions/cache GitHub - actions/cache: Cache dependencies and bu..
action
값의 전달이 필요한 이유 앞선 글에서 Job 간에 파일을 전달하는 방법에 대해 알아보았다. 하지만, 대용량 파일을 전달할 때 말고 단순한 값들을 전달하는 것이 필요할 때가 있다. 예를 들어 앞선 글들에서는 upload-artifact에서 name으로 사용한 값을 download-artifact를 사용하기 위해 똑같이 복사 붙여넣기 해주는 과정을 거쳤는데, 이 값을 직접 전달한다면 더욱 안정성이 증가할 것이다. 혹은 랜덤한 Hash 값을 전달해야 할 수도 있는데, 이 값을 매번 생성해주는 것보다는 전달하는 것이 좋다. 자 이제 outputs 객체에 데이터를 저장하고 꺼내는 방법에 대해 살펴보도록 하자. outputs 객체를 사용해 Job간에 데이터 전달하기 Job 간에 데이터를 전달하기 위해서는 outpu..
이번 시간의 목표 복수의 Job 을 만들고, 이 Job들을 병렬 실행하거나 순차적으로 실행하는 방법을 알아본다. Workflow 파일 만들기 .github/workflows 경로에 multiple_action.yml 파일을 생성한다. 이전 글에서 다룬 test_action에서 이름만 Multiple Action으로 바꾼 후 복사 붙여넣기 한다. name: Multiple Action on: workflow_dispatch: push: jobs: test: runs-on: ubuntu-latest steps: - name: Check out Repository uses: actions/checkout@v3 - name: set up JDK 11 uses: actions/setup-java@v3 with: ..
이번 시간의 목표 안드로이드에서 저장소에 push가 되었을 때, Test를 자동으로 돌아가도록 만들어 Test가 성공했는지 확인한다. 간단한 테스트 만들기 GitHub Action에서 테스트를 돌리기 위해 app/src/test/java/com/lecture/githubaction 경로에 GitHubActionTest.kt 파일을 만든다. 이 테스트는 아래와 같이 하나는 성공(testSuccess)하고 하나는 실패(testFail)하도록 만든다. package com.lecture.githubaction import org.junit.Test internal class GitHubActionTest { @Test fun testSuccess() { assert(true) } @Test fun testFa..
Action이란 무엇인가? Action이란 GitHub Actions에서 미리 정의된 명령어의 집합이다. Action은 복잡하고 자주 반복되는 작업을 간단하게 수행할 수 있도록 해준다. checkout Action으로 코드 내려받기 예를 들어 GitHub 저장소에서 코드를 내려받아 실행 중인 Machine에 저장하는 작업은 간단해보이지만 매우 복잡하다. 따라서 만약 이 작업을 이전 글에서 다룬 run: 블록을 통해 커멘드 라인으로 실행해야 한다면 매우 여러 줄의 코드를 써야될 것이다. 하지만 uses: 블록으로 Action을 사용하면 단 한 줄의 step으로 모든 checkout을 수행한다. 뒤에 붙은 @v3은 checkout Action의 세번째 버전을 사용한다는 것이다. * 글의 작성 시점을 기준으로..