GitHub Actions에 대한 첫 이야기는 아래 글을 참고하면 된다.

  - https://www.whatwant.com/entry/GitHub-Actions-Quickstart

 

이번에 살펴볼 것은

Actions에서 자동화 하는 과정에서 Pull-Request의 comment를 작성하도록 할 수 있는 방법이다.

 

찾아본 결과 총 3가지의 방법이 있는 것 같아서 하나씩 알아보았다.

 

① actions/github-script

Actions의 YAML 파일 안에서 어느 정도의 프로그래밍을 할 수 있도록

JavaScript 형식으로 지원해주는 기능이다.

 

`analysys_result.txt` 파일의 내용을 comment로 반영하도록 작성한 것이다.

이거 하나를 위해 알아야할 것들은 많다.

 

 

`pull_request`가 처음 생성되거나 변경 사항이 있을 때 동작하도록 설정을 했고,

해야할 일을 수행하기 위해 필요한 permission도 정의를 해줬다.

 

`analysys_result.txt` 파일이 저장소에 있기 때문에

`Check out repository` 과정도 수행하게 했다.

 

 

파일이 없거나 여러 상황에 대해서 좀 처리하는 과정까지 포함해봤다.

사실 살펴보면 알겠지만, comment 자체를 반영하는 것은 간단하다.

 

 

② community action

자주 사용하거나 아니면 복잡한 기능들을 라이브러리 처럼 만들어서 서로 공유하기도 한다.

물론 GitHub에서 공식적으로 제공해주는 것들도 많다.

  - https://github.com/marketplace?type=actions

 

 

원하는 기능이 잘 만들어진 것을 선택하면 정말 간단하게 구현이 된다.

 

 

오늘 진행한 내용은 Codex의 도움을 많이 받았는데,

중간에 아래와 같은 에러가 발생했을 때에도 정말 간단하게 처리할 수 있었다.

 

 

github.com 환경에서 작업을 하니 링크를 그냥 던져버릴 수 있으니 정말 편했다.

회사에서도 이렇게 할 수 있으면 정말 좋을텐데 ...

 

 

 

③ GitHub CLI

Actions에서 사용하는 ubuntu 이미지에는 GitHub CLI 도구도 기본 설치되어 있다.

그러면 이것을 이용해서 간단하게 작업할 수 있다.

 

 

 

이렇게 Actions workflow 파일을 만들어서 적용시키면 comment를 잘 달아준다.

 

 

Action 수행된 결과도 확인해보면 많은 공부가 된다.

 

 

 

이렇게 알아보니 확실히 각각 장단점이 분명한 것 같다.

자유도가 높은 것은 action-script이고, 가장 간단한 것은 community action 가져다 사용하는 것이고,

local에서도 사용할 수 있는 일반적인 방식은 GitHub CLI이고 ... 그런 것 같다.

 

잘 이용해서 재미있는 것들을 만들어봐야겠다.

반응형

GitHub-Actions를 어떻게 사용했는지 기억도 잘 떠오르지도 않고

Secret을 어떻게 다뤘는지도 기억이 가물거려서 간단한 예제 겸 교육자료로 써먹고자 진행해봤다.

 

1. git clone

  - 각자 상황에 맞는 Repository를 이용하면 된다.

❯ git clone git@github.com:whatwant-school/node-web.git

 

 

2. coding

  - 예제를 위해, node.js 웹 서비스를 하나 만들어 보자.

❯ nano app.js

  - 그냥, 간단히 어느 host에서 서비스를 하고 있는 것인지를 보여주는 웹페이지이다.

const http = require('http');
const os = require('os');
console.log(“node-web server starting...");
var handler = function(request, response) {
  console.log("Received request from " + request.connection.remoteAddress);
  response.writeHead(200);
  response.end("You've hit " + os.hostname() + "\n");
};
var www = http.createServer(handler);
www.listen(8080);

 

 

3. write Dockerfile

  - 위에서 작성한 웹서비스를 구동할 container image를 어떻게 구성할지를 작성해보자.

❯ nano Dockerfile

  - 내용은 심플하다.

FROM node:latest

ADD app.js /app.js

ENTRYPOINT ["node", "app.js"]

 

 

4. ready DockerHub

  - Actions를 이용해 만들어진 container image를 업로드할 DockerHub의 Repository를 준비하자.

  - 이미 1.0 버전이 있지만 해당 버전을 업데이트하는 방식으로 구성할 것이다.

 

 

5. get Token

  - Actions에서 DockerHub로 업로드 하기 위해서는 계정 인증이 필요하고, 이 때 사용할 Token을 발행해보자.

  - Write 권한을 필수로 넣어줘야 한다.

 

 

6. mkdir

  - Repository 내부에 Actions workflow를 작성할 경로를 생성하자.

❯ mkdir -p .github/workflows/

 

 

7. write Action

  - 내가 사용할 Action workflow를 작성하자.

❯ nano .github/workflows/deploy-image.yml

  - 일부 내용은 각자의 상황에 맞춰서 업데이트 하면 된다.

name: Build and Push Docker Image
on:
  push:
    branches:
      - main  
jobs:
  build-and-push-image:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v2

    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1

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

    - name: Build and push
      id: docker_build
      uses: docker/build-push-action@v2
      with:
        push: true
        tags: whatwant/node-web:1.0

 

 

8. Set Secret

  - Action workflow에서 사용하는 Secret 변수 값을 입력하자.

  - USERNAME과 TOKEN을 입력하면 된다.

 

 

 

9. push

  - 이제 준비는 끝났다. push 해보자.

❯ git add -A

❯ git commit -m "make action's workflow"

❯ git push origin main

 

 

10. Actions

  - 입력한대로 잘 동작했는지 확인해보자.

  - 상세 내용도 확인해볼 수 있다.

 

  - 로그 레벨로도 확인해볼 수 있다.

 

  - 정말 DockerHub에 업로드까지 잘 되었는지 확인해보자.

 

 

여기까지~

 

반응형

+ Recent posts