Github Actions 시작하기 #2 커스텀 액션 만들기, 깃허브 패키지 레지스트리 등록하기
Github Actions 시작하기 #2 커스텀 액션 만들기, 깃허브 패키지 레지스트리 등록하기
2019-12-03
Explanation
지난 글에 이어서 오늘은 Github Actions에서 아주아주 간단하게 직접 action을 만들어서 그걸 가져다가 사용해보고
직접 만들어 본 action을 Github Package Registry에 등록하는 것까지 적어보려 합니다.
예제 코드는 아래와 같습니다.
https://github.com/falsy/github-custom-actions
https://github.com/falsy/blog-post-example/tree/master/github-actions-quickstart-2
그리고 제가 참고한 글은 아래와 같습니다. 아래 글이 훠~얼~씬 잘 설명되어 있는거 같아요.
함께 보시길 추천합니다.
https://blog.outsider.ne.kr/1415
https://coffeewhale.com/cicd/github/2019/10/14/github-actions/
https://help.github.com/en/actions/automating-your-workflow-with-github-actions/configuring-a-workflow
저는 ‘github-custom-actions’ 라는 이름으로 Github에 레파지토리를 만들었어요.
그리고 그 안에는 아래와 같이 간단한 3개의 파일로 되어 있습니다.
1 2 3 4 |
github-custom-actions Dockerfile entrypoint.sh action.yml |
1 2 3 4 5 6 7 8 9 10 11 12 |
# /Dockerfile FROM ubuntu:18.04 # 18.04 버전의 Ubuntu OS를 띄우고 ADD entrypoint.sh /entrypoint.sh # entrypoint.sh 파일을 추가하고 RUN chmod +x /entrypoint.sh # entrypoint.sh 파일에 권한을 주고 ENTRYPOINT ["/entrypoint.sh"] # entrypoint.sh 를 수행합니다. |
여기서 잠시 Dockerfile에서 ENTRYPOINT와 CMD의 차이를 알아두고 넘어가면 좋을 거 같아요.
아주 간단하게 이야기하면 CMD는 이후 컨테이너를 실행할때 인자값을 주었을때 변경되어 실행될 수 있고
ENTRYPOINT는 Dockerfile에서 지정한 명령만 수행한답니다.
참고. https://bluese05.tistory.com/77
1 2 3 4 5 6 |
# /entrypoint.sh #!/bin/sh # 위에는 주석이 아니에요. echo "Hello World" # Hello World 를 출력 |
저와 같이 쉘스크립트가 익숙하지 않으시다면, ‘#!/bin/sh’ 부분은 아래의 링크를 참고하시면 좋을 거 같습니다.
참고. https://storycompiler.tistory.com/101
1 2 3 4 5 6 |
# /action.yml name: 'hello world' description: 'add actions' runs: using: 'docker' image: Dockerfile |
위와 같이 3개의 파일로 된 액션 레파지토리를 만들었습니다.
이제 앞에 만든 Custom Actions을 사용해보기 위해 저는 ‘github-actions-quickstart-2’라는 레파지토리를 하나 만들었어요.
대충 전체적으로 코드는 저번 글의 ‘github-actions-quickstart-1’와 똑같고 .github/workflows/nodjs.yml 파일만 수정해봤어요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# /.github/workflows/nodjs.yml name: Node CI on: [push] jobs: build: runs-on: ubuntu-latest steps: - name: 'add actions test' uses: falsy/github-custom-actions@master id: test |
뭔가 저번에 쓰던거 복붙해서 썼더니 nodejs 안쓰는데 이름이 Node CI네요.. (쉿..)
사실 저번글에서 많이 지워지고, 중요한 부분은 ‘uses’ 부분이겠죠?
앞에 falsy는 제 깃허브 이름이고 뒤에는 조금 전에 만들었던 레파지토리의 이름이에요.
그리고 Push를 하고 Actions 탭을 확인해 볼까요?
짜잔 ‘잘 보면 Hello World’가 출력된 걸 볼 수 있답니다.
우선은 Docker를 사용해야하니 Docker를 설치되어 있어야 한답니다. 이전에 썼던 도커 설치 글을 참고할 수 있을 거 같아요.
https://falsy.me/docker를-설치하고-간단하게-nginx-node-서버를-배포해봅니다/
우선은 깃허브에서 프로필 아이콘을 누르고 ‘Settings’로 이동합니다.
왼쪽 메뉴에서 ‘Developer settings’ 로 이동한 후 ‘Personal access tokens’ 로 가서 ‘Generate new token’을 눌러 토큰을 만들어 줍니다.
권한으로는 read:packages, repo, write:packages 가 필요하다고 해요.
참고. https://coffeewhale.com/cicd/github/2019/10/14/github-actions/
token을 만들면 ‘069606298e62fb…’ 대충 이렇게 생긴 값이 생성되는데 요걸을 복사해주세요.
그리고 터미널을 열고 아까 처음에 만들었던 github-custom-actions 디렉토리로 이동해 줍니다.
1 |
$ cd /Users/falsy/Documents/Project/github-custom-actions |
위 경로는 그냥 저의 경로에요..
그리고 docker 로그인을 합니다.
1 |
$ docker login docker.pkg.github.com --username falsy -p 069606298e62fb... |
여기에서 ‘falsy’ 부분에 사용하시는 github 이름을 그리고 -p 다음에 아까 만들었던 token을 넣어주면 되요.
1 |
$ docker build -t docker.pkg.github.com/false/github-custom-actions/test:1.0 . |
빌드하여 이미지를 만듭니다. 위에 -t 다음은 태그 이름이고 맨 뒤에 .은 디렉토리 패스 값이에요.
1 |
$ docker tag docker.pkg.github.com/falsy/github-custom-actions/test:1.0 |
빌드한 이미지에 태그를 등록하고
1 |
$ docker push docker.pkg.github.com/falsy/github-custom-actions/test:1.0 |
이제 푸시하면 끝~
깃허브 레파지토리에 가보면 package에 1이 생긴 걸 볼 수 있습니다.
뒤로 갈수록 설명이 심플해진 느낌이 없지 않지만… 시간이 너무 늦어 피곤한 관계로…