mirror of
https://git.fsfe.org/FSFE/fsfe-local-build.git
synced 2026-04-20 19:33:05 +02:00
Compare commits
13 Commits
docker-dev
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40855e2d7b | ||
|
|
8b184e1741 | ||
|
095ed704ce
|
|||
|
|
d625a6e2fa | ||
|
65aa5a10a4
|
|||
|
d0ea6c0226
|
|||
|
|
0953ce99bb | ||
|
|
294a2ff8b0 | ||
|
|
a67c7aee6d | ||
|
|
4489cc1537 | ||
|
|
736a24329e | ||
|
|
ab1d56dd2d | ||
|
|
47dbbc76a8 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,7 +1,11 @@
|
||||
config.cfg
|
||||
lighttpd-fsfe.conf
|
||||
pywebserver-fsfe.log
|
||||
fsfe.org
|
||||
fsfe-website
|
||||
|
||||
lighttpd-fsfe*.log
|
||||
php-errors.log
|
||||
|
||||
# ignore everything in fsfe.org/ and status/ but keep the folders
|
||||
fsfe.org/*
|
||||
|
||||
22
Dockerfile
Normal file
22
Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
||||
FROM alpine:3.9
|
||||
|
||||
RUN apk add --no-cache \
|
||||
bash \
|
||||
bash-completion \
|
||||
coreutils \
|
||||
diffutils \
|
||||
findutils \
|
||||
inotify-tools \
|
||||
libxml2-utils \
|
||||
libxslt \
|
||||
make \
|
||||
procps \
|
||||
python3 \
|
||||
rsync
|
||||
|
||||
RUN mkdir -p /fsfe-local-build/fsfe.org
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
CMD sh /fsfe-local-build/docker-cmd.sh
|
||||
|
||||
48
README.md
48
README.md
@@ -1,5 +1,49 @@
|
||||
# FSFE Local Build
|
||||
# FSFE Website Local Build
|
||||
|
||||
This is a collection of scripts and configuration files necessary to build fsfe.org websites locally.
|
||||
This is a collection of scripts, tools and configuration files necessary to build fsfe.org websites locally.
|
||||
|
||||
Full instructions can be found in FSFE's wiki: https://wiki.fsfe.org/TechDocs/Mainpage/BuildLocally
|
||||
|
||||
## Docker based development environment
|
||||
|
||||
For convenience local development you may want to use the docker contaienr provided by this repo.
|
||||
|
||||
The container contains everything you need to work on the website including serving a preview, building the static pages and the CSS files.
|
||||
|
||||
### Requirements
|
||||
|
||||
* Docker https://docs.docker.com/install/
|
||||
* Docker Compose https://docs.docker.com/compose/install/
|
||||
* Patience (for the website build)
|
||||
|
||||
### Website Dev Instructions
|
||||
|
||||
#### Initial set up
|
||||
|
||||
Just run the following command for the initial setup:
|
||||
|
||||
```
|
||||
./docker-setup.sh
|
||||
```
|
||||
|
||||
⚠ The command may run some hours, since it does the initial full build of the website.
|
||||
|
||||
#### Development
|
||||
|
||||
Spin up the container (⚠ takes some minutes):
|
||||
|
||||
docker-compose up
|
||||
|
||||
The website should now be available on your machine under http://127.0.0.1:8000/.
|
||||
|
||||
Build a single page after changes (e.g. `index.de.xhtml`):
|
||||
|
||||
```
|
||||
docker exec \
|
||||
--workdir /fsfe-local-build/fsfe.org \
|
||||
fsfe-local-build \
|
||||
bash ../fsfe-preview.sh ../fsfe-website/index.de.xhtml
|
||||
```
|
||||
|
||||
Style modifications in `fsfe-website/look` trigger a re build of the styles.
|
||||
After modifications a page reload shoud show the changes.
|
||||
|
||||
32
config.cfg.docker
Normal file
32
config.cfg.docker
Normal file
@@ -0,0 +1,32 @@
|
||||
### BUILD DIRECTORIES ###
|
||||
|
||||
# Cloned Git directory (repository with XHTML source files)
|
||||
LOC_trunk=/fsfe-local-build/fsfe-website
|
||||
|
||||
# Directory in which the result of the build process (html files) will be saved
|
||||
LOC_out=/fsfe-local-build/fsfe.org
|
||||
|
||||
|
||||
### LOCAL WEBSERVER ###
|
||||
|
||||
# Choose your local webserver.
|
||||
# Default is "python" which is python3's built-in http.server module (SimpleHTTP) that is available on most distributions
|
||||
# Use "lighttpd" if you want to use the Lighttpd webserver. This has to be configured manually (see guide)
|
||||
HTTPD=lighttpd
|
||||
|
||||
|
||||
### ADVANCED ###
|
||||
|
||||
# Directory of the secondary Git directory with which you made a first full build.
|
||||
# Avoids having some generated files in your clean trunk.
|
||||
# Default: Leave empty if you just want to use one Git source directory (recommended)
|
||||
LOC_trunk_dev=
|
||||
|
||||
# Choose on which port the webserver runs. This has no effect for "lighttpd".
|
||||
HTTPD_port=5080
|
||||
|
||||
# If you use other webservers like "lighttpd", this is the path to its config file
|
||||
# Default: points to a lighttpd config file in the same directory as the script
|
||||
# Has no effect if you use the "python" webserver
|
||||
HTTPD_conf=$ROOT/lighttpd-fsfe.conf
|
||||
|
||||
28
docker-cmd.sh
Executable file
28
docker-cmd.sh
Executable file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env bash
|
||||
########################################################################
|
||||
# Copyright (C) 2019 Michael Weimann <mweimann@fsfe.org>
|
||||
########################################################################
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
########################################################################
|
||||
#
|
||||
# This script is executed in docker CMD.
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
# Run the preview server
|
||||
cd /fsfe-local-build/fsfe.org
|
||||
python3 -m http.server
|
||||
|
||||
12
docker-compose.yml
Normal file
12
docker-compose.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
fsfe-local-build:
|
||||
build: .
|
||||
image: fsfe/local-build:1.0
|
||||
container_name: fsfe-local-build
|
||||
ports:
|
||||
- 8000:8000
|
||||
volumes:
|
||||
- .:/fsfe-local-build
|
||||
|
||||
53
docker-setup.sh
Executable file
53
docker-setup.sh
Executable file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
########################################################################
|
||||
# Copyright (C) 2019 Michael Weimann <mweimann@fsfe.org>
|
||||
########################################################################
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
########################################################################
|
||||
#
|
||||
# This script runs the docker dev setup.
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
echo -e "\e[96m→ Cloning the website repo\e[0m"
|
||||
git clone git@git.fsfe.org:FSFE/fsfe-website.git
|
||||
echo ""
|
||||
|
||||
echo -e "\e[96m→ Setting up the config file\e[0m"
|
||||
cp config.cfg.docker config.cfg
|
||||
echo ""
|
||||
|
||||
echo -e "\e[96m→ Linking the look directory\e[0m"
|
||||
ln -s ../fsfe-website/look fsfe.org/look
|
||||
echo ""
|
||||
|
||||
echo -e "\e[96m→ Starting the container\e[0m"
|
||||
docker-compose up --build -d
|
||||
echo ""
|
||||
|
||||
echo -e "\e[96m→ Initial full build\e[0m"
|
||||
echo -e "\e[33m⚠ This may take some hours\e[0m"
|
||||
docker exec fsfe-local-build \
|
||||
bash /fsfe-local-build/fsfe-website/build/build_main.sh \
|
||||
build_into /fsfe-local-build/fsfe.org/ \
|
||||
--statusdir /fsfe-local-build/status/ \
|
||||
|| true
|
||||
echo ""
|
||||
|
||||
echo -e "\e[96m→ Stopping the container\e[0m"
|
||||
docker-compose stop
|
||||
echo ""
|
||||
|
||||
26
fsfe-build.sh
Executable file
26
fsfe-build.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# Start a build of the fsfe-website checkout in the current working directory
|
||||
# =============================================================================
|
||||
# SPDX-FileCopyrightText: © 2020, 2021 Reinhard Müller <reinhard@fsfe.org>
|
||||
# SPDX-License-Identifier: WTFPL
|
||||
# =============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
# Find out fsfe-website directory
|
||||
gitdir="$(git rev-parse --show-toplevel)"
|
||||
|
||||
# Find out fsfe-local-build directory
|
||||
builddir="$(dirname "$(readlink -f "$0")")"
|
||||
|
||||
# Start the build
|
||||
echo "Building from ${gitdir} into ${builddir}/fsfe.org"
|
||||
case "$1" in
|
||||
--full|-f)
|
||||
"${gitdir}/build/build_main.sh" build_into "${builddir}/fsfe.org" --statusdir "${builddir}/fsfe.org/status.fsfe.org/fsfe.org"
|
||||
;;
|
||||
*)
|
||||
"${gitdir}/build/build_main.sh" build_run "${builddir}/fsfe.org" --statusdir "${builddir}/fsfe.org/status.fsfe.org/fsfe.org"
|
||||
;;
|
||||
esac
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
########################################################################
|
||||
# Copyright (C) 2016 Max Mehl <max.mehl@fsfe.org>
|
||||
########################################################################
|
||||
@@ -130,11 +130,11 @@ for ((i=1; i <= $numargs; i++)); do
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# TEST if a DEV SVN directory is used. If yes, copy clean file to this Dir
|
||||
# TEST if a DEV Git directory is used. If yes, copy clean file to this Dir
|
||||
if [ "$LOC_trunk_dev" != "" ]; then
|
||||
SRC_full_dev=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_trunk_dev|")
|
||||
echo_INFO "A \"dirty\" Development SVN directory ($LOC_trunk_dev) is being used. Copy file from clean SVN directory ($LOC_trunk) to Development directory..."
|
||||
cp $SRC_full $SRC_full_dev # copy file from clean SVN to dev/dirty SVN
|
||||
echo_INFO "A \"dirty\" Development Git directory ($LOC_trunk_dev) is being used. Copy file from clean Git directory ($LOC_trunk) to Development directory..."
|
||||
cp $SRC_full $SRC_full_dev # copy file from clean Git to dev/dirty Git
|
||||
SRC_full=$SRC_full_dev
|
||||
LOC_trunk=$LOC_trunk_dev
|
||||
fi
|
||||
@@ -142,7 +142,14 @@ for ((i=1; i <= $numargs; i++)); do
|
||||
echo_INFO "Using file $SRC_full as source..."
|
||||
|
||||
### TRANSFORM XHTML file path
|
||||
DST_full=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_out|") # replace SVN directory by build/HTTP destination
|
||||
DST_full=$(echo $SRC_full | sed -E "s|$LOC_trunk|$LOC_out|") # replace Git directory by build/HTTP destination
|
||||
|
||||
### Create destination directory if necessary
|
||||
DST_full_dir="$(dirname $DST_full)"
|
||||
if [ ! -e "$DST_full_dir" ]; then
|
||||
echo_INFO "Creating destination directory $DST_full_dir"
|
||||
mkdir -p "$DST_full_dir"
|
||||
fi
|
||||
|
||||
### BUILD/COPY FILE depending on file extension
|
||||
ftype=${SRC_full##*.} # get extension of file
|
||||
@@ -159,8 +166,8 @@ for ((i=1; i <= $numargs; i++)); do
|
||||
$LOC_trunk/build/build_main.sh process_file $SRC_full > $DST_full
|
||||
|
||||
else # just copy file
|
||||
echo_INFO "File type ($ftype) is detected as not to be built. Just copying it to $DST_full ..."
|
||||
cp $SRC_full $DST_full
|
||||
echo_INFO "File type ($ftype) is detected as not to be built. Just linking it to $DST_full ..."
|
||||
ln -sf $SRC_full $DST_full
|
||||
fi
|
||||
|
||||
|
||||
@@ -173,7 +180,7 @@ for ((i=1; i <= $numargs; i++)); do
|
||||
echo_INFO "$HTTPD webserver already seems to be running."
|
||||
fi
|
||||
elif [ "$HTTPD" == "lighttpd" ]; then
|
||||
if [ ! $(pgrep lighttpd) ]; then # lighttpd
|
||||
if [ ! $(pgrep -f "lighttpd.*${HTTPD_conf}") ]; then # lighttpd
|
||||
echo_INFO "Starting $HTTPD webserver"
|
||||
/usr/sbin/lighttpd -f "$HTTPD_conf"
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user