mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-05-15 00:32:47 -04:00
distro(Ubuntu): Update Workflow & Dual Series Logic
This commit is contained in:
+61
-204
@@ -22,12 +22,13 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-updates:
|
check-updates:
|
||||||
name: Check for updates
|
name: Check package/series updates
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
outputs:
|
outputs:
|
||||||
has_updates: ${{ steps.check.outputs.has_updates }}
|
has_updates: ${{ steps.check.outputs.has_updates }}
|
||||||
packages: ${{ steps.check.outputs.packages }}
|
targets: ${{ steps.check.outputs.targets }}
|
||||||
|
targets_json: ${{ steps.check.outputs.targets_json }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -35,125 +36,57 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y jq curl git
|
||||||
|
|
||||||
- name: Check for updates
|
- name: Check for updates
|
||||||
id: check
|
id: check
|
||||||
run: |
|
run: |
|
||||||
# Helper function to check dms-git commit
|
chmod +x distro/scripts/ppa-sync-plan.sh
|
||||||
check_dms_git() {
|
|
||||||
local CURRENT_COMMIT=$(git rev-parse --short=8 HEAD)
|
|
||||||
local PPA_VERSION=$(curl -s "https://api.launchpad.net/1.0/~avengemedia/+archive/ubuntu/dms-git?ws.op=getPublishedSources&source_name=dms-git&status=Published" | grep -oP '"source_package_version":\s*"\K[^"]+' | head -1 || echo "")
|
|
||||||
local PPA_COMMIT=$(echo "$PPA_VERSION" | grep -oP '\.[a-f0-9]{8}' | tr -d '.' || echo "")
|
|
||||||
|
|
||||||
if [[ -n "$PPA_COMMIT" && "$CURRENT_COMMIT" == "$PPA_COMMIT" ]]; then
|
|
||||||
echo "📋 dms-git: Commit $CURRENT_COMMIT already exists, skipping"
|
|
||||||
return 1 # No update needed
|
|
||||||
else
|
|
||||||
echo "📋 dms-git: New commit $CURRENT_COMMIT (PPA has ${PPA_COMMIT:-none})"
|
|
||||||
return 0 # Update needed
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Helper function to check stable package tag
|
|
||||||
check_stable_package() {
|
|
||||||
local PKG="$1"
|
|
||||||
local PPA_NAME="$2"
|
|
||||||
# Use git ls-remote to find the latest tag, sorted by version (descending)
|
|
||||||
local LATEST_TAG=$(git ls-remote --tags --refs --sort='-v:refname' https://github.com/AvengeMedia/DankMaterialShell.git | head -n1 | awk -F/ '{print $NF}' | sed 's/^v//')
|
|
||||||
local PPA_VERSION=$(curl -s "https://api.launchpad.net/1.0/~avengemedia/+archive/ubuntu/$PPA_NAME?ws.op=getPublishedSources&source_name=$PKG&status=Published" | grep -oP '"source_package_version":\s*"\K[^"]+' | head -1 || echo "")
|
|
||||||
local PPA_BASE_VERSION=$(echo "$PPA_VERSION" | sed 's/ppa[0-9]*$//')
|
|
||||||
|
|
||||||
if [[ -n "$LATEST_TAG" && "$LATEST_TAG" == "$PPA_BASE_VERSION" ]]; then
|
|
||||||
echo "📋 $PKG: Tag $LATEST_TAG already exists, skipping"
|
|
||||||
return 1 # No update needed
|
|
||||||
else
|
|
||||||
echo "📋 $PKG: New tag ${LATEST_TAG:-unknown} (PPA has ${PPA_BASE_VERSION:-none})"
|
|
||||||
return 0 # Update needed
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main logic
|
|
||||||
REBUILD="${{ github.event.inputs.rebuild_release }}"
|
|
||||||
|
|
||||||
if [[ "${{ github.event_name }}" == "schedule" ]]; then
|
if [[ "${{ github.event_name }}" == "schedule" ]]; then
|
||||||
# Scheduled run - check dms-git only
|
PACKAGE="dms-git"
|
||||||
echo "packages=dms-git" >> $GITHUB_OUTPUT
|
|
||||||
if check_dms_git; then
|
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "has_updates=false" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ -n "${{ github.event.inputs.package }}" ]]; then
|
|
||||||
# Manual workflow trigger
|
|
||||||
PKG="${{ github.event.inputs.package }}"
|
|
||||||
|
|
||||||
if [[ -n "$REBUILD" ]]; then
|
|
||||||
# Rebuild requested - always proceed
|
|
||||||
echo "packages=$PKG" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
echo "🔄 Manual rebuild requested: $PKG (ppa$REBUILD)"
|
|
||||||
|
|
||||||
elif [[ "$PKG" == "all" ]]; then
|
|
||||||
# Check each package and build list of those needing updates
|
|
||||||
PACKAGES_TO_UPDATE=()
|
|
||||||
check_dms_git && PACKAGES_TO_UPDATE+=("dms-git")
|
|
||||||
check_stable_package "dms" "dms" && PACKAGES_TO_UPDATE+=("dms")
|
|
||||||
check_stable_package "dms-greeter" "danklinux" && PACKAGES_TO_UPDATE+=("dms-greeter")
|
|
||||||
|
|
||||||
if [[ ${#PACKAGES_TO_UPDATE[@]} -gt 0 ]]; then
|
|
||||||
echo "packages=${PACKAGES_TO_UPDATE[*]}" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
echo "✓ Packages to update: ${PACKAGES_TO_UPDATE[*]}"
|
|
||||||
else
|
|
||||||
echo "packages=" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=false" >> $GITHUB_OUTPUT
|
|
||||||
echo "✓ All packages up to date"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ "$PKG" == "dms-git" ]]; then
|
|
||||||
if check_dms_git; then
|
|
||||||
echo "packages=$PKG" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "packages=" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=false" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ "$PKG" == "dms" ]]; then
|
|
||||||
if check_stable_package "dms" "dms"; then
|
|
||||||
echo "packages=$PKG" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "packages=" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=false" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ "$PKG" == "dms-greeter" ]]; then
|
|
||||||
if check_stable_package "dms-greeter" "danklinux"; then
|
|
||||||
echo "packages=$PKG" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "packages=" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=false" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
# Unknown package - proceed anyway
|
|
||||||
echo "packages=$PKG" >> $GITHUB_OUTPUT
|
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
echo "Manual trigger: $PKG"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
# Fallback
|
PACKAGE="${{ github.event.inputs.package }}"
|
||||||
echo "packages=dms" >> $GITHUB_OUTPUT
|
fi
|
||||||
echo "has_updates=true" >> $GITHUB_OUTPUT
|
|
||||||
|
REBUILD_RELEASE="${{ github.event.inputs.rebuild_release }}"
|
||||||
|
ARGS=(--package "$PACKAGE" --json)
|
||||||
|
if [[ -n "$REBUILD_RELEASE" ]]; then
|
||||||
|
ARGS+=(--rebuild "$REBUILD_RELEASE")
|
||||||
|
fi
|
||||||
|
|
||||||
|
TARGETS_JSON=$(distro/scripts/ppa-sync-plan.sh "${ARGS[@]}" 2> ppa-audit.log)
|
||||||
|
cat ppa-audit.log
|
||||||
|
|
||||||
|
TARGETS=$(echo "$TARGETS_JSON" | jq -r 'join(" ")')
|
||||||
|
if [[ "$TARGETS_JSON" != "[]" ]]; then
|
||||||
|
echo "has_updates=true" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "targets=$TARGETS" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "targets_json=$TARGETS_JSON" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "Package/series targets: $TARGETS"
|
||||||
|
else
|
||||||
|
echo "has_updates=false" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "targets=" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "targets_json=[]" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "No package/series uploads needed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
upload-ppa:
|
upload-ppa:
|
||||||
name: Upload to PPA
|
name: Upload ${{ matrix.target }}
|
||||||
needs: check-updates
|
needs: check-updates
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: needs.check-updates.outputs.has_updates == 'true'
|
if: needs.check-updates.outputs.has_updates == 'true'
|
||||||
|
timeout-minutes: 120
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
target: ${{ fromJson(needs.check-updates.outputs.targets_json) }}
|
||||||
|
concurrency:
|
||||||
|
group: ppa-dms-${{ matrix.target }}
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -185,106 +118,30 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "$GPG_KEY" | gpg --import
|
echo "$GPG_KEY" | gpg --import
|
||||||
GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d'/' -f2)
|
GPG_KEY_ID=$(gpg --list-secret-keys --keyid-format LONG | grep sec | awk '{print $2}' | cut -d'/' -f2)
|
||||||
echo "DEBSIGN_KEYID=$GPG_KEY_ID" >> $GITHUB_ENV
|
echo "DEBSIGN_KEYID=$GPG_KEY_ID" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Determine packages to upload
|
- name: Upload target
|
||||||
id: packages
|
env:
|
||||||
|
TARGET: ${{ matrix.target }}
|
||||||
run: |
|
run: |
|
||||||
# Use packages determined by check-updates job
|
IFS=':' read -r PACKAGE UBUNTU_SERIES PPA_NUM <<< "$TARGET"
|
||||||
echo "packages=${{ needs.check-updates.outputs.packages }}" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
if [[ "${{ github.event_name }}" == "schedule" ]]; then
|
case "$PACKAGE" in
|
||||||
echo "Triggered by schedule: uploading git package"
|
dms) PPA_NAME="dms" ;;
|
||||||
elif [[ -n "${{ github.event.inputs.package }}" ]]; then
|
dms-git) PPA_NAME="dms-git" ;;
|
||||||
echo "Manual trigger: ${{ needs.check-updates.outputs.packages }}"
|
dms-greeter) PPA_NAME="danklinux" ;;
|
||||||
fi
|
*) echo "::error::Unknown package $PACKAGE"; exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
- name: Upload to PPA
|
echo "Uploading $PACKAGE to $PPA_NAME/$UBUNTU_SERIES with ppa$PPA_NUM"
|
||||||
run: |
|
bash distro/scripts/ppa-upload.sh "$PACKAGE" "$PPA_NAME" "$UBUNTU_SERIES" "$PPA_NUM"
|
||||||
PACKAGES="${{ steps.packages.outputs.packages }}"
|
|
||||||
REBUILD_RELEASE="${{ github.event.inputs.rebuild_release }}"
|
|
||||||
|
|
||||||
if [[ -z "$PACKAGES" ]]; then
|
|
||||||
echo "✓ No packages need uploading. All up to date!"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Export REBUILD_RELEASE so ppa-build.sh can use it
|
|
||||||
if [[ -n "$REBUILD_RELEASE" ]]; then
|
|
||||||
export REBUILD_RELEASE
|
|
||||||
echo "✓ Using rebuild release number: ppa$REBUILD_RELEASE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# PACKAGES can be space-separated list (e.g., "dms-git dms dms-greeter" from "all" check)
|
|
||||||
# Loop through each package and upload
|
|
||||||
for PKG in $PACKAGES; do
|
|
||||||
# Map package to PPA name
|
|
||||||
case "$PKG" in
|
|
||||||
dms)
|
|
||||||
PPA_NAME="dms"
|
|
||||||
;;
|
|
||||||
dms-git)
|
|
||||||
PPA_NAME="dms-git"
|
|
||||||
;;
|
|
||||||
dms-greeter)
|
|
||||||
PPA_NAME="danklinux"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "⚠️ Unknown package: $PKG, skipping"
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
||||||
echo "Uploading $PKG to PPA $PPA_NAME..."
|
|
||||||
if [[ -n "$REBUILD_RELEASE" ]]; then
|
|
||||||
echo "🔄 Using rebuild release number: ppa$REBUILD_RELEASE"
|
|
||||||
fi
|
|
||||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
||||||
# ppa-upload.sh uploads to questing + resolute when series is omitted
|
|
||||||
if ! bash distro/scripts/ppa-upload.sh "$PKG" "$PPA_NAME" "" ${REBUILD_RELEASE:+"$REBUILD_RELEASE"}; then
|
|
||||||
echo "::error::Upload failed for $PKG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Summary
|
- name: Summary
|
||||||
if: always()
|
if: always()
|
||||||
run: |
|
run: |
|
||||||
echo "### PPA Package Upload Summary" >> $GITHUB_STEP_SUMMARY
|
echo "### PPA Package Upload" >> "$GITHUB_STEP_SUMMARY"
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
echo "" >> "$GITHUB_STEP_SUMMARY"
|
||||||
|
echo "- **Target:** ${{ matrix.target }}" >> "$GITHUB_STEP_SUMMARY"
|
||||||
PACKAGES="${{ steps.packages.outputs.packages }}"
|
echo "- **DMS PPA:** https://launchpad.net/~avengemedia/+archive/ubuntu/dms/+packages" >> "$GITHUB_STEP_SUMMARY"
|
||||||
|
echo "- **DMS-Git PPA:** https://launchpad.net/~avengemedia/+archive/ubuntu/dms-git/+packages" >> "$GITHUB_STEP_SUMMARY"
|
||||||
if [[ -z "$PACKAGES" ]]; then
|
echo "- **DankLinux PPA:** https://launchpad.net/~avengemedia/+archive/ubuntu/danklinux/+packages" >> "$GITHUB_STEP_SUMMARY"
|
||||||
echo "**Status:** ✅ All packages up to date (no uploads needed)" >> $GITHUB_STEP_SUMMARY
|
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
|
||||||
echo "All packages are current. Run will complete successfully." >> $GITHUB_STEP_SUMMARY
|
|
||||||
else
|
|
||||||
echo "**Packages Uploaded:**" >> $GITHUB_STEP_SUMMARY
|
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
|
||||||
|
|
||||||
for PKG in $PACKAGES; do
|
|
||||||
case "$PKG" in
|
|
||||||
dms)
|
|
||||||
echo "- ✅ **dms** → [View builds](https://launchpad.net/~avengemedia/+archive/ubuntu/dms/+packages)" >> $GITHUB_STEP_SUMMARY
|
|
||||||
;;
|
|
||||||
dms-git)
|
|
||||||
echo "- ✅ **dms-git** → [View builds](https://launchpad.net/~avengemedia/+archive/ubuntu/dms-git/+packages)" >> $GITHUB_STEP_SUMMARY
|
|
||||||
;;
|
|
||||||
dms-greeter)
|
|
||||||
echo "- ✅ **dms-greeter** → [View builds](https://launchpad.net/~avengemedia/+archive/ubuntu/danklinux/+packages)" >> $GITHUB_STEP_SUMMARY
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
|
||||||
|
|
||||||
if [[ -n "${{ github.event.inputs.rebuild_release }}" ]]; then
|
|
||||||
echo "**Rebuild Number:** ppa${{ github.event.inputs.rebuild_release }}" >> $GITHUB_STEP_SUMMARY
|
|
||||||
echo "" >> $GITHUB_STEP_SUMMARY
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Builds will appear once Launchpad processes the uploads." >> $GITHUB_STEP_SUMMARY
|
|
||||||
fi
|
|
||||||
|
|||||||
Executable
+137
@@ -0,0 +1,137 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Build a DMS per-series upload plan by comparing Git/GitHub with Launchpad.
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
PPA_OWNER="avengemedia"
|
||||||
|
LAUNCHPAD_API="https://api.launchpad.net/1.0"
|
||||||
|
SERIES_LIST=(questing resolute)
|
||||||
|
PACKAGE_FILTER="dms-git"
|
||||||
|
REBUILD_RELEASE=""
|
||||||
|
JSON=false
|
||||||
|
|
||||||
|
PACKAGES=(
|
||||||
|
"dms:dms:release"
|
||||||
|
"dms-git:dms-git:git"
|
||||||
|
"dms-greeter:danklinux:release"
|
||||||
|
)
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case "$1" in
|
||||||
|
--package)
|
||||||
|
PACKAGE_FILTER="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--rebuild)
|
||||||
|
REBUILD_RELEASE="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--json)
|
||||||
|
JSON=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown argument: $1" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
latest_tag() {
|
||||||
|
git ls-remote --tags --refs --sort='-v:refname' https://github.com/AvengeMedia/DankMaterialShell.git |
|
||||||
|
sed -n '1s|.*/v\{0,1\}||p'
|
||||||
|
}
|
||||||
|
|
||||||
|
published_version() {
|
||||||
|
local package="$1"
|
||||||
|
local ppa="$2"
|
||||||
|
local series="$3"
|
||||||
|
local series_url="https%3A%2F%2Fapi.launchpad.net%2F1.0%2Fubuntu%2F${series}"
|
||||||
|
local url="${LAUNCHPAD_API}/~${PPA_OWNER}/+archive/ubuntu/${ppa}?ws.op=getPublishedSources&source_name=${package}&status=Published&distro_series=${series_url}"
|
||||||
|
|
||||||
|
curl -fsSL "$url" 2>/dev/null | jq -r '.entries[0].source_package_version // empty'
|
||||||
|
}
|
||||||
|
|
||||||
|
release_base() {
|
||||||
|
echo "$1" | sed -E 's/ppa[0-9]+$//' | sed -E 's/-[0-9]+$//'
|
||||||
|
}
|
||||||
|
|
||||||
|
embedded_commit() {
|
||||||
|
echo "$1" | sed -nE 's/.*[+~]git[0-9]+\.([a-f0-9]{7,12}).*/\1/p'
|
||||||
|
}
|
||||||
|
|
||||||
|
target_ppa() {
|
||||||
|
local series="$1"
|
||||||
|
if [[ -n "$REBUILD_RELEASE" ]]; then
|
||||||
|
if [[ "$series" == "resolute" ]]; then
|
||||||
|
echo $((REBUILD_RELEASE + 1))
|
||||||
|
else
|
||||||
|
echo "$REBUILD_RELEASE"
|
||||||
|
fi
|
||||||
|
elif [[ "$series" == "resolute" ]]; then
|
||||||
|
echo "2"
|
||||||
|
else
|
||||||
|
echo "1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
include_package() {
|
||||||
|
local package="$1"
|
||||||
|
[[ "$PACKAGE_FILTER" == "all" || "$PACKAGE_FILTER" == "$package" ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
CURRENT_COMMIT="$(git rev-parse --short=8 HEAD)"
|
||||||
|
LATEST_TAG=""
|
||||||
|
TARGETS=()
|
||||||
|
|
||||||
|
for pkg_info in "${PACKAGES[@]}"; do
|
||||||
|
IFS=':' read -r package ppa type <<< "$pkg_info"
|
||||||
|
include_package "$package" || continue
|
||||||
|
|
||||||
|
for series in "${SERIES_LIST[@]}"; do
|
||||||
|
ppa_version="$(published_version "$package" "$ppa" "$series")"
|
||||||
|
needs_update=false
|
||||||
|
reason=""
|
||||||
|
|
||||||
|
if [[ -n "$REBUILD_RELEASE" ]]; then
|
||||||
|
needs_update=true
|
||||||
|
reason="manual rebuild"
|
||||||
|
elif [[ -z "$ppa_version" ]]; then
|
||||||
|
needs_update=true
|
||||||
|
reason="missing from ${series}"
|
||||||
|
elif [[ "$type" == "git" ]]; then
|
||||||
|
ppa_commit="$(embedded_commit "$ppa_version")"
|
||||||
|
if [[ "$ppa_commit" != "$CURRENT_COMMIT" ]]; then
|
||||||
|
needs_update=true
|
||||||
|
reason="commit ${ppa_commit:-none} -> ${CURRENT_COMMIT}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if [[ -z "$LATEST_TAG" ]]; then
|
||||||
|
LATEST_TAG="$(latest_tag)"
|
||||||
|
fi
|
||||||
|
ppa_base="$(release_base "$ppa_version")"
|
||||||
|
if [[ "$ppa_base" != "$LATEST_TAG" ]]; then
|
||||||
|
needs_update=true
|
||||||
|
reason="version ${ppa_base:-none} -> ${LATEST_TAG}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$needs_update" == "true" ]]; then
|
||||||
|
target="${package}:${series}:$(target_ppa "$series")"
|
||||||
|
TARGETS+=("$target")
|
||||||
|
echo "${package}/${series}: ${reason} (published: ${ppa_version:-none})" >&2
|
||||||
|
else
|
||||||
|
echo "${package}/${series}: current (${ppa_version})" >&2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ "$JSON" == "true" ]]; then
|
||||||
|
if [[ ${#TARGETS[@]} -eq 0 ]]; then
|
||||||
|
echo "[]"
|
||||||
|
else
|
||||||
|
printf '%s\n' "${TARGETS[@]}" | jq -R -s -c 'split("\n")[:-1]'
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "${TARGETS[*]}"
|
||||||
|
fi
|
||||||
@@ -330,8 +330,17 @@ if [ "$PPA_NAME" = "danklinux" ] || [ "$PPA_NAME" = "dms" ] || [ "$PPA_NAME" = "
|
|||||||
info " - $BUILDINFO"
|
info " - $BUILDINFO"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
LFTP_SCRIPT=$(mktemp)
|
if [[ -n "${GITHUB_ACTIONS:-}" || -n "${CI:-}" ]] && command -v dput >/dev/null 2>&1; then
|
||||||
cat >"$LFTP_SCRIPT" <<EOF
|
info "Using dput for CI upload"
|
||||||
|
if dput "ppa:avengemedia/$PPA_NAME" "$CHANGES_FILE"; then
|
||||||
|
success "Upload successful!"
|
||||||
|
else
|
||||||
|
error "dput upload failed!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
LFTP_SCRIPT=$(mktemp)
|
||||||
|
cat >"$LFTP_SCRIPT" <<EOF
|
||||||
cd ~avengemedia/ubuntu/$PPA_NAME/
|
cd ~avengemedia/ubuntu/$PPA_NAME/
|
||||||
lcd $BUILD_DIR
|
lcd $BUILD_DIR
|
||||||
mput $CHANGES_BASENAME
|
mput $CHANGES_BASENAME
|
||||||
@@ -341,13 +350,14 @@ mput $BUILDINFO
|
|||||||
bye
|
bye
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if lftp -d ftp://anonymous:@ppa.launchpad.net <"$LFTP_SCRIPT"; then
|
if lftp -d ftp://anonymous:@ppa.launchpad.net <"$LFTP_SCRIPT"; then
|
||||||
success "Upload successful!"
|
success "Upload successful!"
|
||||||
rm -f "$LFTP_SCRIPT"
|
rm -f "$LFTP_SCRIPT"
|
||||||
else
|
else
|
||||||
error "Upload failed!"
|
error "Upload failed!"
|
||||||
rm -f "$LFTP_SCRIPT"
|
rm -f "$LFTP_SCRIPT"
|
||||||
exit 1
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# This branch should not be reached for DMS packages
|
# This branch should not be reached for DMS packages
|
||||||
|
|||||||
Reference in New Issue
Block a user