🚀
GitHub ActionsでMariaDBを使う方法(Node.js編)
ファイル構成
─┬─ temporary.js とりあえずmariadbの動作確認する用のスクリプト
├─ package.json
├─ node_modules
├─ .github/workflows/ci.yml
└─ .gitignore
下準備
ローカル環境でNode.jsとnpm、MariaDBをインストールしておく
nodenvを用いてNodeの管理をするのがおすすめ。導入方法はこちらに詳しくある。
nodenv でインストールできるNode.jsのバージョン一覧を更新する場合にはnode-build-update-defs
を導入する。
MariaDBのインストール
$ brew install mariadb
記事執筆時点での環境
ツール | バージョン |
---|---|
nodenv | 1.4.0 |
node | v14.16.0 |
npm | 7.6.3 |
MariaDB | 10.5.9 |
.gitignore
.DS_Store
node_modules/
package.jsonでmoduleをインストール
{
"name": "mariadb-test",
"version": "0.0.1",
"private": true,
"main": "temporary.js",
"scripts": {
"start": "node temporary.js",
},
"dependencies": {
"mariadb": "^2.5.3"
}
}
$ npm install
GitHub ActionsのYAMLを書く
ci.yml
name: MariaDB Test
on:
push:
branches:
- develop
jobs:
mariadb_test:
runs-on: ubuntu-20.04
timeout-minutes: 5
steps:
- uses: actions/checkout@v2
# GitHub ActionsデフォルトのMySQLをシャットダウンしておく(必須)
- name: Shutdown Ubuntu MySQL (SUDO)
run: sudo service mysql stop
# Dockerをつかってmariadbを立ててくれるActionを使う
- uses: getong/mariadb-action@v1.1
with:
mariadb version: '10.5.9'
mysql database: 'test-db'
mysql user: 'developer'
mysql password: 'QWERTY1234' #仮のもの(secretsを使った方がいい)
- name: test run js
run: |
npm ci
npm run start
なお、Github ActionsのNode.jsはデフォルトでv14.16.0なのでsetupする必要はないが、任意のバージョンで動かしたい場合は公式の記事を参考にするといい。
temporary.jsを書く
temporary.js
const mariadb = require("mariadb");
let pool = mariadb.createPool({
host: "localhost",
database: "test-db",
user: "developer",
password: "QWERTY1234", // 仮のもの(引数でもらった方がいい)
});
const postQuery = (conn) => {
return conn
.query("CREATE TABLE test_info (test_id VARCHAR(8) UNIQUE NOT NULL)")
.then((result) => {
console.log("🐔", result);
return conn.query(`INSERT INTO test_info (test_id) values("A0001")`);
})
.then((result) => {
console.log("🐴", result);
return conn.query(`SELECT * FROM test_info`);
})
.then((result) => {
console.log("🐮", result);
})
.catch((err) => {
console.error("🐯", err);
})
.finally(() => {
conn.end();
});
};
pool
.getConnection()
.then((conn) => {
return postQuery(conn);
})
.finally(() => {
pool.end();
});
動作確認
ここまで準備できたら、develop
ブランチを切ってpushすればActionsが動き出すはず。
補足
getong/mariadb-action@v1.1
でmariadbを立てる際、mysql user
とmysql password
を使わずmysql root password
を使う場合は、jsでmariadb.createPoolする時の引数は以下のようにすればいい。
let pool = mariadb.createPool({
host: "localhost",
database: "test-db",
user: "root",
password: "{root passowrdと同じもの}",
});
Discussion