ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • go module을 pkg.go.dev에 등록 및 versioning하기
    메모 및 기타 2022. 8. 7. 11:34

    틀린 내용이 있을 수도 있습니다! 

    틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다!

     

    이번 포스팅에서는 내가 go로 작성한 모듈 패키지를 pkg.go.dev에 등록하고, versioning 하는 방법을 다루었다.

    pkg.go.dev 등록하기, major 버전이 아닌 버전 업그레이드하기, major  버전 업그레이드 하기로 구성했다. 

     

    major version을 분리하여 구성한 이유는 go에서는 major 버전을 변경하면, pkg 경로에 v2라는 prefix가 추가되어야 하기 때문이다. 예를 들면, github.com/sjoh0704/go-module-test에서 github.com/sjoh0704/go-module-test/v2가 되어야 하기 때문에 이를 구분해야 한다.  

     

    우선 패키지를 pkg.go.dev에 등록하기 위해서는 다음과 같은 과정을 거쳐야 한다.

    1. github 레포지토리 생성 

    2. 모듈 생성

    3. semantic versioning에 맞게 tag 생성

     

    semantic versioning은 다음 rule을 따른다.  

     

    pkg.go.dev에 등록하기 

    1. github에서 repository 생성

    github에 go-module-test라는 이름으로 public repository를 만든다. 

    module을 Import할 때 github.com/sjoh0704/go-module-test라는 이름으로 사용할 것이다.  

     

    2. package로 사용할 module 만들기

    패키지로 사용할 module을 하나 생성하자. 

    mkdir go-module-test 
    cd go-module-test 
    go mod init github.com/sjoh0704/go-module-test
    # 나의 경우에는 test1과 test2라는 패키지를 추가하였다.   
    # 테스트하기 위함이므로 아주 간단한 코드를 작성했다.

     

    작성한 코드를 보려면 경로에서 확인한다. 

    https://github.com/sjoh0704/go-module-test/tree/v1.0.0

     

    GitHub - sjoh0704/go-module-test

    Contribute to sjoh0704/go-module-test development by creating an account on GitHub.

    github.com

     

    작성한 코드를 커밋 후, v1.0.0 형식으로 tag를 달아서 github에 푸쉬하자.

    git tag v1.0.0
    git push --tag

     

    3. 지금까지 만든 package 사용 테스트

    위에서 만든 패키지를 잘 받아와서 사용할 수 있는지 테스트해야 한다. 

    위 모듈을 테스트할 test라는 모듈을 만든다. 

    mkdir test
    go mod init test

     

    test/main.go

    package main
    
    import (
    	t1 "github.com/sjoh0704/go-module-test/test1"
    	t2 "github.com/sjoh0704/go-module-test/test2"
    )
    
    func main(){
    	t1.Hello()
    	t2.Hello()	
    }

    go mod tidy를 통해서 패키지를 가져온 후, 실행하면 잘 실행된다.  

    seung@seung-laptop:~/projects/test$ go run main.go 
    hello1
    hello2

     

    pkg.go.dev에서도 내가 등록한 패키지를 확인할 수 있다. 

    등록되기까지는 시간이 조금 걸리는 듯하다

    https://pkg.go.dev/github.com/sjoh0704/go-module-test 

     

    go-module-test module - github.com/sjoh0704/go-module-test - Go Packages

    Directories ¶ Expand all

    pkg.go.dev

     

    Version 업그레이드하기(major version은 그대로)

    이번에는 patch version을 업그레이드할 것이다.

    기존 코드를 수정하고 v1.0.1로 Tag를 달아서 Push 한다.

     

    코드는 다음 경로에 있다.

    https://github.com/sjoh0704/go-module-test/tree/v1.0.1

     

    GitHub - sjoh0704/go-module-test

    Contribute to sjoh0704/go-module-test development by creating an account on GitHub.

    github.com

     

    git tag v1.0.1
    git push --tag

     

    < 여기서부터는 test 모듈 수정>

    이미 만들어 두었던 test 모듈에서 업그레이드한 v1.0.1을 가져와서 사용할 것이다. 

     

    위 패키지를 다운로드하기 위해 v1.0.1을 가져온다. 

    go get github.com/sjoh0704/go-module-test@v1.0.1

     

    go get -u github.com/sjoh0704/go-module-test를 하면 최신 버전을 가져온다. 

    참고로, go get -u는 현재 major 버전의 최신 버전을 가져온다.

    즉, v1에서 latest를 가져온다. 

     

    설치 완료 후, 실행시키면 update 된 버전을 확인할 수  있다. 

    seung@seung-laptop:~/projects/test$ go run main.go 
    hello1 update
    hello2 update

    go.mod에서도 버전이 1.0.1로 update된 것을 확인할 수 있다. 

     

    Version 업그레이드하기(major version 변경) 

    v1.0.1을 v2.0.0으로 올려보자. 

    major version을 업그레이드하는 방법은 두 가지가 있지만, 여기서는 pkg 경로에 v2를 추가하는 방법을 사용할 것이다.

    major version을 변경하기 위해서는 v2라는 새로운 경로를 pkg 경로에 추가해야 하는데, 예를 들면 github.com/sjoh0704/go-module-test에서 github.com/sjoh0704/go-module-test/v2가 되는 것이다. 

     

    관리는 새로운 브랜치인 v2 브랜치를 생성해서 하자.

    git checkout -b v2
    git push origin v2

     

    이제 필요한 코드를 추가한다. 아무 내용이나 추가하자. 

    https://github.com/sjoh0704/go-module-test/tree/v2.0.0

     

    GitHub - sjoh0704/go-module-test

    Contribute to sjoh0704/go-module-test development by creating an account on GitHub.

    github.com

     

    github.com/sjoh0704/go-module-test/v2로 사용하기 위해 go.mod를 다음과 같이 업데이트한다.

    module github.com/sjoh0704/go-module-test/v2 # 뒤에 v2만 추가한다. 
    
    go 1.17

    github에 v2.0.0으로 변경하여 반영한다. 

    git tag v2.0.0
    git push --tag


    < 여기서부터는 test 모듈 수정>

     

    test/main.go

    package main
    
    import (
    	t1 "github.com/sjoh0704/go-module-test/v2/test1"
    	t2 "github.com/sjoh0704/go-module-test/v2/test2"
    )
    
    func main(){
    	t1.Hello()
    	t2.Hello()	
    }

     

    이후 test 모듈에서 다음 커맨드를 통해서 새로운 v2.0.0을 설치한다. 

    go get  github.com/sjoh0704/go-module-test/v2@v2.0.0

     

    직접 다운이 안된다면, 다음과 같이 go.mod를 직접 수정 후, go mod tidy를 한다.  

    module test
    
    go 1.17
    
    require github.com/sjoh0704/go-module-test/v2 v2.0.0

     

    실행하면, 다음과 같이 v2.0.0이 잘 반영된 것을 확인할 수 있다.  

    seung@seung-laptop:~/projects/test$ go run main.go 
    hello1 version upgrade
    hello2 version upgrade

     

    반응형

    '메모 및 기타' 카테고리의 다른 글

    Helm 자주 사용하는 커맨드 정리  (0) 2022.09.20
    내가 자주 사용하는 git command  (0) 2022.08.13
    정보보호론 과제 정리  (0) 2021.10.19
    Nginx Configuration 정리  (0) 2021.09.10
    CKA 자격증 취득 후기  (1) 2021.08.17

    댓글

Designed by Tistory.