Attempt at drone deploy
Some checks reported errors
GitHub Pages Deploy / deploy (push) Waiting to run
JS Lint / lint (push) Waiting to run
HTMLProofer / test (2.7) (push) Waiting to run
HTMLProofer / test (3.0) (push) Waiting to run
continuous-integration/drone/push Build encountered an error

This commit is contained in:
tobias 2024-07-10 09:56:42 +02:00
parent cc07af72c5
commit dfffae35b2
6 changed files with 160 additions and 20 deletions

32
.drone.yml Normal file
View File

@ -0,0 +1,32 @@
---
kind: pipeline
name: publish pipeline
steps:
- name: publish jekyll container
image: plugins/docker
settings: &docker-build-settings
username: 3wordchant
password:
from_secret: git_autonomic_zone_token_3wc
repo: git.autonomic.zone/autonomic-cooperative/kcl-site
auto_tag: true
registry: git.autonomic.zone
when:
branch:
- main
event:
exclude:
- custom
- name: deploy-site
image: git.coopcloud.tech/coop-cloud/docker-cp-deploy:latest
settings:
host: small-clients.autonomic.zone
service: kcl_autonomic_zone_app
source: /srv/jekyll/dist/
dest: /usr/share/nginx/html/
exec_pre: rm -rf /usr/share/nginx/html/*
deploy_key:
from_secret: drone_ssh_swarm-demo.autonomic.zone
depends_on:
- publish-jekyll-container

View File

@ -1,30 +1,35 @@
FROM ruby:3.0.0 as jekyll # Stage 1: Build the Jekyll site
FROM ruby:3.0.0 AS builder
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \ build-essential \
git \ git \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# used in the jekyll-server image, which is FROM this image # Install the specific version of Bundler
COPY docker-entrypoint.sh /usr/local/bin/ RUN gem install bundler:2.2.13
RUN gem update --system && gem install jekyll && gem cleanup WORKDIR /srv/jekyll
EXPOSE 4000 # Copy Gemfile and Gemfile.lock and install dependencies
COPY Gemfile Gemfile.lock ./
RUN bundle _2.2.13_ install
WORKDIR /site # Copy the rest of the application files
COPY . .
ENTRYPOINT [ "jekyll" ] # Build the Jekyll site
RUN jekyll build -d /dist
CMD [ "--help" ] # Stage 2: Serve the Jekyll site using Nginx
FROM nginx:1.26.0
# build from the image we just built with different metadata WORKDIR /usr/share/nginx/html
FROM jekyll as jekyll-serve
COPY --from=jekyll /usr/local/bin/docker-entrypoint.sh /usr/local/bin/ # Copy the generated site from the builder stage
RUN chmod +x /usr/local/bin/docker-entrypoint.sh COPY --from=builder /dist .
# on every container start, check if Gemfile exists and warn if it's missing # Expose port 80 for the web server
ENTRYPOINT [ "docker-entrypoint.sh" ] EXPOSE 80
CMD [ "bundle", "exec", "jekyll", "serve", "--force_polling", "-H", "0.0.0.0", "-P", "4000" ] CMD ["nginx", "-g", "daemon off;"]

30
Dockerfile.dev Normal file
View File

@ -0,0 +1,30 @@
FROM ruby:3.0.0 as jekyll
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
git \
&& rm -rf /var/lib/apt/lists/*
# used in the jekyll-server image, which is FROM this image
COPY docker-entrypoint.sh /usr/local/bin/
RUN gem update --system && gem install jekyll && gem cleanup
EXPOSE 4000
WORKDIR /site
ENTRYPOINT [ "jekyll" ]
CMD [ "--help" ]
# build from the image we just built with different metadata
FROM jekyll as jekyll-serve
COPY --from=jekyll /usr/local/bin/docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# on every container start, check if Gemfile exists and warn if it's missing
ENTRYPOINT [ "docker-entrypoint.sh" ]
CMD [ "bundle", "exec", "jekyll", "serve", "--force_polling", "-H", "0.0.0.0", "-P", "4000" ]

9
docker-compose.dev.yml Normal file
View File

@ -0,0 +1,9 @@
# no version needed since 2020
services:
jekyll:
image: git.autonomic.zone/autonomic-cooperative/kcl-site-dev:latest
volumes:
- .:/site
ports:
- '4000:4000'

View File

@ -1,9 +1,37 @@
# no version needed since 2020 ---
version: "3.8"
services: services:
jekyll: app:
image: git.autonomic.zone/autonomic-cooperative/kcl-site:latest image: git.autonomic.zone/autonomic-cooperative/kcl-site:latest
networks:
- proxy
volumes: volumes:
- .:/site - html_content:/usr/share/nginx/html
ports: configs:
- '4000:4000' - source: nginx_conf
target: /etc/nginx/nginx.conf
deploy:
update_config:
failure_action: rollback
order: start-first
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}-jekyll.loadbalancer.server.port=80"
- "traefik.http.routers.${STACK_NAME}-jekyll.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}-jekyll.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}-jekyll.tls.certresolver=production"
networks:
proxy:
external: true
internal:
volumes:
html_content:
configs:
nginx_conf:
name: ${STACK_NAME}_nginx_conf_${NGINX_CONF_VERSION}
file: nginx.conf
template_driver: golang

36
nginx.conf Normal file
View File

@ -0,0 +1,36 @@
events {
worker_connections 1024;
}
http {
include mime.types;
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
server {
listen 80;
location / {
root /usr/share/nginx/html;
try_files $uri $uri/ =404;
}
location /error_page.html {
internal;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js|htm|html)$ {
root /usr/share/nginx/html;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
error_page 404 /error_page.html;
}
}