This commit is contained in:
2023-01-26 20:55:52 +00:00
parent 33f604f5cb
commit 7bd647a7a0
109 changed files with 19909 additions and 15092 deletions

6
build/deploy.sh Executable file → Normal file
View File

@@ -8,6 +8,6 @@ hash rsync 2>/dev/null || { echo >&2 "Error: rsync is not installed. Aborting.";
[ -z "$SSH_IP" ] && { echo >&2 "Error: SSH_IP is missing. Aborting."; exit 1; }
[ -z "$SSH_USER" ] && { echo >&2 "Error: SSH_USER is missing. Aborting."; exit 1; }
# Deploy theme with rsync
rsync -e "ssh -o StrictHostKeyChecking=no" -avzuh --progress \
theme/. $SSH_USER@$SSH_IP:~/windycoys_theme_$1
# Deploy theme
scp ./build/docker-compose.yml $SSH_USER@$SSH_IP:~/windycoys/
scp -r ./dist $SSH_USER@$SSH_IP:~/windycoys/

View File

@@ -0,0 +1,36 @@
version: "3.8"
services:
db:
image: mariadb:10.8
container_name: windycoys_db
volumes:
- ../.tmp/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${dbRootPassword}
- MYSQL_PASSWORD=${dbPassword}
- MYSQL_DATABASE=${dbDatabase}
- MYSQL_USER=${dbUser}
restart: unless-stopped
wordpress:
image: wordpress:latest
container_name: windycoys_wordpress
environment:
- WORDPRESS_DB_HOST=windycoys_db
- WORDPRESS_DB_USER=${dbUser}
- WORDPRESS_DB_PASSWORD=${dbPassword}
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DEBUG=1
volumes:
- ../.tmp/wp-content:/var/www/html/wp-content
- ../dist:/var/www/html/wp-content/themes/windycoys
restart: unless-stopped
depends_on:
- db
browser_sync:
image: windycoys-browser-sync:latest
container_name: windycoys_browser_sync
volumes:
- ../dist:/usr/src/app/dist
ports:
- "3000:3000"

View File

@@ -1,22 +1,28 @@
wordpress:
environment:
- WORDPRESS_DB_HOST=db
- WORDPRESS_DB_PASSWORD=password
- WORDPRESS_DB_USER=windycoys
image: 'wordpress:php7.0-apache'
links:
- db
ports:
- "80:80"
volumes:
- ../.tmp/wp-content:/var/www/html/wp-content
- ../theme:/var/www/html/wp-content/themes/windycoys
db:
environment:
- MYSQL_DATABASE=wordpress
- MYSQL_PASSWORD=password
- MYSQL_ROOT_PASSWORD=password
- MYSQL_USER=windycoys
image: 'mariadb:latest'
volumes:
- ../.tmp/mysql:/var/lib/mysql
version: "3.8"
services:
db:
image: mariadb:10.8
container_name: windycoys_db
volumes:
- ./.tmp/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${dbRootPassword}
- MYSQL_PASSWORD=${dbPassword}
- MYSQL_DATABASE=${dbDatabase}
- MYSQL_USER=${dbUser}
restart: unless-stopped
wordpress:
image: wordpress:latest
container_name: windycoys_wordpress
environment:
- WORDPRESS_DB_HOST=windycoys_db
- WORDPRESS_DB_USER=${dbUser}
- WORDPRESS_DB_PASSWORD=${dbPassword}
- WORDPRESS_DB_NAME=wordpress
- WORDPRESS_TABLE_PREFIX=wp_
volumes:
- ./.tmp/wp-content:/var/www/html/wp-content
- ./dist:/var/www/html/wp-content/themes/windycoys
restart: unless-stopped
depends_on:
- db

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env bash
# Write deploy timestamp to disk
timestamp=$(date +%s)
echo $timestamp > theme/.timestamp

View File

@@ -1,34 +0,0 @@
const { writeFile } = require("fs");
const { resolve } = require("path");
const imagemin = require("imagemin");
const imageminPngquant = require("imagemin-pngquant");
const imageminGifsicle = require("imagemin-gifsicle");
const imageminJpegtran = require("imagemin-jpegtran");
imagemin(["images/*.{png,jpg,gif}"], "theme/images", {
plugins: [
imageminPngquant({
quality: [0.65, 0.8],
}),
imageminGifsicle({
optimizationLevel: 3,
}),
imageminJpegtran(),
],
})
.then(files => {
files.forEach(file => {
const path = resolve(__dirname, "../", file.path);
writeFile(path, file.data, error => {
if (error) {
process.stdout.write(`${error}\n`);
process.exit(1);
}
process.stdout.write(`File written: ${path}\n`);
});
});
})
.catch(error => {
process.stderr.write(`${error}\n`);
process.exit(1);
});

1
build/purge_cache.sh Executable file → Normal file
View File

@@ -12,4 +12,3 @@ curl -X DELETE \
-H "X-Auth-Email: $CLOUDFLARE_EMAIL" \
--data '{"purge_everything":true}' \
"https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_IDENTIFIER/purge_cache"

View File

@@ -1,99 +0,0 @@
const { resolve } = require("path");
const { execSync } = require("child_process");
const { upAll, stop } = require("docker-compose");
const browsersync = require("browser-sync");
const mysql = require("mysql");
const name = "windycoys";
const dockerOptions = {
cwd: resolve(__dirname),
log: true,
};
const browserSyncOptions = {
files: ["theme/**/*"],
watchtask: true,
open: false,
};
const mysqlConfig = {
user: "root",
password: "password",
database: "wordpress",
};
process.env.COMPOSE_PROJECT_NAME = name;
// Get IP address
const getIpAddr = function getIpAddr(id) {
return execSync(
`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${id}`,
)
.toString("utf8")
.trim();
};
// Update URIs in MYSQL database
const updateUriData = function updateUriData(wordpress, db) {
mysqlConfig.host = db;
const con = mysql.createConnection(mysqlConfig);
con.connect();
const query = `UPDATE wp_options SET option_value='http://${wordpress}' WHERE option_name in ('siteurl', 'home')`;
con.query(query, error => {
if (error) {
process.stderr.write(`Error: ${error.sqlMessage}\n`);
process.exit(1);
}
});
con.end();
};
// Register Exit handler to stop Docker containers on exit
const exitHandler = function exitHandler() {
stop(dockerOptions).then(
() => {
process.stdout.write("\n");
process.exit();
},
err => {
process.stderr.write(`Error: ${err.message}\n`);
process.exit(1);
},
);
};
process.on("beforeExit", exitHandler.bind());
process.on("SIGINT", exitHandler.bind());
process.on("SIGUSR1", exitHandler.bind());
process.on("SIGUSR2", exitHandler.bind());
process.on("uncaughtException", exitHandler.bind());
// Start Docker containers
upAll(dockerOptions).then(
() => {
process.stdout.write(
"Docker containers launched, starting browser-sync...",
);
const wordpress = getIpAddr(`${name}_wordpress_1`);
const db = getIpAddr(`${name}_db_1`);
if (wordpress && db) {
updateUriData(wordpress, db);
const bs = browsersync.create();
browserSyncOptions.proxy = wordpress;
bs.init(browserSyncOptions);
} else {
process.stderr.write(
"Error: No IP address for Docker containers. Aborting.\n",
);
process.exit(1);
}
},
err => {
process.stderr.write(`Error: ${err.message}\n`);
process.exit(1);
},
);