Bagi pembangun Golang, mengurus dan memasang modul Go biasanya mudah apabila berurusan dengan repositori awam. Walau bagaimanapun, perkara menjadi lebih rumit apabila anda perlu bekerja dengan modul Go peribadi.
Rantai alat modul Go tidak menyediakan mekanisme terbina dalam untuk bekerja dengan modul peribadi selain daripada menggunakan GOPROXY peribadi, dan menyediakan dan menyelenggara modul dengan betul bukanlah pilihan untuk setiap pembangun atau organisasi. Sesetengah perkhidmatan repositori pakej menyokong kerja dengan modul Go peribadi tetapi secara amnya tidak memberikan pengalaman paling bersih untuk pembangun.
Atas sebab ini, dalam kebanyakan kes, kami akhirnya mengatur konfigurasi Git yang rumit (.netrc atau .gitconfig) digabungkan dengan beberapa pembolehubah persekitaran Go untuk mengurus pengesahan dengan repositori peribadi kami apabila menggunakan muat turun go get, go install atau go mod .
Masalah dengan konfigurasi Git ini ialah ia tidak jelas kepada semua pembangun, dan ia mungkin tidak selamat kerana memerlukan penyimpanan bukti kelayakan teks biasa dalam sistem fail. Isu ini menjadi lebih bermasalah apabila mengkonfigurasi sistem CI/CD, membina imej Docker, dsb.
Sebagai pembangun Golang lama (bermula dari zaman ketika modul Go tidak wujud), kami sentiasa mengimpikan masa bekerja dengan perpustakaan Go persendirian akan menjadi semudah dan berkuasa seperti bekerja dengan perpustakaan awam.
Bayangkan membangun dan menolak perpustakaan Go peribadi anda ke GitHub, dan segera dapatkan perubahan baharu daripada kod sumber projek anda dengan hanya menetapkan pembolehubah persekitaran GOPROXY. Tiada konfigurasi Git yang rumit dan tidak selamat, tiada penyelenggaraan GOPROXY yang dihoskan sendiri, tiada aliran kerja penerbitan yang rumit dan mudah ralat, dan persediaan yang sama untuk mesin pembangun setempat anda, Dockerfile dan persekitaran CI/CD.
Say hello kepada goproxy.dev, perkhidmatan GOPROXY peribadi yang disepadukan dengan GitHub untuk memberikan anda pemasangan modul peribadi Go yang lancar.
Hanya log masuk ke goproxy.dev dengan akaun GitHub anda, berikan akses kepada repositori peribadi yang akan anda gunakan dan eksport pembolehubah persekitaran GOPROXY dan GONOSUMDB anda.
export GOPROXY=TOKEN@proxy.goproxy.dev,proxy.golang.org,direct export GONOSUMDB=github.com/your-organization
Pembolehubah persekitaran Go ini boleh ditetapkan terus daripada konfigurasi shell anda (.zshrc, .bashrc, dll.) atau menggunakan go env -w.
Kemudian anda boleh menjalankan arahan go biasa anda untuk memasang dan memuat turun modul peribadi anda.
go get github.com/your-organization/go-module@v2.0.0 go install github.com/your-organization/go-module/cmd ... go mod download
Menyepadukan dengan goproxy.dev hanya memerlukan menyediakan dua pembolehubah persekitaran. Cara terbaik untuk berbuat demikian semasa binaan Docker ialah dengan menggunakan ciri rahsia binaan Docker.
Di dalam Fail Docker anda:
COPY go.mod go.sum ./ RUN --mount=type=secret,id=GOPROXY \ GOPROXY=$(cat /run/secrets/GOPROXY) \ GONOSUMDB=github.com/your-organization \ go mod download RUN go build .
Dan larian:
GOPROXY="[your GOPROXY value]" docker build --secret id=GOPROXY
Hanya konfigurasikan rahsia untuk Tindakan GitHub anda yang mengandungi URL GOPROXY anda dan gunakannya daripada aliran kerja anda:
jobs: build: - run: | go mod download go build . env: GOPROXY: ${{ secrets.PRIVATE_GOPROXY }} GONOSUMDB: github.com/your-organization
Dengan goproxy.dev anda akan mendapat pengalaman pembangun terbaik apabila menggunakan perpustakaan dengan Go. Sama ada anda bergantung pada perpustakaan awam sumber terbuka atau modul peribadi daripada organisasi anda, anda akan mempunyai aliran kerja bersatu: sediakan pembolehubah persekitaran GOPROXY anda dan dapatkan kebergantungan untuk versi tertentu, cawangan Git atau komit.
Ketahui lebih lanjut dan mulakan dengan goproxy.dev hari ini dengan mendaftar untuk percubaan percuma 14 hari kami.
Atas ialah kandungan terperinci Urus dan pasang modul Go peribadi anda dengan mudah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!