前提・実現したいこと
Docker上に構築したapi(Golang
)をtravis ci
を用いて自動ビルド/デプロイしています。
apiのユニットテストコードを書いたのですが、これがtravis ciで自動ビルドされる前に実行されるように.travis.yml
を設定したいのですが、うまく設定できません。
何を.travis.ymlに書けば良いのかを教えていただきたいです。
該当のソースコード
フォルダ構成
article ├ client ├ api │ ├ main.go │ ├ dao │ │ ├ dao.go │ │ └ dao_test.go │ ├ //省略 │ └ Dockerfile ├ nginx └ docker-compose.yml
.travis.yml
yml
1language: generic 2sudo: required 3services: 4 - docker 5 6before_install: 7 - docker build -t jpskgc/react-test -f ./client/Dockerfile.dev ./client 8 9script: 10 - docker run -e CI=true jpskgc/react-test npm test 11 12after_success: 13 - docker build -t jpskgc/multi-client ./client 14 - docker build -t jpskgc/multi-nginx ./nginx 15 - docker build -t jpskgc/multi-api ./api 16 - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_ID" --password-stdin 17 - docker push jpskgc/multi-client 18 - docker push jpskgc/multi-nginx 19 - docker push jpskgc/multi-api 20deploy: 21 provider: elasticbeanstalk 22 region: ap-northeast-1 23 app: multi-docker 24 env: MultiDocker-env 25 bucket_name: elasticbeanstalk-ap-northeast-1-340135579499 26 bucket_path: docker-multi 27 on: 28 branch: master 29 access_key_id: 30 secure: $AWS_ACCESS_KEY 31 secret_access_key: 32 secure: $AWS_SECRET_KEY 33
docker-compose.yml
version: '3' services: db: image: mysql ports: - '3306:3306' environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: article MYSQL_USER: docker MYSQL_PASSWORD: docker nginx: restart: always build: dockerfile: Dockerfile.dev context: ./nginx ports: - '3050:80' depends_on: - client - api api: build: dockerfile: Dockerfile.dev context: ./api volumes: - ./api:/go/src/github.com/jpskgc/article/app depends_on: - db tty: true environment: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - MYSQL_USER - MYSQL_PASSWORD - MYSQL_HOST - GO111MODULE client: build: dockerfile: Dockerfile.dev context: ./client volumes: - /app/node_modules - ./client:/app
ソースコード全体は以下のgithubにあります
https://github.com/jpskgc/article
補足情報(FW/ツールのバージョンなど)
・client: react/axios ・api: golang/gin ・web-server: nginx ・db: mysql ・container: docker ・ci-tool: travis ・deploy: aws elastic beanstalk
以上、お手数ですがご教授いただけると幸いです。よろしくお願いいたします。
追記[2019/09/01]
以下のようにtravis.ymlを加筆したところ、travisでエラーが発生しました。
dbのコネクションに問題があるようなのですが、どのファイルに何を書き換えればいいのかはまだ分かっていません。
before_install: - docker build -t jpskgc/api-test -f ./api/Dockerfile.dev ./api script: - docker run -e CI=true jpskgc/api-test go test -v ./dao
$ docker run -e CI=true [secure]/api-test go test -v ./dao panic: dial tcp :3306: connect: connection refused goroutine 1 [running]: main.main() /app/main.go:30 +0xc72 The command "docker run -e CI=true [secure]/api-test go test -v ./dao" exited with 2. Done. Your build exited with 1.
あなたの回答
tips
プレビュー