У меня есть следующее .gitlab-ci.yml
stages:
- test
- build
- art
image: golang:1.9.2
variables:
BIN_NAME: example
ARTIFACTS_DIR: artifacts
GO_PROJECT: example
GOPATH: /go
before_script:
- mkdir -p ${GOPATH}/src/${GO_PROJECT}
- mkdir -p ${CI_PROJECT_DIR}/${ARTIFACTS_DIR}
- go get -u github.com/golang/dep/cmd/dep
- cp -r ${CI_PROJECT_DIR}/* ${GOPATH}/src/${GO_PROJECT}/
- cd ${GOPATH}/src/${GO_PROJECT}
test:
stage: test
script:
# Run all tests
go test -run ''
build:
stage: build
script:
# Compile and name the binary as `hello`
- go build -o hello
- pwd
- ls -l hello
# Execute the binary
- ./hello
# Move to gitlab build directory
- mv ./hello ${CI_PROJECT_DIR} artifacts:
paths:
- ./hello
Проблема в том, что моя программа зависит как от Go, так и от Mysql ...
Я знаю, что у меня может быть другой образ докерадля каждого этапа, но мой этап тестирования требует и
go test & MySql
Что я изучил:
Я научился создавать свой собственный образ докера на основе фиксации Docker, а также как использоватьфайл докера для создания и создания образа.
Однако я слышал, что есть способ связать контейнеры докеров, используя docker compose, и это кажется лучшим способом ...
Понятия не имеюкак это сделать в GitLab, я знаю, что мне нужен файл compose.yml
, но я не уверен, куда его поместить, что нужно в нем добавить, создает ли он изображение, на которое я затем ссылаюсь из моего файла .gitlab-ci.yml
?
Может быть, все кончено, и есть более простой способ?