Quiero ejecutar un script en el servicio de postgres en las acciones de github que crea una tabla y agrega una extensión. ¿Cómo puedo hacer eso? ¿Necesito hacer un script de shell o puedo hacerlo directamente en el archivo yaml?
script sql
drop database mydb; create database mydb; \c mydb; CREATE EXTENSION "pgcrypto";flujo de trabajo
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 testPuede agregar un paso que use comandos PSQL.
Aquí hay un paso de ejemplo que crea su base de datos:
- name: Create database run: | PGPASSWORD=helloworl psql -U postgres -tc "SELECT 'CREATE DATABASE mydb' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'mydb')" Por cierto, noto que el siguiente comando que querías era: CREATE EXTENSION "pgcrypto"; , lo que supongo es porque desea generar UUID (caso de uso común). Tenga en cuenta que no necesita esto para get_random_uuid() ya que es compatible de forma nativa en Postgres desde v13 en adelante.
Sin embargo, si realmente desea agregar pgcrypto, puede usar este paso:
- name: Enable pgcrypto extension run: | PGPASSWORD=helloworl psql -U postgres -tc "CREATE EXTENSION 'pgcrypto';"