카테고리 없음

Github Actions 2. action 사용

ㅈ현 2022. 6. 19. 04:36

action이란 workflow에서 가장 작은 단위의 블록으로써, github에서 제공하거나, 다른 유저들이 제공하거나 또는 내가만들어서 사용할 수 있다.

1.  다른 Repository에 있는 action 사용.

다른 repo에 있는 action를 사용하기 위한 사용법은 다음과 같다.

 
uses: {owner}/{repo}@{ref}

다른 유저들의 action는 Marketplace에서 검색이 가능하다.
또한 github를 포함한 여타 많은 플랫폼에서 많은 action를 제공한다.

ex) docker build, aws접속 등…
검색을 하게되면, 기본적인 사용법을 알 수 있다. 아래 사진은 github에서 공식적으로 제공하는 Node.js를 세팅하는 action다.

Github Action 예제 중 Node.js 세팅 예제


해당 페이지에 들어가게 되면, action에 자세한 설명과 간단한 사용법이 나온다.

사용 예제

사용하기 위해선 checkout이라는 action을 사용해야 한다. 이 action는 workflow가 이 repo에 접근하기 위한 권한을 얻기 위해 필요한 action로써, action을 사용하기 위해선 반드시 checkout을 해주어야 함.

 

Checkout - GitHub Marketplace

Checkout a Git repository at a particular version

github.com

job 실행 확인.


사용하게 되면 Actions 탭에서 해당 job이 실행된것이 확인 된다.

2. 직접 만들어 사용.

직접 action을 만들어 사용하려면 /.github/action 디렉토리에 위치하면 된다.
단 파일의 이름은 action.yml 또는 action.yaml 로 해야한다.


사용은 uses: 에서 해당 파일의 경로를 잡아주면 된다.

uses: ./.github/action/heelo-world-action
 

3. 예제

docker에서 제공해주는 action을 통해 컨테이너를 빌드하여 업로드 하는 action 파일을 만들어 보자.

name: Master Branch Build And Push DockerHub

on:
  push:
    branches: 
      - master

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: action/checkout@v3
        with:
          fetch-depth: 0      

      - name: Login to Dockerhub
        uses: docker/login-action@v1
        with:
          username: ${{secrets.DOCKERHUB_USERNAME}}
          password: ${{secrets.DOCKERHUB_TOKEN}}   

      - name: API Container Build and Push
        uses: docker/build-push-action@v2
        with:
          file: ./API_container/Dockerfile
          push: true
          tags: jhkimdocker/capstone_api_image:${{secrets.VERSION}}
 

다음 파일은 master 브랜치가 push되면, dockerhub에 빌드된 이미지를 업로드 하는 예시다.

 

3.1 uses: action/checkout@v3 

action을 사용하기 위해선 현재 나의 repo에 있는 파일들을 체크아웃 해줄 필요가 있다.
workflow가 나의 repository에 access할 수 있도록 해주는 구문임.

3.2 uses: docker/login-action@v1 

docker에 로그인하는 action으로, with를 통해 username, password를 파라미터로 넘기게 된다. 
해당 로그인 action을 정상적으로 거치게 되면 해당 job은 docker에 로그인 하게 된다.

3.3 uses: docker/build-push-action@v2 

컨테이너를 빌드하고 dockerhub에 업로드하는 action으로, with를 통해 Dockerfile의 위치, push여부(false면 빌드만 한다), 붙일 태그를 설정한다.

 

Build and push Docker images - GitHub Marketplace

Build and push Docker images with Buildx

github.com