首页 > 解决方案 > 如何在 Gitlab-ci 中执行 sql 文件

问题描述

我正在发现 gitlab-ci 并且我想创建一个在每次提交后执行 sql 脚本的管道。为此,我使用了 dockerhub sqlplus 镜像 sflyr/sqlplus。

我的 .gitlab-ci.yml :

    stages:
  - build



code_quality:
  stage: build
  image: registry.pic.services.prod/valentine/ci/docker-dind:0.0.3
  services:
    - name: registry.pic.services.prod/valentine/ci/docker-dind:0.0.3
  allow_failure: true
  script:
    - setup_docker
    - docker pull sflyr/sqlplus  
    - docker run -e URL=*/*@//*/* -i sflyr/sqlplus < file.sql

.function: &function |
  function setup_docker() {
    if ! docker info &>/dev/null; then
      if [ -z "$DOCKER_HOST" -a "$KUBERNETES_PORT" ]; then
        export DOCKER_HOST='tcp://localhost:2375'
      fi
    fi
  }


before_script:
  - *function

我有错误:

SQL*Plus: Release 11.2.0.3.0 Production on Mon Dec 30 15:58:59 2019

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

ERROR:
ORA-12170: TNS:Connect timeout occurred


Enter user-name: SP2-0306: Invalid option.

标签: oracledockergitlab-cisqlplusdockerhub

解决方案


我在 docker 中做 docker,答案比这更简单:

    stages:
  - build

code_quality:
  stage: build
  tags:
    - [Runner]
  image: 
    name: sflyr/sqlplus
    entrypoint: ["/bin/sh"]
  allow_failure: true
  script:
    - /instantclient_11_2/sqlplus */*@*/* @file.sql

推荐阅读