Skip to content

Commit daf4754

Browse files
小调整
1 parent 65deb42 commit daf4754

1 file changed

Lines changed: 112 additions & 12 deletions

File tree

.github/workflows/publish-to-aur.yml

Lines changed: 112 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,115 @@ jobs:
7878
echo "======== Updated PKGBUILD ========"
7979
cat "${PKGBUILD}"
8080
81-
# ── Push to AUR ───────────────────────────────────────────────────────────
82-
- name: "Deploy to AUR"
83-
uses: KSXGitHub/github-actions-deploy-aur@v2.7.2
84-
with:
85-
pkgname: dev-sidecar-bin
86-
pkgbuild: packages/aur/PKGBUILD
87-
commit_username: ${{ vars.AUR_USERNAME }}
88-
commit_email: ${{ vars.AUR_EMAIL }}
89-
ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
90-
commit_message: "Update to v${{ steps.version.outputs.version }}"
91-
allow_empty_commits: false
92-
force_push: true
81+
# ── Push to AUR via git + SSH ─────────────────────────────────────────────
82+
- name: "Set up SSH key for AUR"
83+
run: |
84+
install -dm700 ~/.ssh
85+
86+
# Write the private key
87+
echo "${{ secrets.AUR_SSH_PRIVATE_KEY }}" > ~/.ssh/aur_id
88+
chmod 600 ~/.ssh/aur_id
89+
90+
# Trust AUR's host key
91+
ssh-keyscan -t rsa,ecdsa,ed25519 aur.archlinux.org >> ~/.ssh/known_hosts 2>/dev/null
92+
chmod 644 ~/.ssh/known_hosts
93+
94+
# SSH config: use this key for AUR
95+
cat >> ~/.ssh/config << 'EOF'
96+
Host aur.archlinux.org
97+
IdentityFile ~/.ssh/aur_id
98+
User aur
99+
EOF
100+
chmod 600 ~/.ssh/config
101+
102+
- name: "Clone AUR repository"
103+
run: |
104+
git clone ssh://aur@aur.archlinux.org/dev-sidecar-bin.git /tmp/aur-dev-sidecar-bin
105+
106+
- name: "Copy PKGBUILD and generate .SRCINFO"
107+
run: |
108+
cp packages/aur/PKGBUILD /tmp/aur-dev-sidecar-bin/PKGBUILD
109+
110+
# Generate .SRCINFO (makepkg is not available on the ubuntu runner since pacman is
111+
# not installed, so we generate it with a small Python helper that parses the
112+
# PKGBUILD variables we set)
113+
cd /tmp/aur-dev-sidecar-bin
114+
115+
python3 - << 'PYEOF'
116+
import re, subprocess, pathlib
117+
118+
pkgbuild = pathlib.Path("PKGBUILD").read_text()
119+
120+
def extract(var):
121+
m = re.search(rf"^{var}=(.+)", pkgbuild, re.MULTILINE)
122+
return m.group(1).strip().strip("'\"") if m else ""
123+
124+
pkgname = extract("pkgname")
125+
pkgver = extract("pkgver")
126+
pkgrel = extract("pkgrel")
127+
pkgdesc = extract("pkgdesc").strip("'\"")
128+
arch_line = re.search(r"^arch=\((.+)\)", pkgbuild, re.MULTILINE).group(1)
129+
archs = re.findall(r"'([^']+)'", arch_line)
130+
url = extract("url")
131+
license_ = re.search(r"^license=\('([^']+)'\)", pkgbuild, re.MULTILINE).group(1)
132+
depends_m = re.search(r"^depends=\((.+?)\)", pkgbuild, re.MULTILINE | re.DOTALL)
133+
depends = re.findall(r"'([^']+)'", depends_m.group(1)) if depends_m else []
134+
provides_m = re.search(r"^provides=\('([^']+)'\)", pkgbuild, re.MULTILINE)
135+
provides = [provides_m.group(1)] if provides_m else []
136+
conflicts_m= re.search(r"^conflicts=\('([^']+)'\)", pkgbuild, re.MULTILINE)
137+
conflicts = [conflicts_m.group(1)] if conflicts_m else []
138+
139+
src_x86 = re.search(r"^source_x86_64=\(\"([^\"]+)\"\)", pkgbuild, re.MULTILINE)
140+
src_aarch = re.search(r"^source_aarch64=\(\"([^\"]+)\"\)", pkgbuild, re.MULTILINE)
141+
sha_x86 = re.search(r"^sha256sums_x86_64=\('([^']+)'\)", pkgbuild, re.MULTILINE)
142+
sha_aarch = re.search(r"^sha256sums_aarch64=\('([^']+)'\)", pkgbuild, re.MULTILINE)
143+
144+
lines = []
145+
lines.append("# Generated by mksrcinfo helper")
146+
lines.append(f"pkgbase = {pkgname}")
147+
lines.append(f"\tpkgdesc = {pkgdesc}")
148+
lines.append(f"\tpkgver = {pkgver}")
149+
lines.append(f"\tpkgrel = {pkgrel}")
150+
lines.append(f"\turl = {url}")
151+
for a in archs:
152+
lines.append(f"\tarch = {a}")
153+
lines.append(f"\tlicense = {license_}")
154+
for d in depends:
155+
lines.append(f"\tdepends = {d}")
156+
for p in provides:
157+
lines.append(f"\tprovides = {p}")
158+
for c in conflicts:
159+
lines.append(f"\tconflicts = {c}")
160+
if src_x86:
161+
lines.append(f"\tsource_x86_64 = {src_x86.group(1)}")
162+
if sha_x86:
163+
lines.append(f"\tsha256sums_x86_64 = {sha_x86.group(1)}")
164+
if src_aarch:
165+
lines.append(f"\tsource_aarch64 = {src_aarch.group(1)}")
166+
if sha_aarch:
167+
lines.append(f"\tsha256sums_aarch64 = {sha_aarch.group(1)}")
168+
lines.append("")
169+
lines.append(f"pkgname = {pkgname}")
170+
171+
pathlib.Path(".SRCINFO").write_text("\n".join(lines) + "\n")
172+
print(".SRCINFO generated:")
173+
print("\n".join(lines))
174+
PYEOF
175+
176+
- name: "Commit and push to AUR"
177+
run: |
178+
cd /tmp/aur-dev-sidecar-bin
179+
180+
git config user.name "${{ vars.AUR_USERNAME }}"
181+
git config user.email "${{ vars.AUR_EMAIL }}"
182+
183+
git add PKGBUILD .SRCINFO
184+
185+
# Only commit if there are actual changes
186+
if git diff --cached --quiet; then
187+
echo "No changes to commit – AUR is already up to date."
188+
else
189+
git commit -m "Update to v${{ steps.version.outputs.version }}"
190+
git push
191+
echo "Successfully pushed to AUR."
192+
fi

0 commit comments

Comments
 (0)