Some checks failed
CI/CD Pipeline Simplified / test-backend (push) Failing after 23s
87 lines
No EOL
3.1 KiB
YAML
87 lines
No EOL
3.1 KiB
YAML
name: CI/CD Pipeline Simplified
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
env:
|
|
REGISTRY: ${{ secrets.REGISTRY_HOST }}
|
|
APP_NAME: ${{ secrets.APP_NAME }}
|
|
IMAGE_TAG: ${{ github.sha }}
|
|
RUN_ID: ${{ github.run_id }}
|
|
# Your other env vars...
|
|
|
|
jobs:
|
|
test-backend:
|
|
runs-on: [ci]
|
|
container:
|
|
image: git.gcdo.org/devteam/sharenet/ci-node-podman@sha256:eb0d942bd9a8cc69c63eb9ccf3877703898d676d0268cf379defdcda7e55f37f
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Debug container environment
|
|
run: |
|
|
echo "Current user: $(id)"
|
|
echo "Environment variables:"
|
|
env | sort
|
|
echo "Directory contents:"
|
|
ls -la /
|
|
ls -la /run/ || echo "No /run directory"
|
|
ls -la /run/user/ || echo "No /run/user directory"
|
|
echo "Testing Podman access:"
|
|
podman --version || echo "Podman not available"
|
|
which podman || echo "Podman not in PATH"
|
|
|
|
- name: Verify Podman access
|
|
run: |
|
|
echo "Checking Podman socket..."
|
|
ls -la /run/user/999/podman/
|
|
test -S /run/user/999/podman/podman.sock && echo "Socket exists" || echo "Socket missing"
|
|
podman --url unix:///run/user/999/podman/podman.sock info
|
|
podman --url unix:///run/user/999/podman/podman.sock ps
|
|
|
|
- name: Verify pinned digests
|
|
run: |
|
|
for v in RUST_IMG_DIGEST NODE_IMG_DIGEST POSTGRES_IMG_DIGEST; do
|
|
[ -n "${!v}" ] || { echo "Missing $v"; exit 1; }
|
|
echo "${!v}" | grep -Eq '^.+@sha256:[0-9a-f]{64}$' || { echo "$v must be a digest ref"; exit 1; }
|
|
done
|
|
|
|
- name: Create internal network
|
|
run: podman --url unix:///run/user/999/podman/podman.sock network create --internal integ-${{ env.RUN_ID }}
|
|
|
|
- name: Start PostgreSQL
|
|
run: |
|
|
podman --url unix:///run/user/999/podman/podman.sock run -d \
|
|
--name test-postgres-${{ env.RUN_ID }} \
|
|
--network integ-${{ env.RUN_ID }} \
|
|
-e POSTGRES_PASSWORD=password \
|
|
-e POSTGRES_USER=postgres \
|
|
-e POSTGRES_DB=sharenet_test \
|
|
"$POSTGRES_IMG_DIGEST"
|
|
|
|
- name: Wait for PostgreSQL
|
|
run: |
|
|
timeout 60 bash -c '
|
|
until podman --url unix:///run/user/999/podman/podman.sock exec test-postgres-${{ env.RUN_ID }} pg_isready -h 127.0.0.1 -p 5432 -U postgres; do
|
|
sleep 1
|
|
done
|
|
'
|
|
|
|
- name: Run backend tests
|
|
run: |
|
|
podman --url unix:///run/user/999/podman/podman.sock run --rm \
|
|
-v "$PWD":/workspace \
|
|
-w /workspace \
|
|
--network integ-${{ env.RUN_ID }} \
|
|
-e DATABASE_URL=postgres://postgres:password@test-postgres-${{ env.RUN_ID }}:5432/sharenet_test \
|
|
"$RUST_IMG_DIGEST" \
|
|
sh -c "cargo test --lib -- --test-threads=1"
|
|
|
|
- name: Cleanup
|
|
if: always()
|
|
run: |
|
|
podman --url unix:///run/user/999/podman/podman.sock rm -f test-postgres-${{ env.RUN_ID }} 2>/dev/null || true
|
|
podman --url unix:///run/user/999/podman/podman.sock network rm integ-${{ env.RUN_ID }} 2>/dev/null || true |