This commit is contained in:
14
.build.yml
14
.build.yml
@@ -37,19 +37,11 @@ tasks:
|
|||||||
|
|
||||||
# Start Ruby server for dithering images
|
# Start Ruby server for dithering images
|
||||||
- dither: |
|
- dither: |
|
||||||
cd bin/dither
|
true
|
||||||
sudo bundle install
|
|
||||||
ROOT=~/davideisinger.com/content \
|
|
||||||
KEY=~/secret.key \
|
|
||||||
bundle exec rackup -p 4567 -D
|
|
||||||
|
|
||||||
# Build site
|
# Build site
|
||||||
- hugo: |
|
- hugo: |
|
||||||
HUGO_PARAMS_GIT_COMMIT=$(git rev-parse HEAD) \
|
./bin/build
|
||||||
DITHER_SERVER=http://localhost:4567 \
|
|
||||||
hugo --minify
|
|
||||||
find public -name "*.enc" -type f -delete
|
|
||||||
find public/elsewhere -name "*.gmi" -type f -delete
|
|
||||||
|
|
||||||
# Sync files to production server
|
# Sync files to production server
|
||||||
- deploy: |
|
- deploy: |
|
||||||
@@ -63,7 +55,7 @@ tasks:
|
|||||||
-v \
|
-v \
|
||||||
-r \
|
-r \
|
||||||
--delete \
|
--delete \
|
||||||
public/* \
|
public/ \
|
||||||
www-data@$SERVER_IP:/var/www/davideisinger.com \
|
www-data@$SERVER_IP:/var/www/davideisinger.com \
|
||||||
2>/dev/null
|
2>/dev/null
|
||||||
set -x
|
set -x
|
||||||
|
|||||||
46
.gitea/workflows/deploy.yaml
Normal file
46
.gitea/workflows/deploy.yaml
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
name: Deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
HUGO_VERSION: 0.160.1
|
||||||
|
DEPLOY_DIR: /var/www/davideisinger.com
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Install packages
|
||||||
|
run: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y curl imagemagick rsync ruby-full wget
|
||||||
|
wget --quiet https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
|
||||||
|
apt-get install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
|
||||||
|
gem install bundler
|
||||||
|
|
||||||
|
- name: Restore secret key
|
||||||
|
env:
|
||||||
|
SECRET_KEY: ${{ secrets.SECRET_KEY }}
|
||||||
|
run: |
|
||||||
|
printf '%s' "$SECRET_KEY" > secret.key
|
||||||
|
|
||||||
|
- name: Verify RSS template diff
|
||||||
|
run: |
|
||||||
|
curl -s https://raw.githubusercontent.com/gohugoio/hugo/refs/tags/v${HUGO_VERSION}/tpl/tplimpl/embedded/templates/rss.xml \
|
||||||
|
| diff - ./themes/v2/layouts/_default/rss.xml \
|
||||||
|
| wc -l \
|
||||||
|
| grep 7
|
||||||
|
|
||||||
|
- name: Build site
|
||||||
|
run: ./bin/build
|
||||||
|
|
||||||
|
- name: Deploy site
|
||||||
|
run: ./bin/deploy-local "${DEPLOY_DIR}"
|
||||||
12
README.md
12
README.md
@@ -2,6 +2,18 @@
|
|||||||
|
|
||||||
[1]: https://davideisinger.com
|
[1]: https://davideisinger.com
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
SourceHut still uses [`.build.yml`](/Users/dce/code/davideisinger.com/.build.yml).
|
||||||
|
|
||||||
|
Gitea uses [`.gitea/workflows/deploy.yaml`](/Users/dce/code/davideisinger.com/.gitea/workflows/deploy.yaml), which mirrors the same build steps and deploys directly into `/var/www/davideisinger.com`.
|
||||||
|
|
||||||
|
For that workflow to succeed, the Gitea runner needs:
|
||||||
|
|
||||||
|
- a `SECRET_KEY` Actions secret containing the contents of `secret.key`
|
||||||
|
- write access to `/var/www/davideisinger.com`
|
||||||
|
- that path mounted into the job environment if the runner is containerized
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
© [CC BY 4.0 License][2]
|
© [CC BY 4.0 License][2]
|
||||||
|
|||||||
41
bin/build
Executable file
41
bin/build
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||||
|
dither_dir="${repo_root}/bin/dither"
|
||||||
|
|
||||||
|
pushd "${dither_dir}" >/dev/null
|
||||||
|
bundle install
|
||||||
|
ROOT="${repo_root}/content" KEY="${repo_root}/secret.key" bundle exec rackup -p 4567 &
|
||||||
|
dither_pid=$!
|
||||||
|
popd >/dev/null
|
||||||
|
|
||||||
|
cleanup() {
|
||||||
|
if kill -0 "${dither_pid}" 2>/dev/null; then
|
||||||
|
kill "${dither_pid}" 2>/dev/null || true
|
||||||
|
wait "${dither_pid}" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
trap cleanup EXIT INT TERM
|
||||||
|
|
||||||
|
for _ in {1..50}; do
|
||||||
|
if (echo >/dev/tcp/localhost/4567) >/dev/null 2>&1; then
|
||||||
|
ready=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "${ready:-0}" -ne 1 ]]; then
|
||||||
|
echo "dither server did not start on port 4567" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd "${repo_root}" >/dev/null
|
||||||
|
rm -rf public
|
||||||
|
HUGO_PARAMS_GIT_COMMIT="$(git rev-parse HEAD)" \
|
||||||
|
DITHER_SERVER=http://localhost:4567 \
|
||||||
|
hugo --minify
|
||||||
|
find public -name "*.enc" -type f -delete
|
||||||
|
find public/elsewhere -name "*.gmi" -type f -delete
|
||||||
|
popd >/dev/null
|
||||||
15
bin/deploy-local
Executable file
15
bin/deploy-local
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||||
|
target_dir="${1:-/var/www/davideisinger.com}"
|
||||||
|
|
||||||
|
pushd "${repo_root}" >/dev/null
|
||||||
|
mkdir -p "${target_dir}"
|
||||||
|
rsync \
|
||||||
|
-v \
|
||||||
|
-r \
|
||||||
|
--delete \
|
||||||
|
public/ \
|
||||||
|
"${target_dir}/"
|
||||||
|
popd >/dev/null
|
||||||
Reference in New Issue
Block a user