init
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
JMARyA 2024-12-27 09:03:11 +01:00
commit 0c8eebbeb9
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
5 changed files with 77 additions and 0 deletions

15
.woodpecker/build.yml Normal file
View file

@ -0,0 +1,15 @@
when:
- event: push
branch: main
steps:
- name: build
image: woodpeckerci/plugin-docker-buildx
settings:
platforms: linux/amd64
repo: git.hydrar.de/jmarya/pacco-build
registry: git.hydrar.de
tags: latest
username: jmarya
password:
from_secret: registry_token

8
Dockerfile Normal file
View file

@ -0,0 +1,8 @@
FROM archlinux
RUN pacman -Syu --noconfirm base-devel pacman
COPY src/buildpkg /usr/bin/buildpkg
COPY src/makepkgsigned /usr/bin/makepkgsigned
RUN chmod +x /usr/bin/buildpkg
RUN chmod +x /usr/bin/makepkgsigned

24
README.md Normal file
View file

@ -0,0 +1,24 @@
# pacco-build
Build Container for PKGBUILDs with auto push to pacco.
## Usage
Add the following to your repos `.woodpecker` jobs:
```yml
when:
- event: push
branch: main
steps:
- name: "PKGBUILD"
image: git.hydrar.de/jmarya/pacco-build:latest
commands:
- buildpkg <repo> <arch> <domain> <token> <gpg_key>
```
Where:
- `<repo>`: Name of the repo you want to push to
- `<arch>`: Architecture you are building for
- `<domain>`: Domain of your pacco instance
- `<token>`: Token of your user
- `<gpg_key>`: GPG key used to sign the package

24
src/buildpkg Normal file
View file

@ -0,0 +1,24 @@
#!/bin/bash
# Usage: buildpkg <REPO> <ARCH> <DOMAIN> <TOKEN> <PGP_KEY>
# Setup package user
useradd -m pkgbuild
passwd -d pkgbuild
echo "pkgbuild ALL=(ALL) NOPASSWD: /usr/bin/pacman" >> /etc/sudoers
chown -R pkgbuild:pkgbuild .
# Build package
su - pkgbuild -c "cd $(pwd);/usr/bin/makepkgsigned \"$5\"11"
source PKGBUILD
# Push package to pacco
curl -X POST \
-F "pkg=@./$pkgname-$pkgver-$pkgrel-$2.pkg.tar.zst" \
-F "sig=@./$pkgname-$pkgver-$pkgrel-$2.pkg.tar.zst.sig" \
-F "name=$pkgname" \
-F "arch=$2" \
-F "version=$pkgver" \
-H "Token: $4" \
"https://$3/pkg/$1/upload"

6
src/makepkgsigned Normal file
View file

@ -0,0 +1,6 @@
#!/bin/bash
# Setup signing key
echo -e $1|gpg --import
export GPGKEY=$(echo -e $1|gpg --with-colons --import-options show-only --import --fingerprint|awk -F: '$1 == "fpr" {print $10;}'|head -n1)
makepkg -s --sign --noconfirm