Changed to docker-compose deployment
parent
d48de2cd98
commit
d5c733767b
|
|
@ -1,4 +1,4 @@
|
||||||
FROM nginx
|
FROM jkaninda/nginx-php-fpm
|
||||||
|
|
||||||
# Install git and ssh-keygen
|
# Install git and ssh-keygen
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
# Docker Nginx Git
|
# Docker Nginx Git
|
||||||
|
|
||||||
This is a container to serve static pages from a git repository.
|
This is a container to serve static pages from two git repositories. One repository holds the static sites, the other holds an assets-folder.
|
||||||
|
|
||||||
|
From the static sites repository all branches are initially loaded to `$HTML_FOLDER/branches/<branchname>`, the assets folder is initially loaded to `$HTML_FOLDER/assets`.
|
||||||
|
|
||||||
|
On a push to some branch on the static sites repository, this branches folder is deleted and cloned again. The assets folder is only updated if the push happened on the `main` branch.
|
||||||
|
|
@ -1,8 +1,27 @@
|
||||||
version: '3'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
my-container:
|
nginx:
|
||||||
image: <image_name>:<tag_name>
|
image: nginx:latest
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
# Add other configuration options as needed
|
volumes:
|
||||||
|
- static-files: /usr/share/nginx/html
|
||||||
|
- webhooks-git-ssh: /root/.ssh
|
||||||
|
- webhooks-git-data: /etc/webhook/
|
||||||
|
|
||||||
|
webhooks-git:
|
||||||
|
build:
|
||||||
|
context: ./webhooks-git
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
volumes:
|
||||||
|
- static-files:/etc/static-files
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
static-files:
|
||||||
|
external: true
|
||||||
|
webhooks-git-ssh:
|
||||||
|
external: true
|
||||||
|
webhooks-git-data:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "Starting Nginx git publisher on $NGINX_SERVER_NAME"
|
|
||||||
echo $SSH_KEY_PATH
|
|
||||||
nginx -g daemon off;
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
events {}
|
|
||||||
|
|
||||||
http {
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name ${NGINX_SERVER_NAME};
|
|
||||||
|
|
||||||
location / {
|
|
||||||
root /usr/share/nginx/html;
|
|
||||||
index index.html;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Dockerfile for https://github.com/adnanh/webhook
|
||||||
|
FROM golang:alpine AS build
|
||||||
|
MAINTAINER Almir Dzinovic <almir@dzinovic.net>
|
||||||
|
WORKDIR /go/src/github.com/adnanh/webhook
|
||||||
|
ENV WEBHOOK_VERSION 2.8.1
|
||||||
|
RUN apk add --update -t build-deps curl libc-dev gcc libgcc git openssh-client bash nano
|
||||||
|
RUN curl -L --silent -o webhook.tar.gz https://github.com/adnanh/webhook/archive/${WEBHOOK_VERSION}.tar.gz && \
|
||||||
|
tar -xzf webhook.tar.gz --strip 1
|
||||||
|
RUN go get -d -v
|
||||||
|
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /usr/local/bin/webhook
|
||||||
|
|
||||||
|
FROM alpine
|
||||||
|
RUN apk --no-cache add git openssh-client bash nano
|
||||||
|
COPY --from=build /usr/local/bin/webhook /usr/local/bin/webhook
|
||||||
|
WORKDIR /etc/webhook
|
||||||
|
EXPOSE 9000
|
||||||
|
ENTRYPOINT ["/usr/local/bin/webhook"]
|
||||||
|
CMD ["-verbose", "-hooks=/etc/webhook/hooks.yaml", "-hotreload"]
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
# Dockerfile for https://github.com/adnanh/webhook
|
||||||
|
FROM almir/webhook
|
||||||
|
COPY hooks.json.example /etc/webhook/hooks.json
|
||||||
|
|
||||||
|
FROM alpine
|
||||||
|
RUN apk --no-cache add git openssh-client bash nano
|
||||||
|
COPY --from=build /usr/local/bin/webhook /usr/local/bin/webhook
|
||||||
|
WORKDIR /etc/webhook
|
||||||
|
EXPOSE 9000
|
||||||
|
ENTRYPOINT ["/usr/local/bin/webhook"]
|
||||||
|
CMD ["-verbose", "-hooks=/etc/webhook/hooks.json", "-hotreload"]
|
||||||
54
webhook.php
54
webhook.php
|
|
@ -1,54 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
$secret_key = '1234';
|
|
||||||
|
|
||||||
// check for POST request
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
|
|
||||||
error_log('FAILED - not POST - '. $_SERVER['REQUEST_METHOD']);
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// get content type
|
|
||||||
$content_type = isset($_SERVER['CONTENT_TYPE']) ? strtolower(trim($_SERVER['CONTENT_TYPE'])) : '';
|
|
||||||
|
|
||||||
if ($content_type != 'application/json') {
|
|
||||||
error_log('FAILED - not application/json - '. $content_type);
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// get payload
|
|
||||||
$payload = trim(file_get_contents("php://input"));
|
|
||||||
|
|
||||||
if (empty($payload)) {
|
|
||||||
error_log('FAILED - no payload');
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// get header signature
|
|
||||||
$header_signature = isset($_SERVER['HTTP_X_GITEA_SIGNATURE']) ? $_SERVER['HTTP_X_GITEA_SIGNATURE'] : '';
|
|
||||||
|
|
||||||
if (empty($header_signature)) {
|
|
||||||
error_log('FAILED - header signature missing');
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// calculate payload signature
|
|
||||||
$payload_signature = hash_hmac('sha256', $payload, $secret_key, false);
|
|
||||||
|
|
||||||
// check payload signature against header signature
|
|
||||||
if ($header_signature !== $payload_signature) {
|
|
||||||
error_log('FAILED - payload signature');
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// convert json to array
|
|
||||||
$decoded = json_decode($payload, true);
|
|
||||||
|
|
||||||
// check for json decode errors
|
|
||||||
if (json_last_error() !== JSON_ERROR_NONE) {
|
|
||||||
error_log('FAILED - json decode - '. json_last_error());
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// success, do something
|
|
||||||
file_put_contents("payload.json", $decoded);
|
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "programm-webhook",
|
||||||
|
"http-methods": ["PUSH"],
|
||||||
|
"execute-command": "/etc/webhook/programm-hook.sh",
|
||||||
|
"command-working-directory": "/etc/webhook/",
|
||||||
|
"response-message": "I got the payload!",
|
||||||
|
"response-headers":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Access-Control-Allow-Origin",
|
||||||
|
"value": "*"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pass-arguments-to-command":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"source": "payload",
|
||||||
|
"name": "ref"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "payload",
|
||||||
|
"name": "repository.name"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"trigger-rule":
|
||||||
|
{
|
||||||
|
"and":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"type": "payload-hmac-sha1",
|
||||||
|
"secret": "1234",
|
||||||
|
"parameter":
|
||||||
|
{
|
||||||
|
"source": "header",
|
||||||
|
"name": "X-Hub-Signature"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "assets-webhook",
|
||||||
|
"execute-command": "/etc/webhook/assets-hook.sh",
|
||||||
|
"command-working-directory": "/etc/webhook/",
|
||||||
|
"response-message": "I got the payload!",
|
||||||
|
"response-headers":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Access-Control-Allow-Origin",
|
||||||
|
"value": "*"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pass-arguments-to-command":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"source": "payload",
|
||||||
|
"name": "repository.name"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"source": "payload",
|
||||||
|
"name": "ref"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"trigger-rule":
|
||||||
|
{
|
||||||
|
"and":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"type": "payload-hmac-sha256",
|
||||||
|
"secret": "1234",
|
||||||
|
"parameter":
|
||||||
|
{
|
||||||
|
"source": "header",
|
||||||
|
"name": "X-Hub-Signature-256"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"type":"value",
|
||||||
|
"value": "refs/heads/main",
|
||||||
|
"parameter":
|
||||||
|
{
|
||||||
|
"source": "payload",
|
||||||
|
"name": "ref"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
Loading…
Reference in New Issue