forked from vieter-v/vieter
feat: add option to force-build package
This commit is contained in:
parent
8a2f720bdf
commit
f6c5e7c246
6 changed files with 29 additions and 12 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue