remote: GitLab: remote: A default branch (e.g. main) does not yet exist for devteam/web-server remote: Ask a project Owner or Maintainer to create a default branch:
remote: GitLab: You are not allowed to push code to protected branches on this project. To http://192.168.40.200:37777/devteam/web-server.git
인프라를 구성하면서 SCM으로 Gitlab-CE를 Ubuntu 20.04 환경에서 서비스 데몬으로 설치한 후 사용하면서 겪은 오류이다.
본인은 개발자 팀원이 가입한 계정을 승인한 후 그룹을 만들어 DevTeam 그룹에 사용자들을 포함시켰다.
이때, 사용자들의 권한을 Developer로 부여하였다.
이후, 사용자들이 각자 사용할 Project를 생성하여 Local Repository와 연결하는 과정에서 아래와 같은 오류(사실은 권한 에러)를 맞이했다.
사실 영어만 제대로 읽었으면 바로 파악이 가능했겠지만, Git Configuration이 잘못되었는지 착각해서, 시간을 살짝 허비했다.
첫번째 오류 - Project에 최초 Push 불가능
이는 Developer 권한으로 최초 Push를 진행하려고 해서 발생한 오류이다.
해결법은 사용자 계정의 권한을 Maintainer 이상으로 변경해주거나, 별도의 Maintainer 이상 권한의 계정으로 최초 Push를 진행하는 방법이 존재한다.
이를 수행하면 정상적으로 최초 Project에 Push가 이루어진다.
본인은 Root 계정과 비밀번호로 최초 Push를 진행했다. 그러고 나니 다음 권한 오류를 맞이했다..
두번째 오류 - Master Branch에 Push 불가능
이는 사용자 계정이 보호된 Branch에 푸시를 진행할 권한이 없다는 오류이다.
실무 환경이 아닌 테스팅 환경에선 Master Branch에 Push를 진행하게 되는데, Gitlab에서는 기본적으로 해당 Branch가 Developer 이하의 권한의 사용자의 수정을 받지 못하도록 Protected 중이다.
이를 해결하기 위해선 Master Branch의 Protected 상태를 UnProtected로 변경하거나(Maintainer 이상의 권한 필요), 사용자 계정의 권한을 Developer 이상으로 변경해주거나, Master 브랜치가 아닌 별도의 Branch에서 Developer가 작업을 수행하고 Branch Merge 방식을 통해 통합시키는 방법이 존재한다.
실무 환경에선 개발자가 Master Branch에 직접 코드를 Push하는 경우는 없겠지만, 현재 환경에선 각자의 서버를 개발하고 수정하기 때문에 각 사용자의 권한을 Developer 이상으로 변경해 주는 것이 가장 효율적인 방법이라고 생각했다. 오류는 알아서 안나게 만드는걸로
아무튼 본인은 사용자에게 Maintainer 이상의 권한을 부여하면서 위의 문제를 해결했다.
상세한 Gitlab Permissions과 Role은 아래의 공식 문서에서 확인해볼 수 있다.