Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .sample.env
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,6 @@ NUXT_LIST_MONK_USER=monkusername
NUXT_LIST_MONK_TOKEN=somepass
NUXT_LIST_MONK_EN_TEMPLATE_ID="13"
NUXT_LIST_MONK_AR_TEMPLATE_ID="14"
NUXT_PUBLIC_MATOMO_HOST=""
NUXT_PUBLIC_MATOMO_SITE_ID=""
NUXT_PUBLIC_MATOMO_HOST="https://analytics.josa.ngo"
NUXT_PUBLIC_MATOMO_SITE_ID="19"
NUXT_PUBLIC_TARGET_ENV="development"
46 changes: 21 additions & 25 deletions .woodpecker/build-latest-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,10 @@ when:
- event: [pull_request]
# Only run when PR targets development or other branches (not main)
evaluate: 'CI_COMMIT_TARGET_BRANCH != "main"'
# Build the source branch
branch:
exclude: [main]
- event: [pull_request]
# Also build latest image when development branch creates PR to main
evaluate: 'CI_COMMIT_TARGET_BRANCH == "main" && CI_COMMIT_BRANCH == "development"'
branch: [development]

variables:
- &docker_repo 'josaorg/nuha-web'
- &slack_channel 'builds'
# Docker build arguments template
- &build_args_template
- CI_COMMIT_SHA=${CI_COMMIT_SHA}
- CI_BUILD_NUMBER=${CI_BUILD_NUMBER}
- CI_BUILD_LINK=${CI_BUILD_LINK}
- CI_COMMIT_LINK=${CI_COMMIT_LINK}
- CI_REPO_LINK=${CI_REPO_LINK}
- CI_BUILD_FINISHED=${CI_BUILD_FINISHED}
- &docker_repo "josaorg/nuha-web"
- &slack_channel "builds"
# Success message template
- &success_message >
✅ *SUCCESS* - Latest Build #{{ build.number }}
Expand All @@ -49,10 +34,11 @@ variables:

steps:
# Security check - scan for secrets/credentials
- name: check-for-leaks
image: zricethezav/gitleaks:v8.18.4
commands:
- gitleaks detect --source . --verbose
- name: run-pre-commit-hooks
image: josaorg/pre-commit-runner
settings:
args: "--all-files"
skip: "end-of-file-fixer, yamllint"

# Build latest image (development and other branches)
- name: build-latest-image
Expand All @@ -67,9 +53,19 @@ steps:
from_secret: DOCKER_HUB_USERNAME
password:
from_secret: DOCKER_HUB_PASSWORD
build_args: *build_args_template
build_args:
CI_REPO: "${CI_REPO}"
CI_REPO_NAME: "${CI_REPO_NAME}"
CI_REPO_URL: "${CI_REPO_URL}"
CI_COMMIT_SHA: "${CI_COMMIT_SHA}"
CI_COMMIT_REF: "${CI_COMMIT_REF}"
CI_PIPELINE_URL: "${CI_PIPELINE_URL}"
CI_PIPELINE_CREATED: "${CI_PIPELINE_CREATED}"
CI_PREV_PIPELINE_URL: "${CI_PREV_PIPELINE_URL}"
CI_PIPELINE_NUMBER: "${CI_PIPELINE_NUMBER}"

depends_on:
- check-for-leaks
- run-pre-commit-hooks

# Slack notification for latest build success
- name: notify-slack-latest-success
Expand All @@ -82,7 +78,7 @@ steps:
when:
- status: success
depends_on:
- check-for-leaks
- run-pre-commit-hooks
- build-latest-image

# Slack notification for latest build failure
Expand All @@ -96,5 +92,5 @@ steps:
when:
- status: failure
depends_on:
- check-for-leaks
- run-pre-commit-hooks
- build-latest-image
42 changes: 22 additions & 20 deletions .woodpecker/build-stable-image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,8 @@ when:
exclude: [main]

variables:
- &docker_repo 'josaorg/nuha-web'
- &slack_channel 'builds'
# Docker build arguments template
- &build_args_template
- CI_COMMIT_SHA=${CI_COMMIT_SHA}
- CI_BUILD_NUMBER=${CI_BUILD_NUMBER}
- CI_BUILD_LINK=${CI_BUILD_LINK}
- CI_COMMIT_LINK=${CI_COMMIT_LINK}
- CI_REPO_LINK=${CI_REPO_LINK}
- CI_BUILD_FINISHED=${CI_BUILD_FINISHED}
- &docker_repo "josaorg/nuha-web"
- &slack_channel "builds"
# Success message template
- &success_message >
✅ *SUCCESS* - Stable Build #{{ build.number }}
Expand All @@ -43,17 +35,17 @@ variables:
• <{{ build.link }}|View Build>

