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이고 ... 그런 것 같다.

 

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

반응형

업무 효율화의 기본은 `자동화(automation)`이다.

 

S/W개발 과정에서의 자동화 요소는 자로 `빌드 자동화(Build Automation)`이고,

DevOps 관점에서 자주 언급되는 `CI(Continuous Integration)`라는 단어를

한글로 번역하면 `지속적 통합`이고, 이 역시 빌드와 관련이 되어있다.

 

그렇다보니 GitHub에서 제공하는 Actions를 `빌드 도구`라고만 생각하는 경우가 많다.

하지만, 사실 Actions는 빌드보다 훨씬 더 큰 의미의 `자동화 도구`이다!

  - https://github.com/features/actions

 

최근 AI Agent 만능 시대가 된 김에

이를 이용해서 뭔가 만들어보려고 하다가 GitHub-Actions를 이용해 자동화 도구를 만들어보자고 생각하게 되었다.

그래서, 기본부터 하나씩 확인해보려고 ... ^^

 

 

빠르게 변화하는 세상에서 가장 믿을만한 것은 공식 문서이다 !!!

  - https://docs.github.com/en/actions

 

 

여기에서는 `Quickstart for GitHub Actions`를 통해 빠르게 맛보기를 해보도록 하겠다.

공식 문서를 바탕으로 내 입맛대로 적당히 변형해서 살펴보겠다.

 

① 실습 저장소 만들기

Actions 실습을 하기 위한 저장소를 하나 준비하자.

GitHub-Actions 사용을 위해서는 public으로 설정해주어야 한다(그래야 Free runner 사용 가능!).

 

 

 

② 작업 공간(workspace) 준비

개인적인 취향으로 S/W개발 공부는 언제나 Ubuntu 환경에서 하고 있다.

여러분은 여러분 나름대로의 환경에서 진행해도 좋다.

 

 

 

③ workflow yaml 파일 작성

공식 가이드에 있는 workflow yaml 파일을 그냥 일단 반영해보자.

  - https://docs.github.com/ko/actions/get-started/quickstart

 

 

Actions workflow yaml 파일은 `.github/workflows`라는 디렉토리 밑에 위치해야 한다.

yaml 파일 이름은 확장자만 지키면 되고 자유롭게 해도 된다.

 

 

개인적인 취향으로 nano 에디터를 사용했다. (여러분은 여러분의 취향대로 ^^)

 

 

 

④ commit & push

지금은 고민할 때가 아니다 😁.

일단 commit, push 해버리자.

 

 

GitHub에 가서 잘 반영되었는지 확인해보자.

 

 

 

⑤ Actions 메뉴

놀랍게도 이렇게만 했는데도, 벌써 Actions가 실행되었다.

`Actions` 메뉴를 클릭하면 보안다 !!!

 

 

 

⑥ 실행 내역 확인

어떻게 실행되었는지 내역을 확인하고 싶으면 해당 부분을 클릭해주면 된다.

 

 

YAML 파일에 작성한 내용이 하나 하나 잘 실행된 것을 볼 수 있다.

 

 

 

 

여기까지가 실습 내용이고,

이제는 YAML 파일 내용과 실행 결과를 가지고 하나씩 비교하면서 익히면 된다.

 

각 항목이 실제 결과에 어떻게 나오는지 비교하면서 살펴보자 !!

 

 

실행 환경이 되는 docker image에 대해서는 조금 더 신경쓸 필요가 있다.

 

 

보통 ubuntu-latest 이미지를 많이 사용할텐데,

일반적인 환경이긴하지만 생각보다 상당히 무거운 환경이다.

 

 

이미 설치되어 있는 것들이 상당히 많아서 편할 수는 있지만,

사용하지 않는 것들도 엄청 많이 있는 상당히 무거운 환경이다.

 

 

좀더 가볍게 사용할 수 있는 이미지를 찾는 것도 중요하고,

설치되어 있는 도구들 목록을 잘 확인하고 버전 관리도 잘 살펴보는 것도 중요하다.

 

환경변수 처럼 사용되는 요소들도 한 번씩 살펴보면 좋다.

 

 

`actions/checkout@v5`같이 이미 만들어져서 제공되는 라이브러리들도 주의깊게 살펴보면 좋다.

 

 

여기에서 언급되지 않은 훨씬 더 많은 요소들이 있으니

하나씩 하나씩 차근 차근 공부해보자 !!!

반응형

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에 업로드까지 잘 되었는지 확인해보자.

 

 

여기까지~

 

반응형

 

GitHub에서는 1년에 한 번씩 Universe라는 대규모 행사를 하고

지역별로 Satellite 행사도 운영을 한다.

 

 

본래 Universe 행사는 샌프란시스코에서 열리는데,

요즘 트렌드(?)에 따라 이번 Universe 2021 행사도 온라인으로 진행되었다. (10월 27일/28일)

 

https://githubuniverse.com/

 

GitHub Universe 2021

The global developer event

githubuniverse.com

 

Universe 2020도 온라인이었던 것 같은데, 아쉽다.

 

 

 

Universe 2021 동영상이 영어라서 부담스러운 분들은

`손건` 이사님이 직접 데모를 포함해서 우리나라 말로 설명을 해주신 요약 영상을 봐도 좋다.

 

https://resources.github.com/webcasts/kr-Best-of-GitHub-Universe-thankyou/ 

 

Best of GitHub Universe

지난해 진행된 GitHub Universe 이후 GitHub는 엔지니어를 위한 일상적인 UX의 개선, 클라우드 개발 환경에 대한 지원, 보안 강화를 포함하여 20,000개 이상의 기능 개선 사항을 발표했습니다. 이번 웨비

resources.github.com

 

위 행사에서 `GitHub Universe Highlights` 뿐만 아니라

GitHub 본사에서 솔루션 아키텍트로 근무하시는 `Bryant Son(손지민)`님이

정말 Geek스러운 발표도 해주셨다.

 

`재미있고 어메이징한 깃허브 액션: 클라우드 프로비저닝, 리포트 작성, 그 외 깃허브 액션으로 할수 있는 많은 작업들`

 

발표 제목부터 Geek 스럽지 않은가!? ^^

발표 자료도...

GitHub Actions

 

Hands-On을 위한 자료도 정말 멋지다.

 

https://github.com/githubuniverseworkshops/GitHub-Actions-Planet-2021-Korea

 

GitHub - githubuniverseworkshops/GitHub-Actions-Planet-2021-Korea: 깃허브 유니버스 2021 에서 발표했던 내용을 기

깃허브 유니버스 2021 에서 발표했던 내용을 기반으로 다시 한글로 만든 레포 입니다. Contribute to githubuniverseworkshops/GitHub-Actions-Planet-2021-Korea development by creating an account on GitHub.

github.com

 

 

부디 돌아오는 Universe 2022 행사는 샌프란시스코에서 열리길 기원하며 ...

 

반응형

'SCM > Git-GitHub' 카테고리의 다른 글

git 실수해도 괜찮아요  (0) 2022.07.02
GitHub에서 수식 입력 하기 (with LaTex)  (0) 2022.06.07
github.dev (Web-IDE)  (1) 2021.11.03
git switch/restore (git 새로운 명령어)  (1) 2021.10.17
git 설치 (Git 2.33.0, Windows 10)  (0) 2021.10.02

+ Recent posts