Prefacio
He estado en contacto con golang durante mucho tiempo, pero comencé a escribir golang recientemente. Aunque no hay mucho que escribir, pero se han visto proyectos de golang pero numerosos, desde Kubernetes e istio para participar personalmente en el ecosistema de kustomize y luego en Kubernetes muchos gadgets, como: kubeval , kubedog , etc. Desde la perspectiva de los usuarios y contribuyentes del proyecto, he entrado en contacto con varios proyectos de golang . Como desarrollador, mientras disfruto de la conveniencia de varios proyectos de código abierto, también espero desarrollar un proyecto de golang por mí mismo . Con mi incontable experiencia en proyectos de lectura, entonces debo construir un proyecto de GitHub aparentemente formal .
Configuración de GoLand
Hay muchos tutoriales en línea para instalar el entorno de desarrollo Go , por lo que no los presentaré aquí. Este artículo presenta principalmente la configuración del entorno de desarrollo en GoLand . La configuración aquí se realiza principalmente en MacOS , y otros sistemas pueden ser diferentes.
Utilice Goland IDE vgo
vgo es una herramienta de administración de paquetes basada en la especificación del módulo Go , similar a la herramienta oficial de comando go mod .
- 开启 vgo ,GoLand -> Preferencias -> GO -> Módulos Go (vgo)
- Modificar manualmente go.mod
Donde la última es la última versión, GoLand descargará el último código de dependencia. Después de que la descarga sea exitosa, modificará go.mod y generará un archivo de análisis de dependencia go.sum .
module github.com/sunny0826/hamal
go 1.12
require (
github.com/mitchellh/go-homedir latest
github.com/spf13/cobra latest
github.com/spf13/viper latest
)
- actualización completada
Después de que la actualización sea exitosa, generará el archivo go.sum y modificará el archivo go.mod .
module github.com/sunny0826/hamal
go 1.12
require (
github.com/mitchellh/go-homedir v1.1.0
github.com/spf13/cobra v0.0.5
github.com/spf13/viper v1.4.0
)
- Use la tecla de acceso directo ⌥ (opción) + ↩ (retorno) o haga clic con el botón derecho del mouse para seleccionar Sincronizar paquetes de github.com/sunny0826/hamal para importar las dependencias en la importación.
Configurar proxy
Si desea elegir la razón más persuasiva para golang , ¡confiar en las descargas definitivamente obtendrá la mayor cantidad de votos! En este momento una escalera adecuada es muy importante, sin esta escalera, el paso anterior no se puede completar en absoluto. Aquí presentamos principalmente la configuración en GoLand , no se introducirá la instalación y configuración de Shadowsocks .
GoLand -> Preferences -> Appearance & Behavior -> System Settings -> HTTP Proxy está configurado aquí, no olvide hacer clic en Check connection para probar si la escalera está construida.
Configurar go fmt , goimports y golangci-lint
Estas tres herramientas están integradas en GoLand , es muy simple de configurar : GoLand -> Preferencias -> Herramientas -> Observadores de archivos , simplemente haga clic en agregar. Una vez escrito el código , la detección automática de estas 3 herramientas se activará automáticamente. La función de la herramienta:
- go fmt : una herramienta de formato de código unificado.
- golangci-lint : herramienta de inspección de calidad de código estático para análisis de calidad de paquetes.
- goimports : herramienta de paquete de dependencia de importación automática .
Instalar y configurar golint
GoLand no tiene su propia herramienta Golint , debe instalarla manualmente:
mkdir -p $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/
git clone https://github.com/golang/lint.git
git clone https://github.com/golang/tools.git
cd $GOPATH/src/golang.org/x/lint/golint
go install
Después de que la instalación sea exitosa, verá el archivo de la herramienta binaria golint generado automáticamente en el directorio $ GOPATH / bin .
GoLand configure golint , modifique las tres configuraciones de Nombre , Programa y Argumentos . Los argumentos deben agregar el parámetro -set_exit_status , como se muestra en la figura:
Integración continua de Travis CI
Cómo instalar Travis CI en Github , inicie sesión en Travis CI directamente, inicie sesión con GitHub , luego seleccione el proyecto que necesita usar Travis CI y agregue .travis.yml al directorio raíz del proyecto , de la siguiente manera:
language: go
go:
- 1.12.5
sudo: required
install:
- echo "install"
script:
- echo "script"
Aquí hay solo un ejemplo, cada inserción después del código activará CI , la sintaxis concreta se puede encontrar en la documentación oficial .
Punto clave: ¿Cree que el uso de Travis CI es para una integración continua? ¡Eso sería ingenuo! Utilice Travis CI, por supuesto, para sus insignias , simplemente copie el RESULTADO en su archivo README.md .
GO Boleta de calificaciones
__ otra tecla __ : Nos Goland instalado en golint herramientas tales como las pruebas de la calidad del código, Código de los controles puede llevarse a cabo en línea y el código de tiempo, entonces esto es para una carga a la fuerza. GO Report Card es un sitio web de detección de código golang , solo necesita completar la dirección de Github . Método Get Badges y Travis CI De manera similar, el contenido de MarkDown copiado en RERADME.md similar.
GoReleaser
Con la integración continua y la inspección del código, aquí se explica cómo lanzar una hermosa versión . Si aún está liberando manualmente la liberación , volverá a estar baja . Utilice el comando de una línea GoReleaser para lanzar una hermosa versión .
Debido al MacOS utilizado, aquí se utiliza brew para instalar:
brew install goreleaser
Genere la configuración .goreleaser.yml en el directorio raíz del proyecto :
goreleaser init
Después de la configuración, recuerde agregar dist a .gitignore , porque goreleaser generará los archivos compilados en el directorio dist de forma predeterminada .
Después de configurar goreleaser , puede compilarlo y probarlo primero:
goreleaser --skip-validate --skip-publish --snapshot
Nota: Para configurar GITHUB_TOKEN cuando use goreleaser por primera vez , puede aplicar aquí. Después de aplicar, ejecute el siguiente comando para configurar GITHUB_TOKEN
exportar GITHUB_TOKEN = <YOUR_TOKEN>
Asegúrese de que no haya ningún problema, luego puede operar git y goreleaser para lanzar la versión .
git add .
git commit -m "add goreleaser"
git tag -a v0.0.3 -m "First release"
git push origin master
git push origin v0.0.3
Una vez que todo está hecho, una línea de comando despega:
sangriento
Goreleaser funciona mejor con CI , por lo que no lo presentaré aquí.
Las insignias muestran artefactos
Aquí hay un artefacto que muestra insignias : https://shields.io/ . Este sitio web proporciona una variedad de insignias , si lo desea, puede completar su README.md de GitHub y los estudiantes interesados pueden recogerlas .
Fuente del manuscrito: Alibaba Cloud Developer Community