Compare commits
9 Commits
build_2025
...
build_2025
| Author | SHA1 | Date | |
|---|---|---|---|
|
2b6870b861
|
|||
|
ceb7a74b11
|
|||
|
fd4e17a754
|
|||
|
4ed73f7c72
|
|||
|
066a3864dd
|
|||
|
9a4902291e
|
|||
|
d06df32bab
|
|||
|
60d0c01212
|
|||
|
5e7c1842a4
|
@@ -54,27 +54,26 @@ jobs:
|
|||||||
tags: |
|
tags: |
|
||||||
# Tag avec le nom du tag Git
|
# Tag avec le nom du tag Git
|
||||||
type=ref,event=tag
|
type=ref,event=tag
|
||||||
|
# Tag 'latest' pour la branche master
|
||||||
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
|
# Tag avec le SHA pour les autres branches
|
||||||
|
type=sha,prefix=sha-
|
||||||
labels: |
|
labels: |
|
||||||
org.opencontainers.image.title=${{ env.IMAGE_NAME }}
|
org.opencontainers.image.title=${{ env.IMAGE_NAME }}
|
||||||
org.opencontainers.image.description=Bot Discord
|
org.opencontainers.image.description=Bot Discord de moi
|
||||||
org.opencontainers.image.url=https://gitea.zac.ovh/zachary/bot_Tamiseur
|
org.opencontainers.image.url=https://git.zac.ovh/zachary/bot_Tamiseur
|
||||||
org.opencontainers.image.source=https://gitea.zac.ovh/zachary/bot_Tamiseur
|
org.opencontainers.image.source=https://git.zac.ovh/zachary/bot_Tamiseur
|
||||||
org.opencontainers.image.revision=${{ github.sha }}
|
org.opencontainers.image.revision=${{ github.sha }}
|
||||||
|
org.opencontainers.image.created={{date 'RFC3339'}}
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
|
file: build/node.dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
|
|
||||||
- name: Generate artifact attestation
|
|
||||||
uses: actions/attest-build-provenance@v1
|
|
||||||
with:
|
|
||||||
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_PATH }}/${{ env.IMAGE_NAME }}
|
|
||||||
subject-digest: ${{ steps.build.outputs.digest }}
|
|
||||||
push-to-registry: true
|
|
||||||
|
|||||||
@@ -1,17 +1,21 @@
|
|||||||
# Starting from node
|
# Starting from node
|
||||||
FROM node:22-alpine
|
FROM node:22-slim
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
RUN apk add --no-cache python3 make g++
|
# Copy package files first
|
||||||
|
|
||||||
# Copy package files and install only production dependencies
|
|
||||||
COPY package.json package-lock.json* .
|
COPY package.json package-lock.json* .
|
||||||
RUN npm ci --only=production --ignore-scripts && \
|
|
||||||
npm install bufferutil zlib-sync
|
|
||||||
|
|
||||||
|
# Install build dependencies, compile native modules, then remove build tools
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y ffmpeg python3 make g++ && \
|
||||||
|
npm ci --only=production --ignore-scripts && \
|
||||||
|
npm install bufferutil zlib-sync && \
|
||||||
|
apt-get remove -y python3 make g++ && \
|
||||||
|
apt-get autoremove -y && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Copy the builded files and the charts
|
# Copy the builded files and the charts
|
||||||
COPY ./dist/* .
|
COPY ./dist/* .
|
||||||
|
|||||||
32
deploy/templates/ingress.yaml
Normal file
32
deploy/templates/ingress.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ .Release.Name }}
|
||||||
|
annotations:
|
||||||
|
external-dns.alpha.kubernetes.io/target: omegamaestro.{{ .Values.ingress.domain }}
|
||||||
|
cert-manager.io/cluster-issuer: {{ .Values.ingress.issuer }}
|
||||||
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTP"
|
||||||
|
{{- if .Values.ingress.geoip }}
|
||||||
|
nginx.ingress.kubernetes.io/server-snippet: |
|
||||||
|
if ($lan = yes) { set $allowed_country yes; }
|
||||||
|
if ($allowed_country = no) { return 451; }
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
ingressClassName: {{ .Values.ingress.class }}
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- {{ .Values.ingress.subdomain }}.{{ .Values.ingress.domain }}
|
||||||
|
secretName: {{ .Release.Name }}-tls
|
||||||
|
rules:
|
||||||
|
- host: "{{ .Values.ingress.subdomain }}.{{ .Values.ingress.domain }}"
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: "{{ .Release.Name }}-{{ .Values.service.name }}"
|
||||||
|
port:
|
||||||
|
name: {{ .Values.service.name }}
|
||||||
|
{{- end }}
|
||||||
15
deploy/templates/service.yaml
Normal file
15
deploy/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{{- if .Values.service.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: "{{ .Release.Name }}-{{ .Values.service.name }}"
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- name: {{ .Values.service.name }}
|
||||||
|
port: {{ .Values.deployment.env.TWURPLE_PORT | default .Values.service.port }}
|
||||||
|
targetPort: {{ .Values.deployment.env.TWURPLE_PORT | default .Values.service.port }}
|
||||||
|
protocol: TCP
|
||||||
|
selector:
|
||||||
|
{{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
@@ -3,7 +3,7 @@ deployment:
|
|||||||
strategy: RollingUpdate
|
strategy: RollingUpdate
|
||||||
image:
|
image:
|
||||||
repository: "rgy.angels-dev.fr/prod/bot_tamiseur"
|
repository: "rgy.angels-dev.fr/prod/bot_tamiseur"
|
||||||
tag: "4.0.0"
|
tag: "build_2025-06-10_01h49"
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
env:
|
env:
|
||||||
NODE_ENV: "production"
|
NODE_ENV: "production"
|
||||||
@@ -15,4 +15,17 @@ deployment:
|
|||||||
# Memory: "500Mi"
|
# Memory: "500Mi"
|
||||||
requests:
|
requests:
|
||||||
Cpu: "0.1"
|
Cpu: "0.1"
|
||||||
Memory: "50Mi"
|
Memory: "50Mi"
|
||||||
|
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
type: ClusterIP
|
||||||
|
name: twurple
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
class: nginx
|
||||||
|
subdomain: dcb-chantier.prd
|
||||||
|
domain: angels-dev.fr
|
||||||
|
issuer: letsencrypt-prod
|
||||||
|
geoip: false
|
||||||
0
src/commands/global/amp.ts
Executable file → Normal file
0
src/commands/global/amp.ts
Executable file → Normal file
0
src/commands/global/database.ts
Executable file → Normal file
0
src/commands/global/database.ts
Executable file → Normal file
0
src/commands/global/ping.ts
Executable file → Normal file
0
src/commands/global/ping.ts
Executable file → Normal file
0
src/commands/player/loop.ts
Executable file → Normal file
0
src/commands/player/loop.ts
Executable file → Normal file
0
src/commands/player/lyrics.ts
Executable file → Normal file
0
src/commands/player/lyrics.ts
Executable file → Normal file
0
src/commands/player/panel.ts
Executable file → Normal file
0
src/commands/player/panel.ts
Executable file → Normal file
0
src/commands/player/pause.ts
Executable file → Normal file
0
src/commands/player/pause.ts
Executable file → Normal file
0
src/commands/player/play.ts
Executable file → Normal file
0
src/commands/player/play.ts
Executable file → Normal file
0
src/commands/player/previous.ts
Executable file → Normal file
0
src/commands/player/previous.ts
Executable file → Normal file
0
src/commands/player/queue.ts
Executable file → Normal file
0
src/commands/player/queue.ts
Executable file → Normal file
0
src/commands/player/resume.ts
Executable file → Normal file
0
src/commands/player/resume.ts
Executable file → Normal file
0
src/commands/player/shuffle.ts
Executable file → Normal file
0
src/commands/player/shuffle.ts
Executable file → Normal file
0
src/commands/player/skip.ts
Executable file → Normal file
0
src/commands/player/skip.ts
Executable file → Normal file
0
src/commands/player/stop.ts
Executable file → Normal file
0
src/commands/player/stop.ts
Executable file → Normal file
0
src/commands/player/volume.ts
Executable file → Normal file
0
src/commands/player/volume.ts
Executable file → Normal file
0
src/commands/salonpostam/crack.ts
Executable file → Normal file
0
src/commands/salonpostam/crack.ts
Executable file → Normal file
0
src/commands/salonpostam/papa.ts
Executable file → Normal file
0
src/commands/salonpostam/papa.ts
Executable file → Normal file
0
src/commands/salonpostam/parle.ts
Executable file → Normal file
0
src/commands/salonpostam/parle.ts
Executable file → Normal file
0
src/commands/salonpostam/spam.ts
Executable file → Normal file
0
src/commands/salonpostam/spam.ts
Executable file → Normal file
0
src/commands/salonpostam/update.ts
Executable file → Normal file
0
src/commands/salonpostam/update.ts
Executable file → Normal file
0
src/events/client/error.ts
Executable file → Normal file
0
src/events/client/error.ts
Executable file → Normal file
0
src/events/client/guildCreate.ts
Executable file → Normal file
0
src/events/client/guildCreate.ts
Executable file → Normal file
0
src/events/client/guildMemberAdd.ts
Executable file → Normal file
0
src/events/client/guildMemberAdd.ts
Executable file → Normal file
0
src/events/client/guildMemberRemove.ts
Executable file → Normal file
0
src/events/client/guildMemberRemove.ts
Executable file → Normal file
0
src/events/client/guildUpdate.ts
Executable file → Normal file
0
src/events/client/guildUpdate.ts
Executable file → Normal file
0
src/events/client/interactionCreate.ts
Executable file → Normal file
0
src/events/client/interactionCreate.ts
Executable file → Normal file
0
src/events/client/ready.ts
Executable file → Normal file
0
src/events/client/ready.ts
Executable file → Normal file
0
src/events/player/audioTrackAdd.ts
Executable file → Normal file
0
src/events/player/audioTrackAdd.ts
Executable file → Normal file
0
src/events/player/audioTracksAdd.ts
Executable file → Normal file
0
src/events/player/audioTracksAdd.ts
Executable file → Normal file
0
src/events/player/debug.ts
Executable file → Normal file
0
src/events/player/debug.ts
Executable file → Normal file
0
src/events/player/disconnect.ts
Executable file → Normal file
0
src/events/player/disconnect.ts
Executable file → Normal file
0
src/events/player/emptyChannel.ts
Executable file → Normal file
0
src/events/player/emptyChannel.ts
Executable file → Normal file
0
src/events/player/emptyQueue.ts
Executable file → Normal file
0
src/events/player/emptyQueue.ts
Executable file → Normal file
0
src/events/player/error.ts
Executable file → Normal file
0
src/events/player/error.ts
Executable file → Normal file
0
src/events/player/playerError.ts
Executable file → Normal file
0
src/events/player/playerError.ts
Executable file → Normal file
0
src/events/player/playerSkip.ts
Executable file → Normal file
0
src/events/player/playerSkip.ts
Executable file → Normal file
0
src/events/player/playerStart.ts
Executable file → Normal file
0
src/events/player/playerStart.ts
Executable file → Normal file
0
src/index.ts
Executable file → Normal file
0
src/index.ts
Executable file → Normal file
0
src/static/parle.mp3
Executable file → Normal file
0
src/static/parle.mp3
Executable file → Normal file
0
src/static/stronger_shorter.mp3
Executable file → Normal file
0
src/static/stronger_shorter.mp3
Executable file → Normal file
0
tsconfig.json
Executable file → Normal file
0
tsconfig.json
Executable file → Normal file
Reference in New Issue
Block a user