From 5a5f7f83461f20785e18b006e8033316a9f24d9c Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Mon, 9 May 2022 14:58:20 +0200 Subject: [PATCH 1/4] refactor(docker): use builtin parse_rfc3339 function --- src/docker/containers.v | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/docker/containers.v b/src/docker/containers.v index fe0bb7b1..2258f3bd 100644 --- a/src/docker/containers.v +++ b/src/docker/containers.v @@ -67,13 +67,6 @@ pub mut: end_time time.Time [skip] } -fn docker_timestamp_to_time(s string) ?time.Time { - parts := s.split('.') - clipped := parts[0] + '.' + parts[1][..3] - - return time.parse_rfc3339(clipped) -} - // inspect_container returns the result of inspecting a container with a given // ID. pub fn inspect_container(id string) ?ContainerInspect { @@ -85,10 +78,10 @@ pub fn inspect_container(id string) ?ContainerInspect { mut data := json.decode(ContainerInspect, res.text) ? - data.state.start_time = docker_timestamp_to_time(data.state.start_time_str) ? + data.state.start_time = time.parse_rfc3339(data.state.start_time_str) ? if data.state.status == 'exited' { - data.state.end_time = docker_timestamp_to_time(data.state.end_time_str) ? + data.state.end_time = time.parse_rfc3339(data.state.end_time_str) ? } return data @@ -101,6 +94,8 @@ pub fn remove_container(id string) ?bool { return res.status_code == 204 } +// get_container_logs retrieves the logs for a Docker container, both stdout & +// stderr. pub fn get_container_logs(id string) ?string { res := request('GET', urllib.parse('/v1.41/containers/$id/logs?stdout=true&stderr=true') ?) ? mut res_bytes := res.text.bytes() From 3821ed29fd4d0dd9fda4447dab444baf40d5cd6b Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Mon, 9 May 2022 15:05:53 +0200 Subject: [PATCH 2/4] refactor(docker): simplified loop expression --- src/build/build.v | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/build/build.v b/src/build/build.v index 774591d6..0a978aa0 100644 --- a/src/build/build.v +++ b/src/build/build.v @@ -118,11 +118,7 @@ pub fn build_repo(address string, api_key string, base_image_id string, repo &db mut data := docker.inspect_container(id) ? // This loop waits until the container has stopped, so we can remove it after - for { - if !data.state.running { - break - } - + for data.state.running { time.sleep(1 * time.second) data = docker.inspect_container(id) ? From 78fc3afcd3b53860c21e227fc452a876567976cd Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Mon, 9 May 2022 15:16:30 +0200 Subject: [PATCH 3/4] feat(ci): also publish dev images as specific commit hash --- .woodpecker/.docker.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.woodpecker/.docker.yml b/.woodpecker/.docker.yml index bab869b4..f31490a1 100644 --- a/.woodpecker/.docker.yml +++ b/.woodpecker/.docker.yml @@ -11,7 +11,9 @@ pipeline: - 'docker_password' settings: repo: 'chewingbever/vieter' - tag: 'dev' + tags: + - 'dev' + - ${CI_COMMIT_SHA} platforms: [ 'linux/arm64/v8', 'linux/amd64' ] build_args_from_env: - 'CI_COMMIT_SHA' From 11bc382f47fbd6076044eaed9378edf42d970675 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Tue, 10 May 2022 13:21:39 +0200 Subject: [PATCH 4/4] fix: don't pass --nodeps to initial build step This fixes packages that require their dependencies in `pkgver` or `prepare` failing to build. --- docs/content/builder.md | 2 +- src/build/build.v | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/content/builder.md b/docs/content/builder.md index 6a1bc3ab..ccd2427b 100644 --- a/docs/content/builder.md +++ b/docs/content/builder.md @@ -15,7 +15,7 @@ repositories. After the image has been created, each repository returned by previously created image as a base. Each container goes through the following steps: 1. The repository is cloned -2. `makepkg --nobuild --nodeps` is ran to update the `pkgver` variable inside +2. `makepkg --nobuild` is ran to update the `pkgver` variable inside the `PKGBUILD` file 3. A HEAD request is sent to the Vieter server to check whether the specific version of the package is already present. If it is, the container exits. diff --git a/src/build/build.v b/src/build/build.v index 0a978aa0..d4fbfc7e 100644 --- a/src/build/build.v +++ b/src/build/build.v @@ -91,7 +91,7 @@ pub fn build_repo(address string, api_key string, base_image_id string, repo &db commands := [ 'git clone --single-branch --depth 1 --branch $repo.branch $repo.url repo', 'cd repo', - 'makepkg --nobuild --nodeps', + 'makepkg --nobuild', 'source PKGBUILD', // The build container checks whether the package is already // present on the server