我正在使用以下摘錄創建 CircleCI 組態檔:
executors:
ubuntu:
machine:
image: ubuntu-2004:202107-02
jobs:
build:
executor: ubuntu
environment:
PGUSER: postgres
DATABASE_URL: postgresql://postgres@localhost:5432/postgres
TERM: xterm
steps:
- checkout
- run: sudo apt-get update
- run: sudo apt-get install postgresql
- run: psql -V
- run: pg_isready
- run: |
psql \
-d $DATABASE_URL \
-c "CREATE TABLE test (name char(25));"
- run: |
psql \
-d $DATABASE_URL \
-c "INSERT INTO test VALUES ('John'), ('Joanna'), ('Jennifer');"
- run: |
psql \
-d $DATABASE_URL \
-c "SELECT * from test;"
之前和包括pg_isready退出之前的所有命令都沒有錯誤,但無論我嘗試什么,下一個命令 (CREATE TABLE) 都會掛起。CircleCI 日志顯示了這一點,沒有進一步的輸出:
#!/bin/bash -eo pipefail
psql \
-d $DATABASE_URL \
-c "CREATE TABLE test (name char(25));"
我正在使用從 CircleCI 檔案中獲取的代碼,并稍作修改:https ://circleci.com/docs/2.0/databases/
這種型別的作業對我來說是新的——我希望這是一個明顯缺失的命令——提前致謝!
uj5u.com熱心網友回復:
發布我的答案以防其他人遇到這個問題:我的具體問題是 psql 一直進入互動模式。這發生在任何 psql 命令上——不僅僅是密碼請求。這阻止了行程退出并繼續下一個。
我能夠通過將我的命令傳遞給 cat 來解決 CircleCI 的問題。例如:
- run:
name: Create test database
command: sudo -u postgres createdb testdb | cat
此外,關閉頁面選項也有效,但似乎更冗長: psql -P pager=off
如果您找到更好的方法,請添加到此執行緒!(我嘗試了環境變數,但無法讓它們堅持下去。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/314571.html
標籤:PostgreSQL 猛击 乌本图 圈子
上一篇:行程替換中的大括號擴展?
