[英]github actions - run sql script in postgres service
我想在 github 操作中的 postgres 服務中運行一個腳本,該操作創建一個表並添加一個擴展。 我怎樣才能做到這一點? 我需要制作 shell 腳本還是可以在 yaml 文件中做正確的事?
sql 腳本
drop database mydb;
create database mydb;
\c mydb;
CREATE EXTENSION "pgcrypto";
工作流程
name: API Integration Tests
on:
pull_request:
push:
branches:
-master
env:
DB_HOST: localhost
DB_USERNAME: postgres
DB_PASSWORD: rt
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x, 12.x, 13.x]
services:
postgres:
image: postgres:latest
env:
POSTGRES_DB: mydb
POSTGRES_PASSWORD: helloworl
POSTGRES_USER: postgres
ports:
- 5433:5432
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v1
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: npm install
run: npm ci
- name: npm test
run: npm run test
您可以添加使用 PSQL 命令的步驟。
這是創建數據庫的示例步驟:
- name: Create database
run: |
PGPASSWORD=helloworl psql -U postgres -tc "SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')"
順便說一句,我注意到您想要的下一個命令是: CREATE EXTENSION "pgcrypto";
,我認為這是因為您想生成 UUID(常見用例)。 請注意, get_random_uuid()
不需要這個,因為從 v13 開始,Postgres 原生支持它。
但是,如果你真的,真的,真的想添加 pgcrypto,你可以使用這個步驟:
- name: Enable pgcrypto extension
run: |
PGPASSWORD=helloworl psql -U postgres -tc "CREATE EXTENSION 'pgcrypto';"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.