dispatch-workflow.sh: piiloriippuvuudet pois — GITEA_API_URL ja GITEA_TOKEN nyt explicit parametreina
CI / load-config (push) Successful in 12s
ci-bats Bats tests
ci-cucumber Cucumber tests FAILED
CI / feature (push) Failing after 1m8s
CI / main (push) Has been skipped

This commit is contained in:
moilanik
2026-06-13 16:01:45 +03:00
parent a7b5917309
commit 957bf150a6
4 changed files with 33 additions and 30 deletions
+7 -4
View File
@@ -67,7 +67,7 @@ Dispatchaa workflow'n toisessa repossa ja pollaa sen valmistumista synkronisesti
### Rajapinta
```bash
dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> [timeout_minutes]
dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> <gitea_api_url> <gitea_token> [timeout_minutes]
```
| Parametri | Pakollinen | Kuvaus |
@@ -76,6 +76,8 @@ dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> [timeout_
| `workflow_file` | Kyllä | Workflow-tiedoston nimi (esim. `test.yml`) |
| `ref` | Kyllä | Branch |
| `inputs_json` | Kyllä | JSON-objekti input-parametreina |
| `gitea_api_url` | Kyllä | Gitean API-URL (esim. `https://gitea.example.com`) |
| `gitea_token` | Kyllä | Gitea API -token |
| `timeout_minutes` | Ei | Oletus: 360 (6 tuntia) |
### Toiminta
@@ -90,7 +92,8 @@ dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> [timeout_
```bash
dispatch-workflow.sh "tests/integration" "test.yml" "main" \
'{"version":"1.2.3","tags":"@smoke","root_commit":"abc123","root_repo":"services/temperature-store"}'
'{"version":"1.2.3","tags":"@smoke","root_commit":"abc123","root_repo":"services/temperature-store"}' \
"https://gitea.example.com" "gtp_abc123"
```
---
@@ -181,8 +184,8 @@ Skriptit lukevat nämä Gitea Actionsin ympäristömuuttujat:
| Muuttuja | Lähde | Käyttäjä |
|----------|-------|----------|
| `GITEA_API_URL` | Org variable | Kaikki skriptit |
| `GITEA_TOKEN` | Org secret | `report-status.sh`, `dispatch-workflow.sh`, `tag-commit.sh` |
| `GITEA_API_URL` | Org variable | `report-status.sh` |
| `GITEA_TOKEN` | Org secret | `report-status.sh`, `tag-commit.sh` |
| `MINIO_BASE_URL` | Org variable | `push-reports.sh` |
| `MINIO_ACCESS_KEY` | Org secret | `push-reports.sh` |
| `MINIO_SECRET_KEY` | Org secret | `push-reports.sh` |
+5 -2
View File
@@ -54,7 +54,7 @@ Dispatchaa workflow toisessa repossa ja pollaa sen valmistumista synkronisesti.
## Rajapinta
```bash
dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> [timeout_minutes]
dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> <gitea_api_url> <gitea_token> [timeout_minutes]
```
| Parametri | Pakollinen | Kuvaus |
@@ -63,6 +63,8 @@ dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> [timeout_
| `workflow_file` | Kyllä | Workflow-tiedosto (esim. `test.yml`) |
| `ref` | Kyllä | Branch |
| `inputs_json` | Kyllä | JSON-objekti input-parametreina |
| `gitea_api_url` | Kyllä | Gitean API-URL |
| `gitea_token` | Kyllä | Gitea API -token |
| `timeout_minutes` | Ei | Oletus: 360 |
## API-kutsut
@@ -77,7 +79,8 @@ dispatch-workflow.sh <target_repo> <workflow_file> <ref> <inputs_json> [timeout_
```bash
dispatch-workflow.sh "tests/integration" "test.yml" "main" \
'{"version":"1.2.3","tags":"@smoke","root_commit":"abc123","root_repo":"services/temperature-store"}'
'{"version":"1.2.3","tags":"@smoke","root_commit":"abc123","root_repo":"services/temperature-store"}' \
"https://gitea.example.com" "gtp_abc123"
```
## Verifiointi
+5 -4
View File
@@ -1,20 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail
[ -z "${GITEA_API_URL:-}" ] && echo "ERROR: GITEA_API_URL is not set" >&2 && exit 1
[ -z "${GITEA_TOKEN:-}" ] && echo "ERROR: GITEA_TOKEN is not set" >&2 && exit 1
TARGET_REPO="${1:-}"
WORKFLOW_FILE="${2:-}"
REF="${3:-}"
INPUTS_JSON="${4:-}"
TIMEOUT_MINUTES="${5:-360}"
GITEA_API_URL="${5:-}"
GITEA_TOKEN="${6:-}"
TIMEOUT_MINUTES="${7:-360}"
POLL_INTERVAL="${DISPATCH_POLL_INTERVAL:-10}"
[ -z "$TARGET_REPO" ] && echo "ERROR: target_repo argument is required" >&2 && exit 1
[ -z "$WORKFLOW_FILE" ] && echo "ERROR: workflow_file argument is required" >&2 && exit 1
[ -z "$REF" ] && echo "ERROR: ref argument is required" >&2 && exit 1
[ -z "$INPUTS_JSON" ] && echo "ERROR: inputs_json argument is required" >&2 && exit 1
[ -z "$GITEA_API_URL" ] && echo "ERROR: gitea_api_url argument is required" >&2 && exit 1
[ -z "$GITEA_TOKEN" ] && echo "ERROR: gitea_token argument is required" >&2 && exit 1
DISPATCH_URL="$GITEA_API_URL/api/v1/repos/$TARGET_REPO/actions/workflows/$WORKFLOW_FILE/dispatches"
DISPATCH_BODY=$(jq -nc --arg ref "$REF" --argjson inputs "$INPUTS_JSON" '{ref: $ref, inputs: $inputs}')
+16 -20
View File
@@ -2,8 +2,6 @@
setup() {
source tests/helpers/mock-api.sh
export GITEA_API_URL="http://localhost:18080"
export GITEA_TOKEN="test-token-abc123"
export DISPATCH_POLL_INTERVAL="0.1"
}
@@ -21,7 +19,7 @@ teardown() {
{"code":200,"body":{"id":1,"status":"completed","conclusion":"success"}}
]'
mock_start
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}'
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 0 ]
}
@@ -33,7 +31,7 @@ teardown() {
{"code":200,"body":{"id":1,"status":"completed","conclusion":"failure"}}
]'
mock_start
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}'
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 1 ]
}
@@ -45,7 +43,7 @@ teardown() {
{"code":200,"body":{"id":1,"status":"completed","conclusion":"cancelled"}}
]'
mock_start
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}'
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 1 ]
}
@@ -63,7 +61,7 @@ teardown() {
{"code":200,"body":{"id":1,"status":"running"}}
]'
mock_start
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "0.001"
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "http://localhost:18080" "test-token-abc123" "0.001"
[ "$status" -eq 124 ]
}
@@ -72,7 +70,7 @@ teardown() {
{"code":500}
]'
mock_start
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}'
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 1 ]
}
@@ -83,7 +81,7 @@ teardown() {
{"code":200,"body":{"id":1,"status":"completed","conclusion":"success"}}
]'
mock_start
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}'
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 0 ]
path=$(mock_get_first_request_path)
[[ "$path" == *"/api/v1/repos/test-owner/test-repo/actions/workflows/test.yml/dispatches"* ]]
@@ -95,36 +93,34 @@ teardown() {
[[ "$body" == *'"version":"1.2.3"'* ]]
}
@test "missing GITEA_API_URL → exit 1 with error message" {
unset GITEA_API_URL
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}'
@test "missing gitea_api_url argument → exit 1 with error message" {
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "" "test-token-abc123"
[ "$status" -eq 1 ]
[[ "$output" == *"ERROR"* || "$output" == *"GITEA_API_URL"* ]]
[[ "$output" == *"ERROR"* || "$output" == *"gitea_api_url"* ]]
}
@test "missing GITEA_TOKEN → exit 1 with error message" {
unset GITEA_TOKEN
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}'
@test "missing gitea_token argument → exit 1 with error message" {
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" '{"version":"1.2.3"}' "http://localhost:18080" ""
[ "$status" -eq 1 ]
[[ "$output" == *"ERROR"* || "$output" == *"GITEA_TOKEN"* ]]
[[ "$output" == *"ERROR"* || "$output" == *"gitea_token"* ]]
}
@test "missing target_repo argument → exit 1" {
run bash scripts/dispatch-workflow.sh "" "test.yml" "main" '{}'
run bash scripts/dispatch-workflow.sh "" "test.yml" "main" '{}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 1 ]
}
@test "missing workflow_file argument → exit 1" {
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "" "main" '{}'
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "" "main" '{}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 1 ]
}
@test "missing ref argument → exit 1" {
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "" '{}'
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "" '{}' "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 1 ]
}
@test "missing inputs_json argument → exit 1" {
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" ""
run bash scripts/dispatch-workflow.sh "test-owner/test-repo" "test.yml" "main" "" "http://localhost:18080" "test-token-abc123"
[ "$status" -eq 1 ]
}