[CI/CD] Github Action workflow 테스트

dongdorrong·2022년 12월 19일
0
post-thumbnail

Github Action 테스트의 경우 간단하게 Docker 이미지를 만들어서 workflow를 작성하는 것에 대해 테스트를 진행하였다.

1. Dockerfile 작성

FROM nginx:alpine
RUN echo "Hello, dongdorrong~?" > /usr/share/nginx/html/index.html ; \
    chmod +x run.sh ;\
    apk update && apk upgrade --ignore alpine-baselayout

2. GitHub Container Registry로 이미지 푸시

GitHub Container Registry에 접근하기 위해서는 액세스 토큰이 필요하다.
https://github.com/settings/tokens 에서 토큰을 만들 수 있고, 해당 토큰을 임의 파일에 삽입하고 명령을 수행하면 이미지를 푸시할 수 있다.

# cat password.txt | docker login https://ghcr.io -u <사용자 ID> --password-stdin
Login Succeeded
# docker tag nginx-test ghcr.io/dongdorrong/nginx-dongdorrong:0.1
# docker image ls
REPOSITORY                              TAG       IMAGE ID       CREATED       SIZE
nginx-test                              latest    0c51660caa3a   3 hours ago   45.9MB
ghcr.io/dongdorrong/nginx-dongdorrong   0.1       0c51660caa3a   3 hours ago   45.9MB
# docker push ghcr.io/dongdorrong/nginx-dongdorrong:0.1
80c32fbe8536: Pushed
9e173cdce044: Pushed
f2d47996fdfa: Pushed
c23f26e962bd: Pushed
0511ab7e6edc: Pushed
ec7e4a91c33b: Pushed
1fee4bd55a85: Pushed
ded7a220bb05: Pushed
0.1: digest: sha256:971b6b281843cb9418462bc5f870d21267bb04f3c07107b0831c7c5029e2ad38 size: 1992

3. workflow 작성

master 브랜치에 적용하면 바로 작동할 수 있도록 조건을 상단에 적용하였다.
workflow 작성하고 merge 했을 때 상태를 확인해보자.

name : ci
on:
  push:
    branch:
      - master
jobs:
  image-push:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Set env
        run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to Github Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.CR_PAT }}
      - name: Build and push
        uses: docker/build-push-action@v2
        id: docker_build
        with:
          context: .
          file: ./eks_github/Dockerfile
          push: true
          tags: |
            ghcr.io/${{ github.repository_owner }}/nginx-dongzz:latest
---

변경된 태그로 GitHub Container Registry에 올라간 것을 확인했다.

참고 레퍼런스

https://devocean.sk.com/blog/techBoardDetail.do?ID=163350
https://www.daleseo.com/github-actions-basics
https://blog.outsider.ne.kr/1531

profile
DevOps 엔지니어 / 열심히 해서 잘하자

0개의 댓글