Github Action ?
- CI(Continuous Integration) 또는 CD(Continuous Deployment)와 같은 자동화를 위해서 사용됨
- 빈번하게 필요한 반복 단계를 재사용하기 용이하도록 Github Actions에서 제공되는 일종의 작업 공유 매커니즘
Git Checkout ?
- 코드 저장소(repository) 에서 특정 브랜치로 전환하는 작업을 뜻한다.
- 위 작업을 위해서는 원격 저장소에 올려둔 프로젝트를 로컬 컴퓨터로 내려받는 작업이 반드시 선행 되어야 한다.
Checkout Action
Git의 체크아웃을 Github Actions 입장에서 바라보면 Github의 코드 저장소에 올려둔 코드를 CI 서버로 내려받은 후 특정 브랜치로 전환하는 행위라고 볼 수 있다.
이렇게 자주 필요한 체크아웃 작업 단계를 모든 워크플로우에서 매번 쉘 스크립트로 작성하려면 헷갈리기도 하고 번거롭기도 할 것이다.
그리고 제일 중요한 인증같은 보안적인 절차 또한 CI 서버와 코드 저장소간 신경 써줘야한다.
그래서 위와 같은 복잡한 과정을 간편하게 해줄수 있도록 Github에서 체크아웃에 필요한 일련의 과정을 묶어 액션으로 제공하고 있다.
Github Actions의 Checkout 액션을 사용하면 매우 간편하게 코드 저장소로부터 CI 서버로 코드를 내려받도록 워크플로우 구성이 가능하다
실습 워크플로우 생성
.github/workflows/
라는 폴더를 만들고 그 안에 checkout.yml 이라는 이름의 YAML 파일을 하나 생성하여 실습을 진행해보자
폴더 및 파일 생성
mkdir -p .github/workflows
touch .github/workflows/checkout.yml
checkout.yml
파일에 아래와 같은 코드를 복사해 붙여넣고 실습 진행해보자.
name: Test Workflow
on: [push]
jobs:
practice-checkout:
runs-on: ubuntu-latest
steps:
- name: 디렉토리 확인
run: ls -alh
위 파일 저장 후 Github의 코드 저장소로 push 후 Actions
탭에 들어가면
아래와 같은 워크플로우 실행 로그를 확인할 수 있다!
아직 Github의 저장소로부터 CI 서버로 코드를 한 번도 내려받은 적이 없기 때문에 ls -alh
명령어의 실행결과가 비어있는 디렉토리로 출력되는 것은 어찌보면 당연하다.
체크아웃 액션 사용
워크플로우 YAML 파일에서는 steps
키 하위의 uses
키에 사용하고자 하는 액션의 위치를
다음과 같이 명시한다
steps:
uses: {소유자}/{저장소명}@{참조자}
예를 들면 아래와 같다
steps:
uses: actions/checkout@v2
따라서 실습 워크플로우에 체크아웃 액션을 추가하려면 다음과 같이 checkout.yml
을 수정해주자
name: Test Workflow
on: [push]
jobs:
practice-checkout:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 디렉토리 확인
run: ls -alh
이제 또 다시 위 파일 저장 후 Github의 코드 저장소로 push 하고 Actions
탭에 들어가면
체크아웃 액션 관련 부분이 추가 되어 있는 것을 확인할 수 있었다!
RUN actions/checkout@v2
항목을 열어 확인해보면 CI 서버에서 어떻게 저장소로부터 코드를 내려받는지 대강 알 수가 있다
각 항목씩을 열어서 확인하다보면 다음과 같은 친숙한 git 명령어들이 확인된다.
git init
: 명령어를 통해 작업 디렉토리를 로컬 저장소로 만듬git config
: 명령어를 통해 각종 인증 관련 정보를 설정git fetch
: 명령어를 통해 원격 저장소로 부터 코드를 받아옴git checkout
: 명령어를 통해 주(main) 브랜치로 전환git log
: 명령어로 마지막 커밋(commit)의 해시값을 확인
다른 경로에 코드 내려받기
CI 서버의 최상위 작업 디렉토리 대신 그 하위에 있는 어떤 다른 폴더로 코드를 내려받고 싶은경우
체크아웃 액션의 path
옵션을 사용해보자!
워크플로우 YAML 파일에서 어떤 액션에 입력 파라미터를 넘길 때는 with
키를 사용하는데
이 때 파라미터의 이름과 값의 맴핑을 지정해주면 된다
checkout.yml
파일을 아래와 같이 수정해보자
name: Test Workflow
on: [push]
jobs:
practice-checkout:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
path: other-coding-story
- name: 현재 디렉토리 확인
run: ls -alh
- name: other-coding-story 디렉토리 확인
run: ls -alh ./other-coding-story
위 파일 push 하고 Actions 탭에서 워크플로우 실행 로그를 확인해보면 other-coding-story
라는 폴더가 생겼고,
해당 폴더 안에 저장소로 부터 내려받은 코드가 위차할 것이라고 기대할 수 있겠다.
진짜 그런지 확인해보자