<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-guide.
</pre>
<p><a href="https://github.com/macports/macports-guide/commit/5ddaed9f1d68d1ef13f86cef218968dc493d609c">https://github.com/macports/macports-guide/commit/5ddaed9f1d68d1ef13f86cef218968dc493d609c</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 5ddaed9 Add build and deploy action
</span>5ddaed9 is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 5ddaed9f1d68d1ef13f86cef218968dc493d609c
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Thu Mar 20 17:48:08 2025 +1100
<span style='display:block; white-space:pre;color:#404040;'> Add build and deploy action
</span>---
.github/workflows/bootstrap.sh | 94 ++++++++++++++++++++++++++++++++++++++++++
.github/workflows/main.yml | 72 ++++++++++++++++++++++++++++++++
2 files changed, 166 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/.github/workflows/bootstrap.sh b/.github/workflows/bootstrap.sh
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..474e053
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/.github/workflows/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,94 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/bin/bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set -e
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+printtag() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # GitHub Actions tag format
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "::$1::${2-}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printtag "group" "$1"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ printtag "endgroup"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MACPORTS_VERSION=2.10.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+OS_MAJOR=$(uname -r | cut -f 1 -d .)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+OS_ARCH=$(uname -p)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MACPORTS_FILENAME=MacPorts-${MACPORTS_VERSION}-${OS_MAJOR}.tar.bz2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Fetching files"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Download resources in background ASAP but use later.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Use /usr/bin/curl so that we don't use Homebrew curl.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Fetching MacPorts..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/usr/bin/curl -fsSLO "https://github.com/macports/macports-ci-files/releases/download/v${MACPORTS_VERSION}/${MACPORTS_FILENAME}" &
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+curl_mpbase_pid=$!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Disabling Spotlight"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Disable Spotlight indexing. We don't need it, and it might cost performance
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo mdutil -a -i off
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Uninstalling Homebrew"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Move directories to /opt/*-off
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Moving directories..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo mkdir /opt/local-off /opt/homebrew-off
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test ! -d /usr/local || /usr/bin/sudo /usr/bin/find /usr/local -mindepth 1 -maxdepth 1 -type d -print -exec /bin/mv {} /opt/local-off/ \;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test ! -d /opt/homebrew || /usr/bin/sudo /usr/bin/find /opt/homebrew -mindepth 1 -maxdepth 1 -type d -print -exec /bin/mv {} /opt/homebrew-off/ \;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Unlink files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Removing files..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test ! -d /usr/local || /usr/bin/sudo /usr/bin/find /usr/local -mindepth 1 -maxdepth 1 -type f -print -delete
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test ! -d /opt/homebrew || /usr/bin/sudo /usr/bin/find /opt/homebrew -mindepth 1 -maxdepth 1 -type f -print -delete
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Rehash to forget about the deleted files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+hash -r
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Selecting Xcode version"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+case "$OS_MAJOR" in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 22) sudo xcode-select --switch /Applications/Xcode_14.3.1.app/Contents/Developer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 23) sudo xcode-select --switch /Applications/Xcode_15.4.app/Contents/Developer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+esac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Installing MacPorts"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Install MacPorts built by https://github.com/macports/macports-base/tree/master/.github
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if ! wait $curl_mpbase_pid; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Fetching base failed: $?"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "Extracting..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo tar -xpf "${MACPORTS_FILENAME}" -C /
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+rm -f "${MACPORTS_FILENAME}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Configuring MacPorts"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Set PATH for portindex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+source /opt/local/share/macports/setupenv.bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# CI is not interactive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "ui_interactive no" | sudo tee -a /opt/local/etc/macports/macports.conf >/dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Also try downloading archives from the private server
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+echo "archive_site_local https://packages-private.macports.org/:tbz2" | sudo tee -a /opt/local/etc/macports/macports.conf >/dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Running postflight"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Create macports user
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo /opt/local/libexec/macports/postflight/postflight
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+begingroup "Syncing ports tree"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+sudo /opt/local/bin/port sync
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endgroup
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4f0c4f2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/.github/workflows/main.yml
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,72 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name: "Build & deploy MacPorts Guide"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+on:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ push:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ branches:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - master
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ paths-ignore:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - '.github/**'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+permissions:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ contents: read
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+jobs:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ build:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ name: Build and deploy Guide
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ concurrency:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ group: mirror-${{ github.ref }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ runs-on: macos-latest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ steps:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Checkout macports-guide
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uses: actions/checkout@v4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ with:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fetch-depth: 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path: guide
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ show-progress: false
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Bootstrap MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: . ports/.github/workflows/bootstrap.sh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Install dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Add MacPorts paths to $PATH for the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # subsequent steps.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "/opt/local/bin" >> $GITHUB_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "/opt/local/sbin" >> $GITHUB_PATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Installing dependencies..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sudo port install libxml2 libxslt docbook-xsl-ns docbook-xml-5.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Done installing dependencies."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Build Guide
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Validating Guide source..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ make -C guide validate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Building Guide HTML..."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ make -C guide all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Done building Guide."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - name: Deploy Guide
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ env:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #GUIDE_SSH_HOST: ${{ secrets.GUIDE_SSH_HOST }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #GUIDE_SSH_HOSTKEY: ${{ secrets.GUIDE_SSH_HOSTKEY }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #GUIDE_SSH_USER: ${{ secrets.GUIDE_SSH_USER }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #GUIDE_SSH_KEY: ${{ secrets.GUIDE_SSH_KEY }}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ run: |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set -eu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #echo "$GUIDE_SSH_KEY" > ssh_key
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #chmod 0600 ssh_key
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #echo "$GUIDE_SSH_HOSTKEY" > ssh_known_hosts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #export RSYNC_RSH="ssh -l $GUIDE_SSH_USER -i ssh_key -oUserKnownHostsFile=ssh_known_hosts"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #echo "Uploading Guide HTML"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "Placeholder for Uploading Guide HTML"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ls -R guide/guide/html
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #rsync -avz --progress ./guide/guide/html/ "${GUIDE_SSH_HOST}:guide/"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #rm -f ssh_key ssh_known_hosts
</span></pre><pre style='margin:0'>
</pre>