더듬이

[Docker 자동 tag 만들기 ] 2. git action을 통해 Docker 자동 build push autoTag 하기 본문

Docker

[Docker 자동 tag 만들기 ] 2. git action을 통해 Docker 자동 build push autoTag 하기

dbhang 2022. 6. 6. 20:37

가끔 회사에서 Dockerfile을 git으로 관리하다 보면 문제가 생기는 경우가 존재한다.

 

1. git commit push는 해놨지만 docker push는 안하고 배포한 경우(재앙이다 진짜...)

2. github code랑 docker image 가 매칭 안되는 경우 => 오롯이 개발자 기억에 의지하는 경우 (뇌정지 온다 진짜...)

 

젠킨스를 통해 빌드 푸쉬하면 job기록이 남고 어떤 commit들이 현재 이미지에 반영/배포되었는지 알수 있기에 이런 이슈는 없겠지만! 

부득이하게 젠킨스를 쓸 수없는 경우에는 간단히 gitaction으로 수정 가능하다.

 

1. Docker token 발급 받고 github에 등록하기

https://my-grope-log.tistory.com/45

 

[Docker] 1. Docker token 발급받고 github와 연동하기

일단 dockerhub 에 로그인 한뒤 Settings >security 메뉴를 눌러서 token을 발급받자. 발급 방법은 간단하다. New Access Token 버튼을 클릭 후 token에 대한 설명만 적으면 token을 발급 받을 수 있다. 이제 to..

my-grope-log.tistory.com

위 게시글을 참고하자. 

일단  docker를 build/push 하는  github action 예제 를 살펴보자.

 

일단 예제를 따라하기 위해 아래와 같은 procject 구조를 만든다.

그리고 Dockerfile안에 간단한 내용을 적는다.

FROM nginx
RUN echo "tag TEST" > /root/test.txt

그리고 이제 docker action을 설정한다. DockerAutotag.yml 파일 안에 아래와 같은 예시를 적는다.

 

name: Build and Tag and Push Docker Image
on:
  push:
    branches:
      - develop

 

일단 github action을 name 필드에 적어주고

on 필드는 action이 실행될 조건을 적는다.

나는 push 동작이 develop 브런치에 걸리는 순간에 해당 action이 실행되기를 설정했다. 

 

 

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_ID }}
        password: ${{ secrets.DOCKERHUB_TOKEN }}
        
    - name: Build and push
      id: docker_build
      uses: docker/build-push-action@v2
      with:
        push: true
        tags: hsd3030/dockerautotag:${{ github.sha }}

그리고 jobs에 도커 실행 엑션을 적어준다 . 

job명을 먼저 적어주고

그 하위로 runs-on 필드는 job이 진행될 환경이다.

그리고 그 하위로 job에서 진행할 작업을  steps 필드에 정의한다.

 

특히 login to dockerhub 스텝에서는 git저장소에 저장한 도커허브 환경 변수를 잘 적는다.

 

그리고 build and push 시에 tag를 github 자체 환경 변수를 이용하면 끝이다.

 

생각 보다 내용이 간단해서 다행이였다.

그치만  github action을 완벽히 익힌건 아니라서 다음에 다른 job을 생성해보며 익혀야겠다.

 

 

위내용의 코드들은 아래프로젝트에 정리되어있다.

https://github.com/inyeongpark/DockerAutoTag