refactor
This commit is contained in:
6
build/deploy.sh
Executable file → Normal file
6
build/deploy.sh
Executable file → Normal 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/
|
||||
|
||||
36
build/docker-compose.dev.yml
Normal file
36
build/docker-compose.dev.yml
Normal 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"
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Write deploy timestamp to disk
|
||||
timestamp=$(date +%s)
|
||||
echo $timestamp > theme/.timestamp
|
||||
@@ -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
1
build/purge_cache.sh
Executable file → Normal 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"
|
||||
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
);
|
||||
Reference in New Issue
Block a user