41

Semantic Versioning on Private Library Package for Golang 1.13

 4 years ago
source link: https://www.tuicool.com/articles/miAj2qq
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

What we need?

  • Golang version 1.13 or above

    GOPRIVATE
    GOPROXY
    
  • Running Gitlab

    • Certainly, We need it host our private code. I assumed your gitlab running happily at http://foo.bar.com

Configure go.mod file for Library Package

  • Init a package named group/project

    go mod init foo.bar.com/group/project

  • Write some bugs with few lines of functional code, then commit and push.
  • Release your package with Semantic Version

    git tag -a v1.0.0 -m "release v1.0.0 for semantic version testing"
    git push --tags

  • Checkout your hard work on Gitlab.

Use Private Library Package For Versioning

  • Make sure your GOPRIVATE and GOPROXY works as well as we expect.

    GOPRIVATE=foo.bar.com
    GOPROXY=https://goproxy.io,direct

    Be careful :

    • GOPRIVATE=foo.bar.com means : all Packages from foo.bar.com was private package, go build will skip checksum cuz we trust our teammate. lol.
    • You may have your own setting of GOPROXY , always make sure direct section was placed EXACTLY at the end of this line. For now, our configuration means : If go build can't find package foo.bar.com/group/project via https://goproxy.io/group/project Then it will try to find it via http://foo.bar.com/group/project
  • Access your git repo

    • Use SSH instead of HTTP

      git config --global url."[email protected]:".instead of "http://foo.bar.com/"

    • Setup SSH public key on gitlab, You can easily make it via Google.
  • Pull the Trigger

    • Import library package and use it

      go get -u -v foo.bar.com/group/[email protected] go build .

    • EOF

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK