Add CD workflow to synchronize the Git Mesh
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
name: Fortress Self-Archival
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
archive:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out Fortress
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Kubectl
|
||||
run: |
|
||||
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
|
||||
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
|
||||
|
||||
- name: Pin to IPFS Sanctum
|
||||
run: |
|
||||
# Copy to IPFS pod
|
||||
POD_NAME=$(kubectl get pods -l app=ipfs-node -o jsonpath="{.items[0].metadata.name}")
|
||||
kubectl exec $POD_NAME -- mkdir -p /tmp/archives/knowledge-fortress
|
||||
kubectl cp . $POD_NAME:/tmp/archives/knowledge-fortress
|
||||
|
||||
# Generate Hash
|
||||
CID=$(kubectl exec $POD_NAME -- ipfs add -r -Q /tmp/archives/knowledge-fortress)
|
||||
echo "========================================="
|
||||
echo "Knowledge Engineering Fortress Archived!"
|
||||
echo "CID: $CID"
|
||||
echo "========================================="
|
||||
|
||||
# Clean up
|
||||
kubectl exec $POD_NAME -- rm -rf /tmp/archives/knowledge-fortress
|
||||
|
||||
- name: Mirror to GitHub
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
if [ -n "$GITHUB_TOKEN" ]; then
|
||||
git remote add github https://x-access-token:${GITHUB_TOKEN}@github.com/mrhavens/${{ github.event.repository.name }}.git
|
||||
git push --force --all github
|
||||
git push --force --tags github
|
||||
echo "Successfully mirrored to GitHub!"
|
||||
else
|
||||
echo "GITHUB_TOKEN secret not found. Skipping GitHub mirror."
|
||||
fi
|
||||
|
||||
- name: Sync to Radicle Network
|
||||
run: |
|
||||
RAD_POD=$(kubectl get pods -n radicle -l app=radicle -o jsonpath="{.items[0].metadata.name}")
|
||||
kubectl exec -n radicle $RAD_POD -- mkdir -p /tmp/sync-repo
|
||||
# We use tar to ensure .git and all hidden files are cleanly preserved
|
||||
tar czf - . | kubectl exec -n radicle -i $RAD_POD -- tar xzf - -C /tmp/sync-repo
|
||||
|
||||
kubectl exec -n radicle $RAD_POD -- bash -c '
|
||||
export RAD_HOME=/radicle/.radicle
|
||||
export RAD_PASSPHRASE="sovereign"
|
||||
export PATH=$PATH:/radicle/bin
|
||||
cd /tmp/sync-repo
|
||||
chown -R $(id -u):$(id -g) .
|
||||
|
||||
# Check if repository is already initialized in Radicle
|
||||
if ! rad inspect > /dev/null 2>&1; then
|
||||
echo "Initializing Radicle repository..."
|
||||
rad init --name "${{ github.event.repository.name }}" --description "Sovereign Canon" --default-branch master --public --no-confirm
|
||||
else
|
||||
echo "Pushing updates to Radicle..."
|
||||
git push rad master
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
cd /
|
||||
rm -rf /tmp/sync-repo
|
||||
'
|
||||
Reference in New Issue
Block a user