Add website #73
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# @license Apache-2.0 | |
# | |
# Copyright 2024 8 Hobbies, LLC <[email protected]> | |
# | |
# Licensed under the Apache License, Version 2.0(the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
name: Build and Deploy Pages | |
on: | |
push: | |
branches: ["master"] | |
pull_request: | |
branches: ["master"] | |
schedule: | |
- cron: '0 1 * * *' | |
env: | |
DIST_ROOT_DIR: _site/dists/latest | |
jobs: | |
build: | |
name: Build Pages | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Create the dist root directory | |
run: | | |
mkdir -p ${DIST_ROOT_DIR} | |
- name: Download latest Hugo | |
run: scripts/download_latest_hugo_deb.sh | |
- name: Generate Debian Repo files | |
run: scripts/generate_repo_files.sh | |
- name: Configuring signing key | |
run: gpg --import <<< "${{ secrets.SIGNING_KEY }}" | |
- name: Sign Release | |
run: | | |
gpg -u 'Hugo APT Repo 8 Hobbies Signing Bot <[email protected]>' -a -s --clearsign --output ${DIST_ROOT_DIR}/InRelease ${DIST_ROOT_DIR}/Release | |
- name: Make Public Key available | |
run: mv signing-key _site/ | |
- name: Upload GitHub Pages Artifact | |
uses: actions/[email protected] | |
with: | |
path: _site | |
test: | |
name: Test the Repo | |
runs-on: ubuntu-22.04 | |
strategy: | |
matrix: | |
os: ['debian:11', 'debian:12', 'ubuntu:20.04', 'ubuntu:22.04', 'ubuntu:24.04'] | |
container: ${{ matrix.os }} | |
needs: build | |
steps: | |
- uses: actions/[email protected] | |
- name: Decompress Artifact | |
run: | | |
tar xvf github-pages/artifact.tar | |
rm github-pages/artifact.tar | |
rmdir github-pages | |
- name: Install Python and NetCat | |
run: | | |
apt-get update | |
apt-get install -y python3 netcat-openbsd | |
- name: Ensure no Hugo Package in Default Repo | |
run: | | |
if [ -e /etc/apt/sources.list ]; then | |
rm /etc/apt/sources.list | |
fi | |
if [ -d /etc/apt/sources.list.d ]; then | |
rm -f /etc/apt/sources.list.d/* | |
fi | |
apt-get update | |
! apt-cache show hugo | |
- name: Ensure no Hugo installed | |
run: | | |
! type hugo | |
- name: Add the APT Repo | |
run: echo "deb [signed-by=/etc/apt/keyrings/hugo.gpg] http://localhost:9000 latest main" | tee /etc/apt/sources.list.d/hugo.list | |
- name: Trust the Key | |
run: | | |
if [ ! -d /etc/apt/keyrings ]; then | |
mkdir -p /etc/apt/keyrings | |
fi | |
cp ${PWD}/signing-key /etc/apt/keyrings/hugo.gpg | |
- name: Install Hugo | |
run: | | |
python3 -m http.server 9000 & | |
while ! nc -z localhost 9000; do | |
sleep 0.5 | |
done | |
apt-get update | |
apt-get install -y hugo | |
- name: Test running Hugo | |
run: hugo version | |
deploy: | |
name: Deploy Pages | |
if: github.ref == 'refs/heads/master' | |
runs-on: ubuntu-22.04 | |
permissions: | |
pages: write | |
id-token: write | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
needs: [build, test] | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |