はじめに
弊社システムはAWSで動いているものやAzureで動いているものなど色々な物があります
今回は、Azureで動いているSQLServerについてとりあげてみたいと思います
やりたいこと
単体テストをいっぱい書いたけど、SQLServerが個人の環境にしかないので、CI上でテストが通ることを確認したい
SQLServerについて
- imageはここから利用する
注意点
-
CircleCI上でWindowsを使うのは、ムリ
-
Linux版 は 2017 から
- それ以前のものはない
実際の利用方法
.circleci/config.yml
ersion: 2
jobs:
build:
docker:
- image: microsoft/mssql-server-linux:2017-CU8
environment:
- ACCEPT_EULA: Y # 認証をパスさせる
- SA_PASSWORD: 1234abcD # rootのパス
使ってみようとして気づいた事
あれ。。これ、立ち上げただけでDBないじゃん。。。。
プログラムから利用しようとしても出来ないじゃん。。。
そんなわけでDB作成スクリプト
<?php
$sql = <<<SQL
IF DB_ID(N'testing') IS NULL
CREATE DATABASE testing;
SQL;
$username = getenv('DB_USERNAME');
$password = getenv('DB_PASSWORD');
$pdo = new PDO('dblib:host=localhost', $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->query($sql);
PDOで入れたので、SQLにつなぐライブラリもインストール
- run: sudo ln -s /usr/lib/x86_64-linux-gnu/libsybdb.a /usr/lib/
- run: sudo pecl install sqlsrv-5.3.0 pdo_sqlsrv-5.3.0
- run: echo -e "extension=pdo_sqlsrv.so" | sudo tee /usr/local/etc/php/php.ini > /dev/null
- run: echo -e "extension=sqlsrv.so" | sudo tee /usr/local/etc/php/php.ini > /dev/null
うーん。結構面倒だった。。。