steps:
# Security check - scan for secrets/credentials
- name: check-for-leaks
image: zricethezav/gitleaks:v8.18.4
commands:
- gitleaks detect --source . --verbose
- name: run-pre-commit-hooks
image: josaorg/pre-commit-runner
settings:
args: "--all-files"
skip: "end-of-file-fixer, yamllint"

# Build stable image (main branch only)
- name: build-stable-image
image: woodpeckerci/plugin-docker-buildx
settings:
repo: *docker_repo
buildkit_debug: true
dockerfile: ./Dockerfile
tags:
- ${CI_COMMIT_SHA:-latest}
Expand All @@ -62,9 +54,19 @@ steps:
from_secret: DOCKER_HUB_USERNAME
password:
from_secret: DOCKER_HUB_PASSWORD
build_args: *build_args_template
build_args:
CI_REPO: "${CI_REPO}"
CI_REPO_NAME: "${CI_REPO_NAME}"
CI_REPO_URL: "${CI_REPO_URL}"
CI_COMMIT_SHA: "${CI_COMMIT_SHA}"
CI_COMMIT_REF: "${CI_COMMIT_REF}"
CI_PIPELINE_URL: "${CI_PIPELINE_URL}"
CI_PIPELINE_CREATED: "${CI_PIPELINE_CREATED}"
CI_PREV_PIPELINE_URL: "${CI_PREV_PIPELINE_URL}"
CI_PIPELINE_NUMBER: "${CI_PIPELINE_NUMBER}"

depends_on:
- check-for-leaks
- run-pre-commit-hooks

# Slack notification for stable build success
- name: notify-slack-stable-success
Expand All @@ -77,7 +79,7 @@ steps:
when:
- status: success
depends_on:
- check-for-leaks
- run-pre-commit-hooks
- build-stable-image

# Slack notification for stable build failure
Expand All @@ -91,5 +93,5 @@ steps:
when:
- status: failure
depends_on:
- check-for-leaks
- run-pre-commit-hooks
- build-stable-image
18 changes: 10 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# set global args
ARG USER=node DRONE_COMMIT_SHA=${DRONE_COMMIT_SHA} DRONE_BUILD_NUMBER=${DRONE_BUILD_NUMBER} DRONE_BUILD_LINK=${DRONE_BUILD_LINK} DRONE_COMMIT_LINK=${DRONE_COMMIT_LINK} DRONE_REPO_LINK=${DRONE_REPO_LINK} DRONE_BUILD_FINISHED=${DRONE_BUILD_FINISHED}
ARG USER=node CI_REPO CI_REPO_NAME CI_REPO_URL CI_COMMIT_SHA CI_COMMIT_REF CI_PIPELINE_URL CI_PIPELINE_CREATED CI_PREV_PIPELINE_URL CI_PIPELINE_NUMBER

###########
# BUILDER #
Expand All @@ -21,12 +21,14 @@ FROM node:22.15.0-slim

# pass the global args
ARG USER
ARG DRONE_COMMIT_SHA
ARG DRONE_BUILD_NUMBER
ARG DRONE_BUILD_LINK
ARG DRONE_COMMIT_LINK
ARG DRONE_REPO_LINK
ARG DRONE_BUILD_FINISHED
ARG CI_REPO
ARG CI_REPO_NAME
ARG CI_REPO_URL
ARG CI_COMMIT_SHA
ARG CI_COMMIT_REF
ARG CI_PIPELINE_URL
ARG CI_PIPELINE_CREATED
ARG CI_PIPELINE_NUMBER

# copy builder output to project workdir
WORKDIR /app
Expand All @@ -37,7 +39,7 @@ COPY --from=builder --chown=${USER}:${USER} /workspace/.output /app/.output
USER ${USER}

# inject build args as enviroment variables
ENV NUXT_PUBLIC_BUILD_COMMIT_SHA=${DRONE_COMMIT_SHA} NUXT_PUBLIC_BUILD_NUMBER=${DRONE_BUILD_NUMBER} NUXT_PUBLIC_BUILD_LINK=${DRONE_BUILD_LINK} NUXT_PUBLIC_BUILD_COMMIT_LINK=${DRONE_COMMIT_LINK} NUXT_PUBLIC_BUILD_REPO_LINK=${DRONE_REPO_LINK} NUXT_PUBLIC_BUILD_TIMESTAMP=${DRONE_BUILD_FINISHED}
ENV NUXT_PUBLIC_CI_BUILD_NUMBER=${CI_PIPELINE_NUMBER} NUXT_PUBLIC_CI_BUILD_LINK=${CI_PIPELINE_URL} NUXT_PUBLIC_BUILD_REPO_LINK=${CI_REPO_URL} NUXT_PUBLIC_CI_COMMIT_SHA=${CI_COMMIT_SHA} NUXT_PUBLIC_CI_COMMIT_LINK=${CI_COMMIT_REF} NUXT_PUBLIC_BUILD_TIMESTAMP=${CI_PIPELINE_CREATED}

# expose port
EXPOSE ${PORT}
Expand Down