summaryrefslogtreecommitdiff
path: root/.woodpecker
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-03-23 17:11:39 +0100
committerDawid Rycerz <dawid@rycerz.xyz>2025-04-05 21:16:51 +0200
commit0ab2e5ba2b0631b28b5b1405559237b3913c878f (patch)
tree791cea788b0a62bc483d0041fbd0c655d2ad49e8 /.woodpecker
feat: initialize Phoenix application for weather alerts
This commit sets up the initial Silmataivas project structure, including: Phoenix web framework configuration, database models for users and locations, weather polling service, notification system, Docker and deployment configurations, CI/CD pipeline setup
Diffstat (limited to '.woodpecker')
-rw-r--r--.woodpecker/build.yml21
-rw-r--r--.woodpecker/docker-test.yml31
-rw-r--r--.woodpecker/elixir-test.yml22
-rw-r--r--.woodpecker/lint.yml38
-rw-r--r--.woodpecker/release.yml20
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