PostgreSQL: 4. GitHub Actions
Ši dokumentacija yra GitHub Actions ir GitLab CI vadovo dalis. Visą vadovą rasite čia: Paleiskite tikrą PostgreSQL paslaugą iš savo GitHub Actions arba GitLab CI pipeline, vykdykite testus ir automatiškai viską uždarykite.
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo visiškai administruojamą PostgreSQL cloud paslaugą, sukurtą patikimumui ir greičiui:
- Neribotas prisijungimų ir duomenų perdavimų skaičius, užtikrinantis sklandų mastelį.
- Įtraukta PgAdmin žiniatinklio sąsaja patogiam duomenų bazės valdymui.
- Populiarios plėtiniai įtraukti, tokie kaip
PostGIS,TimescaleDBirPgVector.- Paprasti, vieno paspaudimo atnaujinimai užtikrina jūsų duomenų bazės saugumą ir naujumą.
- Aukšta sparta ir stipri apsauga privačioje, dedikuotoje infrastruktūroje.
Pradėti naudotis Stackhero PostgreSQL cloud hosting galite vos per kelias minutes. Mėgaukitės patikima duomenų bazės patirtimi ir sutaupykite brangaus laiko duomenų valdymui.
Norėdami pradėti, išsaugokite žemiau pateiktą turinį kaip .github/workflows/ci.yml. Nuo šiol kiekvienas push ir pull request vykdys testus prieš tikrą PostgreSQL instanciją.
name: CI su PostgreSQL
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
env:
STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
STACK_NAME: ci-postgresql-${{ github.run_id }}-${{ github.run_attempt }}
INSTANCE: "10G" # Pakeiskite jei reikia (žr. 3 žingsnį)
REGION: europe
steps:
- uses: actions/checkout@v4
- name: Įdiegti Stackhero CLI ir klientą
run: |
curl -fsSL https://www.stackhero.io/install.sh | sh
apt-get update && apt-get install -y --no-install-recommends jq curl postgresql-client
- name: Sukurti PostgreSQL paslaugą
run: |
set -euo pipefail
STACK_ID=$(stackhero --format=script stack-create --name="$STACK_NAME")
echo "STACK_ID=$STACK_ID" >> "$GITHUB_ENV"
SERVICE_ID=$(stackhero --format=script service-add \
--stack="$STACK_ID" \
--service-store="postgresql" \
--instance="$INSTANCE" \
--region="$REGION")
echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
stackhero service-wait-for --service="$SERVICE_ID"
- name: Vykdyti testus prieš PostgreSQL
run: |
set -euo pipefail
config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
host=$(echo "$config" | jq -r '.configuration.domain')
password=$(echo "$config" | jq -r '.configuration.password')
# Run a trivial query against the database.
PGPASSWORD="$password" psql "host=$host port=5432 user=admin dbname=admin sslmode=require" -c "SELECT 1;"
echo "✅ PostgreSQL pasiekiamas iš CI."
# Čia galite paleisti savo testų rinkinį naudodami aukščiau gautus prisijungimo duomenis ...
- name: Išvalymas (visada, net jei įvyksta klaida)
if: always()
run: |
if [ -n "${SERVICE_ID:-}" ]; then
stackhero service-delete --service="$SERVICE_ID" --confirm
stackhero service-wait-for --service="$SERVICE_ID"
fi
if [ -n "${STACK_ID:-}" ]; then
stackhero stack-delete --stack="$STACK_ID" --confirm
fi
Teardown žingsnis naudoja if: always(), todėl jis bus vykdomas visada, užtikrinant, kad jūsų PostgreSQL instancija bus ištrinta ir jums nebus skaičiuojami mokesčiai už nenaudojamus resursus.