name: cryptopro-linux-csp on: push: branches: [main, develop] paths: - 'ops/cryptopro/linux-csp-service/**' - 'opt/cryptopro/downloads/**' - '.gitea/workflows/cryptopro-linux-csp.yml' pull_request: paths: - 'ops/cryptopro/linux-csp-service/**' - 'opt/cryptopro/downloads/**' - '.gitea/workflows/cryptopro-linux-csp.yml' env: IMAGE_NAME: cryptopro-linux-csp DOCKERFILE: ops/cryptopro/linux-csp-service/Dockerfile jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Build image (accept EULA explicitly) run: | docker build -t $IMAGE_NAME \ --build-arg CRYPTOPRO_ACCEPT_EULA=1 \ -f $DOCKERFILE . - name: Run container run: | docker run -d --rm --name $IMAGE_NAME -p 18080:8080 $IMAGE_NAME for i in {1..20}; do if curl -sf http://127.0.0.1:18080/health >/dev/null; then exit 0 fi sleep 3 done echo "Service failed to start" && exit 1 - name: Test endpoints run: | curl -sf http://127.0.0.1:18080/health curl -sf http://127.0.0.1:18080/license || true curl -sf -X POST http://127.0.0.1:18080/hash \ -H "Content-Type: application/json" \ -d '{"data_b64":"SGVsbG8="}' - name: Stop container if: always() run: docker rm -f $IMAGE_NAME || true