diff options
Diffstat (limited to '.woodpecker')
| -rw-r--r-- | .woodpecker/build.yml | 21 | ||||
| -rw-r--r-- | .woodpecker/docker-test.yml | 31 | ||||
| -rw-r--r-- | .woodpecker/elixir-test.yml | 22 | ||||
| -rw-r--r-- | .woodpecker/lint.yml | 38 | ||||
| -rw-r--r-- | .woodpecker/release.yml | 20 |
5 files changed, 132 insertions, 0 deletions
diff --git a/.woodpecker/build.yml b/.woodpecker/build.yml new file mode 100644 index 0000000..8b2e187 --- /dev/null +++ b/.woodpecker/build.yml @@ -0,0 +1,21 @@ +when: + event: pull_request +steps: + - name: build docker app + image: plugins/kaniko + settings: + repo: codeberg.org/silmataivas/silmataivas + registry: codeberg.org + tags: test-${CI_COMMIT_SHA:0:8} + dockerfile: Dockerfile + cache: true + cache_repo: codeberg.org/silmataivas/silmataivas-cache + username: + from_secret: cb_username + password: + from_secret: cb_token + when: + event: [pull_request] + +depends_on: + - lint diff --git a/.woodpecker/docker-test.yml b/.woodpecker/docker-test.yml new file mode 100644 index 0000000..fe82935 --- /dev/null +++ b/.woodpecker/docker-test.yml @@ -0,0 +1,31 @@ +when: + event: pull_request +steps: + - name: silmataivas + image: codeberg.org/silmataivas/silmataivas:test-${CI_COMMIT_SHA:0:8} + environment: + # random keybase for tests + SECRET_KEY_BASE: "VbjJXgMmBIGjPgRMG3wzRiPEJjg5EcmK1j+2W3h9xvvjNVa9m74kHojE/ULyUjLz" + OPENWEATHERMAP_API_KEY: + from_secret: OPENWEATHERMAP_API_KEY + detach: true + when: + event: [pull_request] + + - name: validate-docker + image: alpine/curl + commands: + - | + # Check health endpoint + HEALTH_CHECK=$(curl -s -o /dev/null -w "%{http_code}" http://silmataivas:4000/health) + if [ "$HEALTH_CHECK" != "200" ]; then + echo "Health check failed with status $HEALTH_CHECK" + exit 1 + else + echo "Health check passed with status $HEALTH_CHECK" + fi + when: + event: [pull_request] + +depends_on: + - build diff --git a/.woodpecker/elixir-test.yml b/.woodpecker/elixir-test.yml new file mode 100644 index 0000000..048d4ed --- /dev/null +++ b/.woodpecker/elixir-test.yml @@ -0,0 +1,22 @@ +when: + event: pull_request +steps: + - name: test + image: hexpm/elixir:1.18.3-erlang-25.0.4-debian-bookworm-20250317-slim + commands: + - mix local.hex --force + - mix local.rebar --force + - mix deps.get --force + - mix compile + - MIX_ENV=test mix ecto.create + - MIX_ENV=test mix ecto.migrate + - MIX_ENV=test mix test + environment: + DB_ADAPTER: sqlite + DATABASE_URL: 'sqlite3:/tmp/silmataivas_test.db' + MIX_ENV: test + when: + event: [pull_request] + +depends_on: + - lint diff --git a/.woodpecker/lint.yml b/.woodpecker/lint.yml new file mode 100644 index 0000000..bb320fe --- /dev/null +++ b/.woodpecker/lint.yml @@ -0,0 +1,38 @@ +when: + event: pull_request +steps: + - name: validate-commit-message + image: alpine:latest + commands: + - apk add --no-cache grep git + - | + echo "Validating commit message format..." + COMMIT_MSG=$(git log -1 --pretty=%B) + if ! echo "$COMMIT_MSG" | grep -qE "^(feat|fix|docs|style|refactor|perf|test|chore|ci)(\([a-z0-9-]+\))?(!)?: .+"; then + echo "Error: Commit message does not follow conventional commits format." + echo "Expected format: type(scope): description" + echo "Example: feat(auth): add user authentication" + exit 1 + fi + when: + event: + - pull_request + + - name: hadolint + image: hadolint/hadolint:latest-debian + commands: + - hadolint Dockerfile + when: + event: + - pull_request + + - name: elixir-format + image: hexpm/elixir:1.18.3-erlang-25.0.4-debian-bookworm-20250317-slim + commands: + - mix local.hex --force + - mix local.rebar --force + - mix deps.get + - mix format --check-formatted + when: + event: + - pull_request diff --git a/.woodpecker/release.yml b/.woodpecker/release.yml new file mode 100644 index 0000000..9252bd6 --- /dev/null +++ b/.woodpecker/release.yml @@ -0,0 +1,20 @@ +when: + event: tag + + +steps: + - name: release docker + image: plugins/kaniko + settings: + repo: codeberg.org/silmataivas/silmataivas + registry: codeberg.org + tags: latest,${CI_COMMIT_TAG} + dockerfile: Dockerfile + cache: true + cache_repo: codeberg.org/silmataivas/silmataivas-cache + username: + from_secret: cb_username + password: + from_secret: cb_token + when: + event: tag |
