반응형
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
반응형
'programing' 카테고리의 다른 글
MYSQL SELECT: WHERE 절의 첫 번째 또는 두 번째 조건이 충족되었는지 여부를 나타내는 추가 열을 얻는 방법 (0) | 2023.01.14 |
---|---|
object spread / mapState help (0) | 2023.01.14 |
침묵 "선언...호환성이 있어야 한다"라는 경고 메시지가 표시됩니다. (0) | 2023.01.14 |
텍스트 상자에서 Enter 키를 누르기 위한 JQuery 이벤트? (0) | 2023.01.14 |
src 및 dist 폴더의 역할은 무엇입니까? (0) | 2023.01.14 |