ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Netlify Git Branch 이름 기준으로 배포 무시하기 (netlify ignore)
    기록이라도 하자 2023. 10. 17. 12:05
    결론 미리보기
    - 적용해보았으나 branch 이름을 제멋대로 가져오는 바람에 실패하고 원복함
    - 해당 글에는 실패하는 과정이 담겨있습니다

     

    Netlify를 deploy preview해서 사용하고 있다.
    (*deploy preview : github pull request 올릴 때마다 해당 코드를 기준으로 배포해서 미리보기를 할 수 있는 기능)

    깃헙 PR을 생성하면 자동으로 빌드를 한 후에 preview link를 생성해준다.

     

    브랜치 관리에 대해서 셀 내에서 이야기를 하다가 기존에는 "feature/ ~ " 라는 이름을 무조건적으로 붙여서 브랜치를 생성하고 큰 기능일 경우에는 feature에서 새로운 feature를 생성하여 브랜치를 관리하고 있었는데
    그 경우에는 feature가 아니라 bridge로 가져가는 게 더 맞을 것 같고 앞으로 그렇게 관리하기로 했다

     

    AS-IS

    develop <- feature (작은 기능)
    develop <- feature (큰 기능) <- feature (작은 기능)

    TO-BE

    develop <- feature (작은 기능)
    develop <- bridge (큰 기능) <- feature (작은 기능)

     

    이렇게 되면 작은 기능인 feature의 경우에는 굳이 deploy preview가 필요하지 않고, 작업 완료 후 테섭에서 검수하는 절차만 거치면 될 것 같다는 의견이 있었다.

     

    어느 브랜치에 머지되는지를 파악해서 develop 브랜치에 머지될 경우에만 deploy 하면 좋을 것 같아서
    (bridge에 머지될 feature만 deploy 막는 방식)
    찾아봤는데 어느 브랜치에 머지될 지는 알 수가 없었다.
    netlify 환경 변수는 여기 (https://docs.netlify.com/configure-builds/environment-variables/) 서 확인이 가능하다

    BRANCH가 내가 생성한 브랜치명,

    HEAD는 현재 작업 중인 Git 브랜치의 "헤드" 또는 "최상위 커밋"을 가리키는 중요한 포인터이고,
    여기서는 PR이 머지 되기 전에는 pull/{PR Number}/head 와 같이 표시되고, PR이 머지되고 난 이후에는 브랜치 명으로 표시된다.  

    ignore를 사용하기 위해서 기존에 netlify.toml을 사용했는데
    찾아보니까 조건식 같은 게 들어가면 js 파일을 따로 설정해줘야 한다고 나와 있었다.

    근데 그냥 toml 파일 만으로도 동작할 것 같아서 설정했더니 됐다>_<

    기존 netlify.toml 설정

    [build]
      ignore = 'msg=$(git show -s --format=%B HEAD); if [[ $msg == *"[netlify-ignore]"* ]]; then exit 0; fi; exit 1'

    - git commit 메세지에 netlify-ignore가 포함되어 있으면 빌드를 하지 않았다.

    수정한 netlify.toml 설정

    [context.deploy-preview]
      ignore = '''
        if [[ $BRANCH != *"bridge"* ]]; then
          exit 0;
        fi;
        msg=$(git show -s --format=%B HEAD);
        if [[ $msg == *"[netlify-ignore]"* ]]; then
          exit 0;
        fi;
        exit 1;
      '''

    - branch 이름에 bridge가 들어가지 않는다면 빌드를 하지 않는 로직을 추가했다.



    동작하는 줄 알았다 그러나 어떤 것은 bridge라는 이름을 가져도 성공하고 어떤건 취소처리를 해버리는 것이다

    netlify initilaize 하는 부분을 확인해보니 같은 브랜치여도 Git Reference를 다르게 가져온다. 

    HEAD로 할 때, BRANCH로 할 때 다른건가 했는데 그게 아니라 그냥 무작위로 가져오는 것 같다.. 

    git branch도 git message처럼 git 명령어로 가져오는 것도 시도해봤으나 똑같았다..

    여기에 더 쏟을 시간은 없어서 추가했던 제한을 없애는 것으로 마무리했다 엉엉..

     

    p.s 난 네틀리파이라고 읽고,, 우리 회사 사람들 전부 네틀리파이로 읽었는데 넷리파이라고 불리나보다😵

     

    참고 자료

    - ignore command를 사용하는 방법
    https://docs.netlify.com/configure-builds/ignore-builds/#skip-builds-based-on-branch-name

    https://answers.netlify.com/t/support-guide-how-to-use-the-ignore-command/37517

Designed by Tistory.