oracle - 如何在 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.
解决方案
我在 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