Initial scaffolding for standalone pgAdmin implementation #2266
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
pull_request: | |
branches: | |
- master | |
push: | |
branches: | |
- master | |
jobs: | |
go-test: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: 1.x | |
- run: make check | |
- run: make check-generate | |
- name: Ensure go.mod is tidy | |
run: go mod tidy && git diff --exit-code -- go.mod | |
kubernetes-api: | |
runs-on: ubuntu-20.04 | |
needs: [go-test] | |
strategy: | |
fail-fast: false | |
matrix: | |
kubernetes: ['default'] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: { go-version: 1.x } | |
- run: go mod download | |
- run: ENVTEST_K8S_VERSION="${KUBERNETES#default}" make check-envtest | |
env: | |
KUBERNETES: "${{ matrix.kubernetes }}" | |
GO_TEST: go test --coverprofile 'envtest.coverage' --coverpkg ./internal/... | |
# Upload coverage to GitHub | |
- run: gzip envtest.coverage | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "kubernetes-api=${{ matrix.kubernetes }}" | |
path: envtest.coverage.gz | |
retention-days: 1 | |
kubernetes-k3d: | |
if: "${{ github.repository == 'CrunchyData/postgres-operator' }}" | |
runs-on: ubuntu-20.04 | |
needs: [go-test] | |
strategy: | |
fail-fast: false | |
matrix: | |
kubernetes: [v1.28, v1.25] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: { go-version: 1.x } | |
- name: Start k3s | |
uses: ./.github/actions/k3d | |
with: | |
k3s-channel: "${{ matrix.kubernetes }}" | |
prefetch-images: | | |
registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.47-0 | |
registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.19-4 | |
registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0 | |
- run: make createnamespaces check-envtest-existing | |
env: | |
PGO_TEST_TIMEOUT_SCALE: 1.2 | |
GO_TEST: go test --coverprofile 'envtest-existing.coverage' --coverpkg ./internal/... | |
# Upload coverage to GitHub | |
- run: gzip envtest-existing.coverage | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "kubernetes-k3d=${{ matrix.kubernetes }}" | |
path: envtest-existing.coverage.gz | |
retention-days: 1 | |
kuttl-k3d: | |
runs-on: ubuntu-20.04 | |
needs: [go-test] | |
strategy: | |
fail-fast: false | |
matrix: | |
kubernetes: [v1.28, v1.27, v1.26, v1.25] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: { go-version: 1.x } | |
- name: Start k3s | |
uses: ./.github/actions/k3d | |
with: | |
k3s-channel: "${{ matrix.kubernetes }}" | |
prefetch-images: | | |
registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-17 | |
registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.47-0 | |
registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.19-4 | |
registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:latest | |
registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:latest | |
registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0 | |
registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-14.9-3.1-0 | |
registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.4-0 | |
registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-15.4-3.3-0 | |
- run: go mod download | |
- name: Build executable | |
run: PGO_VERSION='${{ github.sha }}' make build-postgres-operator | |
- name: Get pgMonitor files. | |
run: make get-pgmonitor | |
env: | |
PGMONITOR_DIR: "${{ github.workspace }}/hack/tools/pgmonitor" | |
QUERIES_CONFIG_DIR: "${{ github.workspace }}/hack/tools/queries" | |
# Start a Docker container with the working directory mounted. | |
- name: Start PGO | |
run: | | |
kubectl apply --server-side -k ./config/namespace | |
kubectl apply --server-side -k ./config/dev | |
hack/create-kubeconfig.sh postgres-operator pgo | |
docker run --detach --network host --read-only \ | |
--volume "$(pwd):/mnt" --workdir '/mnt' --env 'PATH=/mnt/bin' \ | |
--env 'QUERIES_CONFIG_DIR=/mnt/hack/tools/queries' \ | |
--env 'KUBECONFIG=hack/.kube/postgres-operator/pgo' \ | |
--env 'RELATED_IMAGE_PGADMIN=registry.developers.crunchydata.com/crunchydata/crunchy-pgadmin4:ubi8-4.30-17' \ | |
--env 'RELATED_IMAGE_PGBACKREST=registry.developers.crunchydata.com/crunchydata/crunchy-pgbackrest:ubi8-2.47-0' \ | |
--env 'RELATED_IMAGE_PGBOUNCER=registry.developers.crunchydata.com/crunchydata/crunchy-pgbouncer:ubi8-1.19-4' \ | |
--env 'RELATED_IMAGE_PGEXPORTER=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-exporter:latest' \ | |
--env 'RELATED_IMAGE_PGUPGRADE=registry.developers.crunchydata.com/crunchydata/crunchy-upgrade:latest' \ | |
--env 'RELATED_IMAGE_POSTGRES_14=registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0' \ | |
--env 'RELATED_IMAGE_POSTGRES_14_GIS_3.1=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-14.9-3.1-0' \ | |
--env 'RELATED_IMAGE_POSTGRES_15=registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-15.4-0' \ | |
--env 'RELATED_IMAGE_POSTGRES_15_GIS_3.3=registry.developers.crunchydata.com/crunchydata/crunchy-postgres-gis:ubi8-15.4-3.3-0' \ | |
--env 'PGO_FEATURE_GATES=TablespaceVolumes=true' \ | |
--name 'postgres-operator' ubuntu \ | |
postgres-operator | |
- name: Install kuttl | |
run: | | |
curl -Lo /usr/local/bin/kubectl-kuttl https://github.com/kudobuilder/kuttl/releases/download/v0.13.0/kubectl-kuttl_0.13.0_linux_x86_64 | |
chmod +x /usr/local/bin/kubectl-kuttl | |
- run: make generate-kuttl | |
env: | |
KUTTL_PG_UPGRADE_FROM_VERSION: '14' | |
KUTTL_PG_UPGRADE_TO_VERSION: '15' | |
KUTTL_PG_VERSION: '14' | |
KUTTL_POSTGIS_VERSION: '3.1' | |
KUTTL_PSQL_IMAGE: 'registry.developers.crunchydata.com/crunchydata/crunchy-postgres:ubi8-14.9-0' | |
- run: | | |
make check-kuttl && exit | |
failed=$? | |
echo '::group::PGO logs'; docker logs 'postgres-operator'; echo '::endgroup::' | |
exit $failed | |
env: | |
KUTTL_TEST: kubectl-kuttl test | |
- name: Stop PGO | |
run: docker stop 'postgres-operator' || true | |
coverage-report: | |
if: ${{ success() || contains(needs.*.result, 'success') }} | |
runs-on: ubuntu-latest | |
needs: | |
- kubernetes-api | |
- kubernetes-k3d | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-go@v3 | |
with: { go-version: 1.x } | |
- uses: actions/download-artifact@v3 | |
with: { path: download } | |
# Combine the coverage profiles by taking the mode line from any one file | |
# and the data from all files. Write a list of functions with less than | |
# 100% coverage to the job summary, and upload a complete HTML report. | |
- name: Generate report | |
run: | | |
gunzip --keep download/*/*.gz | |
( sed -e '1q' download/*/*.coverage | |
tail -qn +2 download/*/*.coverage ) > total.coverage | |
go tool cover --func total.coverage -o total-coverage.txt | |
go tool cover --html total.coverage -o total-coverage.html | |
awk < total-coverage.txt ' | |
END { print "<details><summary>Total Coverage: <code>" $3 " " $2 "</code></summary>" } | |
' >> "${GITHUB_STEP_SUMMARY}" | |
sed < total-coverage.txt -e '/100.0%/d' -e "s,$(go list -m)/,," | column -t | awk ' | |
NR == 1 { print "\n\n```" } { print } END { if (NR > 0) print "```\n\n"; print "</details>" } | |
' >> "${GITHUB_STEP_SUMMARY}" | |
# Upload coverage to GitHub | |
- run: gzip total-coverage.html | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: coverage-report | |
path: total-coverage.html.gz | |
retention-days: 15 |