From b331a4a7080be136ce2c29ff366a221bb3e0aceb Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 5 Mar 2025 22:17:16 +0400 Subject: [PATCH 1/6] fix: breaking changes check --- .github/workflows/check-api-for-breaking-changes.yml | 3 +++ backend/src/server/routes/v1/slack-router.ts | 2 ++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/check-api-for-breaking-changes.yml b/.github/workflows/check-api-for-breaking-changes.yml index f0dcfc8cb..48a58a497 100644 --- a/.github/workflows/check-api-for-breaking-changes.yml +++ b/.github/workflows/check-api-for-breaking-changes.yml @@ -64,6 +64,9 @@ jobs: if [ $HEALTHY -ne 1 ]; then echo "Container did not become healthy in time" + + echo "Container logs:" + docker logs infisical-api exit 1 fi - name: Install openapi-diff diff --git a/backend/src/server/routes/v1/slack-router.ts b/backend/src/server/routes/v1/slack-router.ts index 94276a13c..a351041a2 100644 --- a/backend/src/server/routes/v1/slack-router.ts +++ b/backend/src/server/routes/v1/slack-router.ts @@ -19,6 +19,8 @@ const sanitizedSlackIntegrationSchema = WorkflowIntegrationsSchema.pick({ }) ); +// test change + export const registerSlackRouter = async (server: FastifyZodProvider) => { const appCfg = getConfig(); From f98f212ecfff4b93fa07a4c6e0cb9115b57f79dd Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 5 Mar 2025 22:23:49 +0400 Subject: [PATCH 2/6] Update check-api-for-breaking-changes.yml --- .../check-api-for-breaking-changes.yml | 53 +++++++++++++------ backend/src/server/routes/v1/slack-router.ts | 2 +- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/.github/workflows/check-api-for-breaking-changes.yml b/.github/workflows/check-api-for-breaking-changes.yml index 48a58a497..f42c10778 100644 --- a/.github/workflows/check-api-for-breaking-changes.yml +++ b/.github/workflows/check-api-for-breaking-changes.yml @@ -35,7 +35,20 @@ jobs: echo "SECRET_SCANNING_GIT_APP_ID=793712" >> .env echo "SECRET_SCANNING_PRIVATE_KEY=some-random" >> .env echo "SECRET_SCANNING_WEBHOOK_SECRET=some-random" >> .env - docker run --name infisical-api -d -p 4000:4000 -e DB_CONNECTION_URI=$DB_CONNECTION_URI -e REDIS_URL=$REDIS_URL -e JWT_AUTH_SECRET=$JWT_AUTH_SECRET -e ENCRYPTION_KEY=$ENCRYPTION_KEY --env-file .env --entrypoint '/bin/sh' infisical-api + + echo "Examining built image:" + docker image inspect infisical-api | grep -A 5 "Entrypoint" + + docker run --name infisical-api -d -p 4000:4000 \ + -e DB_CONNECTION_URI=$DB_CONNECTION_URI \ + -e REDIS_URL=$REDIS_URL \ + -e JWT_AUTH_SECRET=$JWT_AUTH_SECRET \ + -e ENCRYPTION_KEY=$ENCRYPTION_KEY \ + --env-file .env \ + infisical-api + + echo "Container status right after creation:" + docker ps -a | grep infisical-api env: REDIS_URL: redis://172.17.0.1:6379 DB_CONNECTION_URI: postgres://infisical:infisical@172.17.0.1:5432/infisical?sslmode=disable @@ -49,24 +62,33 @@ jobs: SECONDS=0 HEALTHY=0 while [ $SECONDS -lt 60 ]; do - if docker ps | grep infisical-api | grep -q healthy; then - echo "Container is healthy." - HEALTHY=1 + # Check if container is running + if docker ps | grep infisical-api; then + # Try to access the API endpoint + if curl -s -f http://localhost:4000/api/health > /dev/null 2>&1; then + echo "API endpoint is responding. Container seems healthy." + HEALTHY=1 + break + fi + else + echo "Container is not running!" + docker ps -a | grep infisical-api break fi + echo "Waiting for container to be healthy... ($SECONDS seconds elapsed)" - - docker logs infisical-api - - sleep 2 - SECONDS=$((SECONDS+2)) + sleep 5 + SECONDS=$((SECONDS+5)) done - + if [ $HEALTHY -ne 1 ]; then echo "Container did not become healthy in time" - - echo "Container logs:" - docker logs infisical-api + echo "Container status:" + docker ps -a | grep infisical-api + echo "Container logs (if any):" + docker logs infisical-api || echo "No logs available" + echo "Container inspection:" + docker inspect infisical-api | grep -A 5 "State" exit 1 fi - name: Install openapi-diff @@ -74,7 +96,8 @@ jobs: - name: Running OpenAPI Spec diff action run: oasdiff breaking https://app.infisical.com/api/docs/json http://localhost:4000/api/docs/json --fail-on ERR - name: cleanup + if: always() run: | docker compose -f "docker-compose.dev.yml" down - docker stop infisical-api - docker remove infisical-api + docker stop infisical-api || true + docker rm infisical-api || true \ No newline at end of file diff --git a/backend/src/server/routes/v1/slack-router.ts b/backend/src/server/routes/v1/slack-router.ts index a351041a2..8ee1846c9 100644 --- a/backend/src/server/routes/v1/slack-router.ts +++ b/backend/src/server/routes/v1/slack-router.ts @@ -19,7 +19,7 @@ const sanitizedSlackIntegrationSchema = WorkflowIntegrationsSchema.pick({ }) ); -// test change +// test change // export const registerSlackRouter = async (server: FastifyZodProvider) => { const appCfg = getConfig(); From b5575f4c20103bac1d0d06c178de3563e61618f6 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 5 Mar 2025 22:31:01 +0400 Subject: [PATCH 3/6] fix api endpoint --- .github/workflows/check-api-for-breaking-changes.yml | 2 +- backend/src/server/routes/v1/slack-router.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-api-for-breaking-changes.yml b/.github/workflows/check-api-for-breaking-changes.yml index f42c10778..5d16a513c 100644 --- a/.github/workflows/check-api-for-breaking-changes.yml +++ b/.github/workflows/check-api-for-breaking-changes.yml @@ -65,7 +65,7 @@ jobs: # Check if container is running if docker ps | grep infisical-api; then # Try to access the API endpoint - if curl -s -f http://localhost:4000/api/health > /dev/null 2>&1; then + if curl -s -f http://localhost:4000/api/status > /dev/null 2>&1; then echo "API endpoint is responding. Container seems healthy." HEALTHY=1 break diff --git a/backend/src/server/routes/v1/slack-router.ts b/backend/src/server/routes/v1/slack-router.ts index 8ee1846c9..375c9df4f 100644 --- a/backend/src/server/routes/v1/slack-router.ts +++ b/backend/src/server/routes/v1/slack-router.ts @@ -19,7 +19,7 @@ const sanitizedSlackIntegrationSchema = WorkflowIntegrationsSchema.pick({ }) ); -// test change // +// test change // // export const registerSlackRouter = async (server: FastifyZodProvider) => { const appCfg = getConfig(); From a0a579834c6bf50c53e4ad74b9927ff7ec2f2683 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 5 Mar 2025 22:36:43 +0400 Subject: [PATCH 4/6] fix: check docs endpoint instead of status --- .github/workflows/check-api-for-breaking-changes.yml | 2 +- backend/src/server/routes/v1/slack-router.ts | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/check-api-for-breaking-changes.yml b/.github/workflows/check-api-for-breaking-changes.yml index 5d16a513c..a4bdeb29e 100644 --- a/.github/workflows/check-api-for-breaking-changes.yml +++ b/.github/workflows/check-api-for-breaking-changes.yml @@ -65,7 +65,7 @@ jobs: # Check if container is running if docker ps | grep infisical-api; then # Try to access the API endpoint - if curl -s -f http://localhost:4000/api/status > /dev/null 2>&1; then + if curl -s -f http://localhost:4000/api/docs/json > /dev/null 2>&1; then echo "API endpoint is responding. Container seems healthy." HEALTHY=1 break diff --git a/backend/src/server/routes/v1/slack-router.ts b/backend/src/server/routes/v1/slack-router.ts index 375c9df4f..94276a13c 100644 --- a/backend/src/server/routes/v1/slack-router.ts +++ b/backend/src/server/routes/v1/slack-router.ts @@ -19,8 +19,6 @@ const sanitizedSlackIntegrationSchema = WorkflowIntegrationsSchema.pick({ }) ); -// test change // // - export const registerSlackRouter = async (server: FastifyZodProvider) => { const appCfg = getConfig(); From 94fe5770461d577e8a8b64d27a580e544b493816 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 5 Mar 2025 22:38:35 +0400 Subject: [PATCH 5/6] chore: test breaking change --- backend/src/server/routes/v3/secret-router.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/server/routes/v3/secret-router.ts b/backend/src/server/routes/v3/secret-router.ts index a5dc39485..95cbd4772 100644 --- a/backend/src/server/routes/v3/secret-router.ts +++ b/backend/src/server/routes/v3/secret-router.ts @@ -382,7 +382,7 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { server.route({ method: "GET", - url: "/raw/:secretName", + url: "/raw/:secretName/:id", config: { rateLimit: secretsLimit }, @@ -394,9 +394,11 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { } ], params: z.object({ - secretName: z.string().trim().describe(RAW_SECRETS.GET.secretName) + secretName: z.string().trim().describe(RAW_SECRETS.GET.secretName), + id: z.string().trim() }), querystring: z.object({ + testRequiredField: z.string().describe("test required field"), workspaceId: z.string().trim().optional().describe(RAW_SECRETS.GET.workspaceId), workspaceSlug: z.string().trim().optional().describe(RAW_SECRETS.GET.workspaceSlug), environment: z.string().trim().optional().describe(RAW_SECRETS.GET.environment), From 85c5d69c36ef3692f2db9f075baf2c7bc07b9ba1 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 5 Mar 2025 22:42:29 +0400 Subject: [PATCH 6/6] chore: remove breaking change test --- backend/src/server/routes/v3/secret-router.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/backend/src/server/routes/v3/secret-router.ts b/backend/src/server/routes/v3/secret-router.ts index 95cbd4772..a5dc39485 100644 --- a/backend/src/server/routes/v3/secret-router.ts +++ b/backend/src/server/routes/v3/secret-router.ts @@ -382,7 +382,7 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { server.route({ method: "GET", - url: "/raw/:secretName/:id", + url: "/raw/:secretName", config: { rateLimit: secretsLimit }, @@ -394,11 +394,9 @@ export const registerSecretRouter = async (server: FastifyZodProvider) => { } ], params: z.object({ - secretName: z.string().trim().describe(RAW_SECRETS.GET.secretName), - id: z.string().trim() + secretName: z.string().trim().describe(RAW_SECRETS.GET.secretName) }), querystring: z.object({ - testRequiredField: z.string().describe("test required field"), workspaceId: z.string().trim().optional().describe(RAW_SECRETS.GET.workspaceId), workspaceSlug: z.string().trim().optional().describe(RAW_SECRETS.GET.workspaceSlug), environment: z.string().trim().optional().describe(RAW_SECRETS.GET.environment),