Merge pull request 'Actually use path variable' (#307) from Chewing_Bever/vieter:fix-path-build into dev
ci/woodpecker/push/docs Pipeline was successful
Details
ci/woodpecker/push/lint Pipeline was successful
Details
ci/woodpecker/push/arch Pipeline was successful
Details
ci/woodpecker/push/build Pipeline was successful
Details
ci/woodpecker/push/man Pipeline was successful
Details
ci/woodpecker/push/test Pipeline was successful
Details
ci/woodpecker/push/docker Pipeline was successful
Details
ci/woodpecker/push/deploy Pipeline was successful
Details
ci/woodpecker/push/docs Pipeline was successful
Details
ci/woodpecker/push/lint Pipeline was successful
Details
ci/woodpecker/push/arch Pipeline was successful
Details
ci/woodpecker/push/build Pipeline was successful
Details
ci/woodpecker/push/man Pipeline was successful
Details
ci/woodpecker/push/test Pipeline was successful
Details
ci/woodpecker/push/docker Pipeline was successful
Details
ci/woodpecker/push/deploy Pipeline was successful
Details
Reviewed-on: #307pull/310/head
commit
946d9acd59
|
@ -2,7 +2,8 @@ module agent
|
||||||
|
|
||||||
import log
|
import log
|
||||||
import sync.stdatomic
|
import sync.stdatomic
|
||||||
import build { BuildConfig }
|
import build
|
||||||
|
import models { BuildConfig }
|
||||||
import client
|
import client
|
||||||
import time
|
import time
|
||||||
import os
|
import os
|
||||||
|
|
|
@ -6,7 +6,7 @@ import time
|
||||||
import os
|
import os
|
||||||
import strings
|
import strings
|
||||||
import util
|
import util
|
||||||
import models { Target }
|
import models { BuildConfig, Target }
|
||||||
|
|
||||||
const (
|
const (
|
||||||
container_build_dir = '/build'
|
container_build_dir = '/build'
|
||||||
|
@ -16,23 +16,6 @@ const (
|
||||||
'/usr/local/bin', '/usr/bin/site_perl', '/usr/bin/vendor_perl', '/usr/bin/core_perl']
|
'/usr/local/bin', '/usr/bin/site_perl', '/usr/bin/vendor_perl', '/usr/bin/core_perl']
|
||||||
)
|
)
|
||||||
|
|
||||||
pub struct BuildConfig {
|
|
||||||
pub:
|
|
||||||
target_id int
|
|
||||||
kind string
|
|
||||||
url string
|
|
||||||
branch string
|
|
||||||
path string
|
|
||||||
repo string
|
|
||||||
base_image string
|
|
||||||
force bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// str return a single-line string representation of a build log
|
|
||||||
pub fn (c BuildConfig) str() string {
|
|
||||||
return '{ target: $c.target_id, kind: $c.kind, url: $c.url, branch: $c.branch, path: $c.path, repo: $c.repo, base_image: $c.base_image, force: $c.force }'
|
|
||||||
}
|
|
||||||
|
|
||||||
// create_build_image creates a builder image given some base image which can
|
// create_build_image creates a builder image given some base image which can
|
||||||
// then be used to build & package Arch images. It mostly just updates the
|
// then be used to build & package Arch images. It mostly just updates the
|
||||||
// system, install some necessary packages & creates a non-root user to run
|
// system, install some necessary packages & creates a non-root user to run
|
||||||
|
@ -112,16 +95,7 @@ pub:
|
||||||
|
|
||||||
// build_target builds the given target. Internally it calls `build_config`.
|
// 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, force bool) !BuildResult {
|
pub fn build_target(address string, api_key string, base_image_id string, target &Target, force bool) !BuildResult {
|
||||||
config := BuildConfig{
|
config := target.as_build_config(base_image_id, force)
|
||||||
target_id: target.id
|
|
||||||
kind: target.kind
|
|
||||||
url: target.url
|
|
||||||
branch: target.branch
|
|
||||||
path: target.path
|
|
||||||
repo: target.repo
|
|
||||||
base_image: base_image_id
|
|
||||||
force: force
|
|
||||||
}
|
|
||||||
|
|
||||||
return build_config(address, api_key, config)
|
return build_config(address, api_key, config)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
module build
|
module build
|
||||||
|
|
||||||
import models { Target }
|
import models { BuildConfig, Target }
|
||||||
import cron.expression { CronExpression, parse_expression }
|
import cron.expression { CronExpression, parse_expression }
|
||||||
import time
|
import time
|
||||||
import datatypes { MinHeap }
|
import datatypes { MinHeap }
|
||||||
|
@ -80,16 +80,7 @@ pub fn (mut q BuildJobQueue) insert(input InsertConfig) ! {
|
||||||
mut job := BuildJob{
|
mut job := BuildJob{
|
||||||
created: time.now()
|
created: time.now()
|
||||||
single: input.single
|
single: input.single
|
||||||
config: BuildConfig{
|
config: input.target.as_build_config(q.default_base_image, input.force)
|
||||||
target_id: input.target.id
|
|
||||||
kind: input.target.kind
|
|
||||||
url: input.target.url
|
|
||||||
branch: input.target.branch
|
|
||||||
repo: input.target.repo
|
|
||||||
// TODO make this configurable
|
|
||||||
base_image: q.default_base_image
|
|
||||||
force: input.force
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if !input.now {
|
if !input.now {
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
module build
|
module build
|
||||||
|
|
||||||
|
import models { BuildConfig }
|
||||||
|
|
||||||
// escape_shell_string escapes any characters that could be interpreted
|
// escape_shell_string escapes any characters that could be interpreted
|
||||||
// incorrectly by a shell. The resulting value should be safe to use inside an
|
// incorrectly by a shell. The resulting value should be safe to use inside an
|
||||||
// echo statement.
|
// echo statement.
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
module build
|
module build
|
||||||
|
|
||||||
|
import models { BuildConfig }
|
||||||
|
|
||||||
fn test_create_build_script_git() {
|
fn test_create_build_script_git() {
|
||||||
config := BuildConfig{
|
config := BuildConfig{
|
||||||
target_id: 1
|
target_id: 1
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
module client
|
module client
|
||||||
|
|
||||||
import build { BuildConfig }
|
import models { BuildConfig }
|
||||||
|
|
||||||
// poll_jobs requests a list of new build jobs from the server.
|
// poll_jobs requests a list of new build jobs from the server.
|
||||||
pub fn (c &Client) poll_jobs(arch string, max int) ![]BuildConfig {
|
pub fn (c &Client) poll_jobs(arch string, max int) ![]BuildConfig {
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
module models
|
||||||
|
|
||||||
|
pub struct BuildConfig {
|
||||||
|
pub:
|
||||||
|
target_id int
|
||||||
|
kind string
|
||||||
|
url string
|
||||||
|
branch string
|
||||||
|
path string
|
||||||
|
repo string
|
||||||
|
base_image string
|
||||||
|
force bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// str return a single-line string representation of a build log
|
||||||
|
pub fn (c BuildConfig) str() string {
|
||||||
|
return '{ target: $c.target_id, kind: $c.kind, url: $c.url, branch: $c.branch, path: $c.path, repo: $c.repo, base_image: $c.base_image, force: $c.force }'
|
||||||
|
}
|
|
@ -52,6 +52,21 @@ pub fn (t &Target) str() string {
|
||||||
return str
|
return str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// as_build_config converts a Target into a BuildConfig, given some extra
|
||||||
|
// needed information.
|
||||||
|
pub fn (t &Target) as_build_config(base_image string, force bool) BuildConfig {
|
||||||
|
return BuildConfig{
|
||||||
|
target_id: t.id
|
||||||
|
kind: t.kind
|
||||||
|
url: t.url
|
||||||
|
branch: t.branch
|
||||||
|
path: t.path
|
||||||
|
repo: t.repo
|
||||||
|
base_image: base_image
|
||||||
|
force: force
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
pub struct TargetFilter {
|
pub struct TargetFilter {
|
||||||
pub mut:
|
pub mut:
|
||||||
|
|
Loading…
Reference in New Issue