postgresql - github 操作 - 在 postgres 服务中运行 sql 脚本
问题描述
我想在 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';"
推荐阅读
- uniqueidentifier - LoRaWAN DevEUI、AppEUI 和 AppKey
- python-3.x - 简单的接收和返回Python服务器?
- reactjs - 登录时如何打开窗口并从提交中获得响应
- class - 如何在 CLIPS 中订购所有带有评分的电影?
- python - 查找具有已定义 x 值的最大值的函数
- azure - 使用插入在 Azure sql db 中出现严重错误
- android - textIsSelectable 不适用于 descendantFocusability=blocksDescendants
- php - 构建具有 WinSSL、NTLM、HTTP2、SSH2 和 IPv6 支持的工作 libcurl
- ruby-on-rails - 使用 Redis、Sidekiq、Heroku 和 Rails 5 了解后台工作者
- python-2.7 - 如何让游戏在 30 秒后停止?