-
Notifications
You must be signed in to change notification settings - Fork 3
130 lines (115 loc) · 4.88 KB
/
cloudberry-ci.yml
File metadata and controls
130 lines (115 loc) · 4.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Cloudberry PL/Java CI
on:
pull_request:
branches: [ main ]
types: [opened, synchronize, reopened, edited]
push:
branches: [ main ]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
CLOUDBERRY_REPO: apache/cloudberry
CLOUDBERRY_REF: main
COMPOSE_FILE: pljava/concourse/docker/ubuntu22.04/docker-compose.yml
CONTAINER_NAME: cbdb-pljava
jobs:
ci:
name: Build + Smoke (Docker)
runs-on: ubuntu-latest
timeout-minutes: 180
steps:
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet || true
sudo rm -rf /opt/ghc || true
sudo rm -rf /usr/local/share/boost || true
sudo rm -rf /usr/local/lib/android || true
sudo rm -rf /opt/hostedtoolcache || true
sudo docker system prune -af || true
df -h
- name: Checkout PL/Java (this repo)
uses: actions/checkout@v4
with:
fetch-depth: 1
path: pljava
- name: Checkout Cloudberry source
uses: actions/checkout@v4
with:
repository: ${{ env.CLOUDBERRY_REPO }}
ref: ${{ env.CLOUDBERRY_REF }}
path: cloudberry
submodules: true
- name: Build and start dev container
run: |
docker compose -f ${{ env.COMPOSE_FILE }} down -v || true
docker compose -f ${{ env.COMPOSE_FILE }} up -d
docker exec ${{ env.CONTAINER_NAME }} sudo find /home/gpadmin/workspace/cloudberry -path /home/gpadmin/workspace/cloudberry/.git -prune -o -exec chown gpadmin:gpadmin {} +
docker exec ${{ env.CONTAINER_NAME }} sudo find /home/gpadmin/workspace/pljava -path /home/gpadmin/workspace/pljava/.git -prune -o -exec chown gpadmin:gpadmin {} +
- name: Build Cloudberry + PL/Java and run tests (installcheck)
run: |
docker exec ${{ env.CONTAINER_NAME }} bash -lc "bash /home/gpadmin/workspace/pljava/concourse/docker/ubuntu22.04/scripts/entrypoint.sh"
- name: Collect logs and results
if: always()
run: |
mkdir -p artifacts
docker logs ${{ env.CONTAINER_NAME }} > artifacts/cbdb-pljava.log 2>&1 || true
docker exec ${{ env.CONTAINER_NAME }} bash -lc "source /usr/local/cloudberry-db/cloudberry-env.sh && source /home/gpadmin/workspace/cloudberry/gpAux/gpdemo/gpdemo-env.sh && gpstate -s" > artifacts/gpstate.txt 2>&1 || true
docker exec ${{ env.CONTAINER_NAME }} bash -lc "source /usr/local/cloudberry-db/cloudberry-env.sh && source /home/gpadmin/workspace/cloudberry/gpAux/gpdemo/gpdemo-env.sh && psql -d template1 -c 'select version()'" > artifacts/version.txt 2>&1 || true
# Regression outputs (if present)
if [ -d pljava/gpdb/tests/results ]; then
tar czf artifacts/pljava-regress-results.tar.gz -C pljava gpdb/tests/results || true
fi
ls -la pljava/gpdb/tests/regression.* 2>/dev/null || true
cp -v pljava/gpdb/tests/regression.* artifacts/ 2>/dev/null || true
# Cloudberry demo cluster logs (if present)
if [ -d cloudberry/gpAux/gpdemo ]; then
find cloudberry/gpAux/gpdemo -maxdepth 4 -type d \( -name pg_log -o -name log \) -print 2>/dev/null || true
tar czf artifacts/cloudberry-demo-logs.tar.gz -C cloudberry gpAux/gpdemo 2>/dev/null || true
fi
- name: Summarize installcheck
if: always()
run: |
LOG="pljava/gpdb/tests/results/installcheck.log"
{
echo "## PL/Java installcheck"
if [ -f "$LOG" ]; then
echo ""
echo "- Log: \`$LOG\`"
echo "- Test results dir: \`pljava/gpdb/tests/results/\`"
echo ""
TOTAL=$(grep -E "^[[:space:]]*test .* \\.\\.\\." -c "$LOG" || true)
OK=$(grep -E "^[[:space:]]*test .* \\.\\.\\. ok" -c "$LOG" || true)
FAILED=$(grep -E "^[[:space:]]*test .* \\.\\.\\. FAILED" -c "$LOG" || true)
echo "- Total: $TOTAL"
echo "- ok: $OK"
echo "- FAILED: $FAILED"
echo ""
echo "Last 50 lines:"
echo ""
echo '```'
tail -n 50 "$LOG" || true
echo '```'
else
echo ""
echo "- No \`installcheck.log\` found (build may have failed early)."
fi
} >> "$GITHUB_STEP_SUMMARY"
- name: Upload artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: logs-and-results
path: |
artifacts/**
pljava/gpdb/tests/results/**
pljava/gpdb/tests/regression.*
if-no-files-found: ignore
retention-days: 7
- name: Cleanup
if: always()
run: |
docker compose -f ${{ env.COMPOSE_FILE }} down -v || true