programing

mariadb 서비스를 실행하는 gitlab-ci가 MYSQL_ROOT_PASSWORD를 설정하지 않았습니다.

projobs 2023. 1. 14. 10:10
반응형

mariadb 서비스를 실행하는 gitlab-ci가 MYSQL_ROOT_PASSWORD를 설정하지 않았습니다.

여기서 머리를 뽑고 레일 어플리케이션의 gitlab-ci 테스트의 일환으로 mariadb 서비스를 실행하려고 합니다.그러나 테스트 실행 시 mariadb는 gitlab-ci의 환경변수를 따르지 않습니다.예를 들어..

services:
- name: mariadb

variables:
  # Configure mysql service (https://hub.docker.com/_/mysql/)
  MYSQL_DATABASE: hello_world_test
  MYSQL_ROOT_PASSWORD: mysql

connect:
  image: mariadb
  script:
  - echo "SELECT 'OK';" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mariadb "$MYSQL_DATABASE"

mariadb는 root 비밀번호로 시작할 것으로 예상되지만, root 비밀번호가 설정되어 있지 않고 CI가 실패했다는 경고만 표시됩니다.

mariadb를 mysql로 바꾸면 모든 것이 잘 작동합니다.mariab을 수동으로 시작하면

docker run -e MYSQL_ROOT_PASSWORD=mysql mariadb모두 잘 지내고 있습니다.도커 컴포지트를 사용하는데 왜 Gitlab-CI에서는 동작하지 않는가.다른 서비스에서는 글로벌 변수를 선택하여 사용할 수 있는 것 같습니다.

더 파헤치고...mariadb는 부팅에 시간이 걸리고 TCP 포트를 열어 접속을 받아들일 준비가 되어 있는 것을 발견했습니다.이것은 gitlab이 준비가 되어 있는 것을 나타내는 지표인 것 같습니다.그러나 mariadb는 아직 준비가 되지 않아 연결이 되지 않고 있습니다.

이제 지루한 스크립트를 작성하여 sleep 5를 실행하고 연결을 계속 확인하여 데이터베이스가 액세스 준비가 될 때까지 CI 실행을 지연시켰습니다.

언급URL : https://stackoverflow.com/questions/57975047/gitlab-ci-running-mariadb-service-not-setting-mysql-root-password

반응형