Fix language switche, adapt contact form and add gitea action.
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
public
|
||||||
|
node_modules
|
||||||
|
.hugo_build.lock
|
||||||
|
hugo_stats.json
|
||||||
+1
-11
@@ -1,11 +1 @@
|
|||||||
# Configuration SMTP pour contact-backend.js
|
CONTACT_FORM_URL="http://localhost:1314/contact.php"
|
||||||
BASE_URL=http://localhost
|
|
||||||
SMTP_HOST=HOST
|
|
||||||
SMTP_PORT=PORT
|
|
||||||
SMTP_SECURE=false
|
|
||||||
SMTP_USER=USER
|
|
||||||
SMTP_FROM=FROM
|
|
||||||
SMTP_PASS=PASSWORD
|
|
||||||
PORT=PORT
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
name: Build and push chill website image
|
||||||
|
|
||||||
|
on:
|
||||||
|
# Runs on pushes targeting the default branch
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
|
||||||
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
# Environment variables available to all jobs and steps in this workflow
|
||||||
|
env:
|
||||||
|
HUGO_ENV: production
|
||||||
|
HUGO_VERSION: "0.136.2"
|
||||||
|
GO_VERSION: "1.21.4"
|
||||||
|
NODE_VERSION: "18"
|
||||||
|
KUBE_CA: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZCRENDQXV5Z0F3SUJBZ0lCS2pBTkJna3Foa2lHOXcwQkFRc0ZBREFSTVE4d0RRWURWUVFEREFaM05YWTEKZWpRd0hoY05Nakl4TWpFd01qRXdNRFV4V2hjTk1qY3hNakE1TWpFd01EVXhXakFSTVE4d0RRWURWUVFEREFaMwpOWFkxZWpRd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUNBUUN0R01hZlNxYzNJc2lpCmp2QjU4ZFhNNk42Z1hMV2hyODU0MlV0N09RSGRLTFZuY2NJTE94R2w0ZkdxWDBEREJlYkE1MWd6ZVR3b0pObWMKNHhpSW5vaWp4VFdWNW0wQ2REU2FrTUpEajJiNGJLbVdVZTBIRDg5YzZ4N20rM3RBR1Myekl5amtmTlVXKy9YRApXNVp4NmQrSjY4VWdmNXN1VnVCL0lXWjFJSEE3YVc3N2FYeStnV1BrYWVVdVpSWXFyMFB3NnVVM0lDZFp6K053CjdRNDRLczlmdUtSK29yT2JwSXRLTUViOUVkUEtGZWs2U3RVK0VJS0gvNnNLZzdKRHdQN1VhVnZhdkhEQXVONlcKb1FuT1JRN1BQM0xTdU9TdFVQcWY3Y09MU2ZQTVdISys5MTRJRFpBaEdVUllYck5keDU4TnV1ZERkTHFUV0VadQpsU01RN3JXdHk3OXBOVnQyOXdYLzhnMTd2NEdBemFGTTJJYUNPUnZVSTZlZnRRY3lybVVIelhCNlhLOVQ2YzN6Ck9CUU5neDh4emRyZ0xCQ3FxNmJSenNMc1M2TWFWY0VNcml6dk9QN3FUcTJKK2VEbzdST3drQjNaZmprT214bDAKVEdLMDgrbGxMNlhvM1RYSGdwa1JHWUgwZE1NMkxUMGJacmFxbVcza0dzK1NiZUlVVzZRMDdwbXhMcG1Jd3JBeAo5U0hqVUxqemZRZmNQNnRmNlA4eXJpeWtJbXlkaGs0bmtrZXpnQ0l3TStyRVFDOVBKTnE4OXNCWUlDcWs1VGowCmN2Q1FhcisycnNwcmR4STlCSFB2bTZxbjNDaVRJNnE1RDgxWnpKZTRsR0FWQ0M4RWVJOXRlamJpczNId0c1SWUKTmxiaUsxZjdWdUFpY2wrOUtKRGpwQnhZZU5HNy9RSURBUUFCbzJjd1pUQVBCZ05WSFJNQkFmOEVCVEFEQVFILwpNQTRHQTFVZER3RUIvd1FFQXdJQkJqQWRCZ05WSFE0RUZnUVUxWC84dGl2TGdEd3UxT2JhU2NicU9JY1FoVWN3Ckl3WURWUjBqQkJ3d0dxRVZwQk13RVRFUE1BMEdBMVVFQXd3R2R6VjJOWG8wZ2dFcU1BMEdDU3FHU0liM0RRRUIKQ3dVQUE0SUNBUUJPSXM1ZjZsMmkwbXdoUEdwakFTNzUzd0hrQUtBbVovbDBiTDA1eDFWc1BrZlg1d041MVNXRQpJS3ROQjMvdStVYTZCS3BjYzZ1RVNKd1hJVVJKRnVCMU1KNloxYzJ2Kzl4NGlMdzgxalVRTy9tU0RhTzRvREhEClJKWmUwQkZEV1hnakI1bjhNQWlWYWo0WGZJUVpFR21CZG4ySHV3WEh4NXR5U3JNOC9TV1l2NVR0ek9VdzlyZWYKckxxeXJQMWh5OG1vaXkrQm9iTEF5RkcyUjBPMmZZZDBnUzlPT2NxZ3RaNHhUMStpRTVMVFFwSkhUaWNORTFnNwpyczFJUnJNTWNRL3AyWGg0bzliNXF0dlNiQVdHb0tjdDFnVElJTzlwZktUTVVuUVUrc0xRd3F3SjBRcTZIbUZxCkpteFQvYmN5VS95MEtwMHNmWDdNQm5vVmM3d1FoWlc2cWhVS0ZOZjRuUy9KeC8vWHd2RG4raUMzTW1id2FUZFoKQnJQYzJ6MnF4WnovMWNXNnY2ZSt5cjFjM1BYYzZISWdSSXhhWHVWTEd2ZnlDY2JNaFBFVkVEUS9CUndrMjNscQpzL05Gc1RUWXZnQjlYSXZTT0FwdGlFRlFsNzRKVFU2WjFta2lQTVRNUXdtNGFZc2lqNytaTHpNRUdrbk9sVVdUCmtaRzRpTUlXKzJjcGN0cEFHV3pmZmVBTFR2ZHlDVkJWdjdHZ1VwWWYwTlRjSVByN0FNWE9lU2YrcWhmUHo1WkYKR2s5aEJIc2dSbGR5cWxKZ1JJcUJuaTZ6OGMwQk42UUtMbDJpMDVqcWxUN2VFalM0WHZhUnUxY0VQUndNZEJYSgp2eWhXOWNZdmh0SEl2aW0zOXRBTkNpK3dUR1ZMd3NRN0NEVmNhck5KRVJJSms2aUhPUXZicVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
||||||
|
KUBE_SERVER: https://w5v5z4.c1.gra9.k8s.ovh.net
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Build job
|
||||||
|
build:
|
||||||
|
runs-on: cth-ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out repository
|
||||||
|
uses: https://github.com/actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: https://github.com/docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Login to registry
|
||||||
|
uses: https://github.com/docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
registry: 'h3m6q87t.gra7.container-registry.ovh.net'
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
id: build-push
|
||||||
|
uses: https://github.com/docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: 'h3m6q87t.gra7.container-registry.ovh.net/chill_website/web:${{ github.ref_name }}'
|
||||||
|
|
||||||
|
- name: Install kubectl
|
||||||
|
run: |
|
||||||
|
curl -LO "https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl"
|
||||||
|
chmod +x ./kubectl
|
||||||
|
sudo mv ./kubectl /usr/local/bin/kubectl
|
||||||
|
|
||||||
|
- name: Set up kubeconfig
|
||||||
|
env:
|
||||||
|
KUBE_SERVER: ${{ env.KUBE_SERVER }} # e.g. https://<API_ENDPOINT>
|
||||||
|
KUBE_CA: ${{ env.KUBE_CA }} # base64 encoded, or fetched via kubectl config view
|
||||||
|
KUBE_TOKEN: ${{ secrets.KUBE_TOKEN }} # Token generated via 'kubectl create token'
|
||||||
|
run: |
|
||||||
|
mkdir -p ~/.kube
|
||||||
|
cat <<EOF > ~/.kube/config
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Config
|
||||||
|
clusters:
|
||||||
|
- name: default-cluster
|
||||||
|
cluster:
|
||||||
|
server: "$KUBE_SERVER"
|
||||||
|
certificate-authority-data: "$KUBE_CA"
|
||||||
|
contexts:
|
||||||
|
- name: default-context
|
||||||
|
context:
|
||||||
|
cluster: default-cluster
|
||||||
|
user: gitea-actions
|
||||||
|
current-context: default-context
|
||||||
|
users:
|
||||||
|
- name: gitea-actions
|
||||||
|
user:
|
||||||
|
token: "$KUBE_TOKEN"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: Patch Deployment Image
|
||||||
|
env:
|
||||||
|
NAMESPACE: chill-website
|
||||||
|
DEPLOYMENT: chill-website
|
||||||
|
CONTAINER: front
|
||||||
|
BASE_IMAGE: 'h3m6q87t.gra7.container-registry.ovh.net/chill_website/web'
|
||||||
|
TAG_IMAGE: '${{ steps.build-push.outputs.digest }}'
|
||||||
|
run: |
|
||||||
|
echo "deploy new tag: $TAG_IMAGE"
|
||||||
|
env
|
||||||
|
kubectl -n ${NAMESPACE} set image deployment/${DEPLOYMENT} ${CONTAINER}=${BASE_IMAGE}@${TAG_IMAGE}
|
||||||
+6
-27
@@ -1,30 +1,9 @@
|
|||||||
FROM hugomods/hugo:latest
|
FROM ghcr.io/gohugoio/hugo:v0.160.0 AS build
|
||||||
|
|
||||||
# Installe Node.js et npm
|
WORKDIR /project
|
||||||
USER root
|
COPY . /project
|
||||||
RUN apk add --no-cache nodejs npm git
|
RUN hugo build --minify --cleanDestinationDir
|
||||||
|
|
||||||
WORKDIR /src
|
FROM caddy:2-alpine
|
||||||
|
|
||||||
# Copie package.json et package-lock.json si présent
|
COPY --from=build /project/public/ /usr/share/caddy/
|
||||||
COPY package.json ./
|
|
||||||
|
|
||||||
# Installation des dépendances
|
|
||||||
RUN npm install --save-dev sass
|
|
||||||
|
|
||||||
# Copie le reste du code
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Build CSS (tailwind + scss)
|
|
||||||
RUN npm run build
|
|
||||||
|
|
||||||
|
|
||||||
EXPOSE 1313 3001
|
|
||||||
|
|
||||||
CMD ["sh", "-c", "set -a; [ -f .env ] && . ./.env; set +a; BASE_URL=${BASE_URL:-http://localhost}; node contact-backend.js & hugo server -D --bind 0.0.0.0 --baseURL ${BASE_URL}:1313 --appendPort=false"]
|
|
||||||
|
|
||||||
# @TODO: Ajouter une étape de build pour générer les fichiers statiques de Hugo
|
|
||||||
# gunzippé et optimisé pour la production
|
|
||||||
# utilisé Nginx plutot que serveur
|
|
||||||
# créer des étapes de build pour la compilation et la copie des fichier sur le serveur nginx
|
|
||||||
# docker build -t hugo-site:latest .
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
services:
|
||||||
|
website:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- 1313:80
|
||||||
|
env_file: .env
|
||||||
|
facteur:
|
||||||
|
image: php:8.5-apache
|
||||||
|
ports:
|
||||||
|
- 1314:80
|
||||||
|
volumes:
|
||||||
|
- ./contact-backend/:/var/www/html/
|
||||||
|
mailpit:
|
||||||
|
image: axllent/mailpit
|
||||||
|
container_name: mailpit
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- 8025:8025
|
||||||
|
- 1025:1025
|
||||||
|
environment:
|
||||||
|
MP_MAX_MESSAGES: 5000
|
||||||
|
MP_SMTP_AUTH_ACCEPT_ANY: 1
|
||||||
|
MP_SMTP_AUTH_ALLOW_INSECURE: 1
|
||||||
@@ -3,6 +3,7 @@ baseURL = "/"
|
|||||||
title = ""
|
title = ""
|
||||||
theme = "chill-theme"
|
theme = "chill-theme"
|
||||||
defaultContentLanguage = "fr"
|
defaultContentLanguage = "fr"
|
||||||
|
disableLanguages = ["en", "nl"]
|
||||||
|
|
||||||
# Language configuration
|
# Language configuration
|
||||||
[languages]
|
[languages]
|
||||||
@@ -45,7 +46,7 @@ pagination = { pagerSize = 6, path = "page" }
|
|||||||
|
|
||||||
# Security Configuration
|
# Security Configuration
|
||||||
[security.funcs]
|
[security.funcs]
|
||||||
getenv = ['^HUGO_', '^CI$', '^BASE_URL$']
|
getenv = ['^HUGO_', '^CI$', '^BASE_URL$', '^CONTACT_FORM_URL$']
|
||||||
|
|
||||||
|
|
||||||
# Required Markup Configuration
|
# Required Markup Configuration
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<!-- Language Switcher -->
|
<!-- Language Switcher -->
|
||||||
{{/* {{ partial "language-switcher" . }} */}}
|
{{ partial "language-switcher" . }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- CTA Buttons -->
|
<!-- CTA Buttons -->
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
<a href="{{ $langURL }}" class="language-switch-link block {{ $dropdownConfig.item_padding | default "px-8 py-3" }} {{ $dropdownConfig.text_size | default "text-sm" }} {{ $dropdownConfig.text_color | default "text-gray-700" }} {{ $dropdownConfig.hover_background | default "hover:bg-gray-50" }}" data-lang="{{ .Lang }}">
|
<a href="{{ $langURL }}" class="language-switch-link block {{ $dropdownConfig.item_padding | default "px-8 py-3" }} {{ $dropdownConfig.text_size | default "text-sm" }} {{ $dropdownConfig.text_color | default "text-gray-700" }} {{ $dropdownConfig.hover_background | default "hover:bg-gray-50" }}" data-lang="{{ .Lang }}">
|
||||||
{{ .LanguageName }}
|
{{ .LanguageName }}
|
||||||
</a>
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
{{ $form := .Page.Params.contactForm }}
|
{{ $form := .Page.Params.contactForm }}
|
||||||
{{ $baseURL := default "http://localhost" (getenv "BASE_URL") }}
|
{{ $contactFormUrl := default "https://facteur-cl.sobrietech.be/contact.php" (getenv "CONTACT_FORM_URL") }}
|
||||||
{{ $normalizedBaseURL := strings.TrimSuffix "/" $baseURL }}
|
|
||||||
{{ $defaultContactAction := printf "%s:3001/contact" $normalizedBaseURL }}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<form id="contactForm" class="max-w-lg mx-auto p-6 bg-white rounded shadow" method="POST"
|
<form id="contactForm" class="max-w-lg mx-auto p-6 bg-white rounded shadow" method="POST"
|
||||||
action="{{ $form.action | default $defaultContactAction }}">
|
action="{{ $form.action | default $contactFormUrl }}" target="_blank">
|
||||||
<h3 class="text-2xl font-bold mb-4">{{ $form.title }}</h3>
|
<h3 class="text-2xl font-bold mb-4">{{ $form.title }}</h3>
|
||||||
{{ range $form.fields }}
|
{{ range $form.fields }}
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
@@ -88,7 +85,7 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
showResult('Erreur réseau', false);
|
showResult('Erreur réseau, veuillez ré-essayer.', false);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user