|
| 1 | +package: |
| 2 | + name: pg_cron-16 |
| 3 | + version: "1.6.7" |
| 4 | + epoch: 1 |
| 5 | + description: PostgreSQL 16 extension for running jobs on a schedule using cron syntax |
| 6 | + copyright: |
| 7 | + - license: PostgreSQL |
| 8 | + |
| 9 | +var-transforms: |
| 10 | + - from: ${{package.name}} |
| 11 | + match: '^pg_cron-(\d+)$' |
| 12 | + replace: $1 |
| 13 | + to: pg-version |
| 14 | + |
| 15 | +environment: |
| 16 | + contents: |
| 17 | + packages: |
| 18 | + - build-base |
| 19 | + - busybox |
| 20 | + - clang-19 |
| 21 | + - llvm-19 |
| 22 | + - postgresql-${{vars.pg-version}}-dev |
| 23 | + |
| 24 | +pipeline: |
| 25 | + - uses: git-checkout |
| 26 | + with: |
| 27 | + repository: https://github.com/citusdata/pg_cron |
| 28 | + expected-commit: 465b38c737f584d520229f5a1d69d1d44649e4e5 |
| 29 | + tag: v${{package.version}} |
| 30 | + |
| 31 | + - uses: autoconf/make |
| 32 | + |
| 33 | + - uses: autoconf/make-install |
| 34 | + |
| 35 | + - uses: strip |
| 36 | + |
| 37 | +update: |
| 38 | + enabled: true |
| 39 | + github: |
| 40 | + identifier: citusdata/pg_cron |
| 41 | + strip-prefix: v |
| 42 | + use-tag: true |
| 43 | + |
| 44 | +test: |
| 45 | + environment: |
| 46 | + contents: |
| 47 | + packages: |
| 48 | + - postgresql-${{vars.pg-version}} |
| 49 | + - postgresql-${{vars.pg-version}}-client |
| 50 | + - shadow |
| 51 | + - sudo-rs |
| 52 | + - glibc-locales |
| 53 | + - wait-for-it |
| 54 | + environment: |
| 55 | + PGUSER: postgres |
| 56 | + PGPASSWORD: postgres |
| 57 | + pipeline: |
| 58 | + - name: Initialize PostgreSQL database |
| 59 | + runs: | |
| 60 | + useradd $PGUSER |
| 61 | + echo -n $PGPASSWORD 2>&1 > /tmp/pwfile |
| 62 | + sudo -u $PGUSER initdb --pwfile=/tmp/pwfile -D /tmp/pgdata --auth=md5 2>&1 |
| 63 | + - name: Test pg_cron extension |
| 64 | + runs: | |
| 65 | + sudo -u $PGUSER pg_ctl start -w -D /tmp/pgdata -o "--shared_preload_libraries=pg_cron --unix_socket_directories=/tmp" -l /tmp/pgdata/log 2>&1 |
| 66 | +
|
| 67 | + # Wait for PostgreSQL to be ready |
| 68 | + wait-for-it localhost:5432 -t 4 |
| 69 | +
|
| 70 | + # Test extension creation and basic functionality |
| 71 | + psql -h /tmp -d postgres -U postgres << 'EOF' |
| 72 | + -- Create the pg_cron extension |
| 73 | + CREATE EXTENSION pg_cron; |
| 74 | +
|
| 75 | + -- Verify extension is installed |
| 76 | + SELECT * FROM pg_extension WHERE extname = 'pg_cron'; |
| 77 | +
|
| 78 | + -- Test scheduling a simple job (but don't wait for execution) |
| 79 | + SELECT cron.schedule('test-job', '* * * * *', 'SELECT 1'); |
| 80 | +
|
| 81 | + -- Verify job was scheduled |
| 82 | + SELECT jobname, schedule, command FROM cron.job WHERE jobname = 'test-job'; |
| 83 | +
|
| 84 | + -- Test unscheduling the job |
| 85 | + SELECT cron.unschedule('test-job'); |
| 86 | +
|
| 87 | + -- Verify job was removed |
| 88 | + SELECT COUNT(*) FROM cron.job WHERE jobname = 'test-job'; |
| 89 | +
|
| 90 | + -- Test cron.job_run_details view exists |
| 91 | + SELECT COUNT(*) FROM cron.job_run_details; |
| 92 | + EOF |
| 93 | +
|
| 94 | + # Check for any errors in PostgreSQL logs |
| 95 | + if grep -E '(ERROR|FATAL)' /tmp/pgdata/log/postgresql.log 2>/dev/null | grep -Ev '(no COPY in progress|could not connect to|could not send|the database system is not yet accepting connections|database system is shutting|error reading result of streaming command|database system is starting up)'; then |
| 96 | + echo "PostgreSQL errors found in logs" |
| 97 | + exit 1 |
| 98 | + fi |
| 99 | +
|
| 100 | + # Cleanup: Stop PostgreSQL and kill any remaining processes |
| 101 | + pg_ctl stop -D /tmp/pgdata -m fast 2>/dev/null || true |
| 102 | + - uses: test/tw/ldd-check |
0 commit comments