feat: add option to force-build package

This commit is contained in:
Jef Roosens 2022-12-13 19:59:18 +01:00
parent 8a2f720bdf
commit f6c5e7c246
Signed by untrusted user: Jef Roosens
GPG key ID: B75D4F293C7052DB
6 changed files with 29 additions and 12 deletions

View file

@ -24,6 +24,7 @@ pub:
branch string
repo string
base_image string
force bool
}
// create_build_image creates a builder image given some base image which can
@ -104,7 +105,7 @@ pub:
}
// build_target builds the given target. Internally it calls `build_config`.
pub fn build_target(address string, api_key string, base_image_id string, target &Target) !BuildResult {
pub fn build_target(address string, api_key string, base_image_id string, target &Target, force bool) !BuildResult {
config := BuildConfig{
target_id: target.id
kind: target.kind
@ -112,6 +113,7 @@ pub fn build_target(address string, api_key string, base_image_id string, target
branch: target.branch
repo: target.repo
base_image: base_image_id
force: force
}
return build_config(address, api_key, config)

View file

@ -63,14 +63,22 @@ fn create_build_script(address string, config BuildConfig, build_arch string) st
'cd repo',
'makepkg --nobuild --syncdeps --needed --noconfirm',
'source PKGBUILD',
]
if !config.force {
// The build container checks whether the package is already present on
// the server.
'curl -s --head --fail $repo_url/$build_arch/\$pkgname-\$pkgver-\$pkgrel && exit 0',
// If the above curl command succeeds, we don't need to rebuild the
// package. However, because we're in a su shell, the exit command will
// drop us back into the root shell. Therefore, we must check whether
// we're in root so we don't proceed.
'[ "\$(id -u)" == 0 ] && exit 0',
commands << [
'curl -s --head --fail $repo_url/$build_arch/\$pkgname-\$pkgver-\$pkgrel && exit 0',
// If the above curl command succeeds, we don't need to rebuild the
// package. However, because we're in a su shell, the exit command will
// drop us back into the root shell. Therefore, we must check whether
// we're in root so we don't proceed.
'[ "\$(id -u)" == 0 ] && exit 0',
]
}
commands << [
'MAKEFLAGS="-j\$(nproc)" makepkg -s --noconfirm --needed && for pkg in \$(ls -1 *.pkg*); do curl -XPOST -T "\$pkg" -H "X-API-KEY: \$API_KEY" $repo_url/publish; done',
]