GitLab CI-使用Mysql服务
我尝试在symfony的web项目上使用GitLab CI 要执行一些测试,我需要有一个数据库并从应用程序访问它,但它不起作用。似乎无法访问mysql服务。。。实际上,我只是在GitLab CI-使用Mysql服务,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,我尝试在symfony的web项目上使用GitLab CI 要执行一些测试,我需要有一个数据库并从应用程序访问它,但它不起作用。似乎无法访问mysql服务。。。实际上,我只是在gitlab ci.yml文件的顶部声明服务,并设置变量来配置它。是否有可能将该服务链接到我自己的应用程序服务以使用它 My gitlab-ci.yml: image: docker:latest services: - docker:dind - name: mysql:5.7.21 alias: db stag
gitlab ci.yml
文件的顶部声明服务,并设置变量来配置它。是否有可能将该服务链接到我自己的应用程序服务以使用它
My gitlab-ci.yml:
image: docker:latest
services:
- docker:dind
- name: mysql:5.7.21
alias: db
stages:
- build
- test
- release
variables:
MYSQL_ROOT_PASSWORD: collection-manager
MYSQL_USER: collection-manager
MYSQL_PASSWORD: collection-manager
MYSQL_DATABASE: collection-manager
CONTAINER_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH
CONTAINER_TEST_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH:$CI_COMMIT_REF_NAME
CONTAINER_RELEASE_IMAGE: registry.gitlab.com/$CI_PROJECT_PATH:latest
DOCKER_DRIVER: overlay2
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
build:
stage: build
script:
- docker pull $CONTAINER_RELEASE_IMAGE || true
- docker build --cache-from $CONTAINER_RELEASE_IMAGE -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
cs-test:
stage: test
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker run $CONTAINER_TEST_IMAGE bash -c "composer install --no-progress --no-suggest --optimize-autoloader --no-interaction; ./vendor/bin/php-cs-fixer fix --diff --dry-run -v"
- docker run $CONTAINER_TEST_IMAGE bash -c "composer install --no-progress --no-suggest --optimize-autoloader --no-interaction; ./bin/console lint:yaml app"
- docker run $CONTAINER_TEST_IMAGE bash -c "composer install --no-progress --no-suggest --optimize-autoloader --no-interaction; ./bin/console lint:twig app/Resources"
- docker run $CONTAINER_TEST_IMAGE bash -c "composer install --no-progress --no-suggest --optimize-autoloader --no-interaction; composer validate --strict"
release-image:
stage: release
script:
- docker pull $CONTAINER_TEST_IMAGE
- docker tag $CONTAINER_TEST_IMAGE $CONTAINER_RELEASE_IMAGE
- docker push $CONTAINER_RELEASE_IMAGE
only:
- master
在job cs测试中,我得到如下回报:
docker run $CONTAINER_TEST_IMAGE bash -c "composer install --no-progress --no-suggest --optimize-autoloader --no-interaction; ./vendor/bin/php-cs-fixer fix --diff --dry-run -v"
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 8 installs, 0 updates, 0 removals
- Installing doctrine/data-fixtures (v1.3.0): Downloading (100%)
- Installing doctrine/doctrine-fixtures-bundle (v2.4.1): Downloading (100%)
- Installing symfony/polyfill-php72 (v1.7.0): Downloading (100%)
- Installing php-cs-fixer/diff (v1.3.0): Downloading (100%)
- Installing composer/semver (1.4.2): Downloading (100%)
- Installing friendsofphp/php-cs-fixer (v2.11.1): Downloading (100%)
- Installing sensio/generator-bundle (v3.1.7): Downloading (100%)
- Installing symfony/phpunit-bridge (v3.4.8): Downloading (100%)
Generating optimized autoload files
ocramius/package-versions: Generating version class...
ocramius/package-versions: ...done generating version class
> Incenteev\ParameterHandler\ScriptHandler::buildParameters
Creating the "app/config/parameters.yml" file
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache
In AbstractMySQLDriver.php line 112:
An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddr
esses: getaddrinfo failed: Name or service not known
In PDOConnection.php line 50:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name o
r service not known
In PDOConnection.php line 46:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name o
r service not known
In PDOConnection.php line 46:
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or s
ervice not known
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the symfony-scripts event terminated with an exception
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command:
In AbstractMySQLDriver.php line 112:
An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddr
esses: getaddrinfo failed: Name or service not known
In PDOConnection.php line 50:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name o
r service not known
In PDOConnection.php line 46:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
In PDOConnection.php line 46:
PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Name or service not known
我不明白为什么。。。应用程序在以下位置具有默认连接:
- host: db
- db name: collection-manager
- db user: collection-manager
- db pass: collection-manager
在我使用MySQL进行集成测试的项目中,我有以下环境变量:
MYSQL_USER: 'your_user'
MYSQL_PASSWORD: 'your_pass'
MYSQL_HOST: 'mysql__mysql-server'
MYSQL_PORT: 3306
MYSQL_DATABASE_NAME: 'testdb'
MYSQL_DATABASE: 'testdb'
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: 'your_rootpw'
我记得我花了很多时间来计算主机名,我发现您的配置中也缺少它。将网络模式设置为主机(在macOS下不起作用),并添加自定义主机到IP映射:
services:
- docker:dind
- mysql:5.7
script:
- export # just for debugging
- docker build --network=host --add-host mysql:${MYSQL_PORT_3306_TCP_ADDR} .