- 17, Oct 2024
- #1
Go и DevOps — это новые вещи для меня. Я хотел бы настроить CI, который тестирует и собирает мой модуль, а затем сохраняет артефакты для загрузки. Кроме того, было бы неплохо кэшировать зависимости для следующих сборок.
Я не понимаю, как это сделать, используя подкаталог для продукта go. Я хочу, чтобы мой репозиторий git выглядел так:
GOPATH
go.mod
#!/bin/bash -eo pipefail
go build -o ./bin/hello.exe github.com/{USER}/{REPO_ROOT}/go/hello
can't load package: package github.com/{USER}/{REPO_ROOT}/go/hello: cannot find package "github.com/{USER}/{REPO_ROOT}/go/hello" in any of:
/usr/local/go/src/github.com/{USER}/{REPO_ROOT}/go/hello (from $GOROOT)
/go/src/github.com/{USER}/{REPO_ROOT}/go/hello (from $GOPATH)
Exited with code exit status 1
CircleCI received exit code 1
Конечно, {USER} заменяется моим именем пользователя GitHub, а {REPOSITORY_ROOT} — это имя репозитория.
На данный момент у меня есть следующий config.yml, который не работает.
version: 2
jobs:
build:
working_directory: ~/project/go
docker:
- image: circleci/golang:1.9
steps:
- checkout:
path: ~/project/
- run: mkdir bin
- run: go get -v -t -d ./...
- run: go test -v ./...
- run: go build -o bin/hello.exe github.com/{USER}/{REPOSITORY_ROOT}/go/hello
- store_artifacts:
path: bin/
destination: hello-app
Ошибка в команде сборки:
module github.com/{USER}/{REPOSITORY_ROOT}/go
go 1.14
Я знаю, что модуль находится за пределами
+ repository_root/
+ go/
- go.mod
- go.sum
+ hello/
- main.go
+ cpp/
+ python/
+ .circleci/
but I have the same setup on my local machine and the same build command works just fine.
#cicd #circleci #go