From 73d2d4b08f8af1b7c315520ced96256617b8852f Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Mon, 16 May 2022 17:12:37 +0200 Subject: [PATCH] feat(console): replaced `vieter build` with `vieter repos build` --- CHANGELOG.md | 7 +++++++ src/build/build.v | 29 ----------------------------- src/build/cli.v | 29 ----------------------------- src/console/git/build.v | 34 ++++++++++++++++++++++++++++++++++ src/console/git/git.v | 17 +++++++++++++++-- src/main.v | 2 -- 6 files changed, 56 insertions(+), 62 deletions(-) delete mode 100644 src/build/cli.v create mode 100644 src/console/git/build.v diff --git a/CHANGELOG.md b/CHANGELOG.md index c86761c..7c20393 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * CLI commands to access build logs API * Cron build logs are uploaded to above API * Proper ASCII table output in CLI +* `vieter repos build id` command to run builds locally + +### Removed + +* `vieter build` command + * This command was used alongside cron for periodic builds, but this has + been replaced by `vieter cron` ### Changed diff --git a/src/build/build.v b/src/build/build.v index 2784c26..fab6c35 100644 --- a/src/build/build.v +++ b/src/build/build.v @@ -5,7 +5,6 @@ import encoding.base64 import time import os import db -import client import strings import util @@ -155,31 +154,3 @@ pub fn build_repo(address string, api_key string, base_image_id string, repo &db logs: logs_builder.str() } } - -// build builds every Git repo in the server's list. -fn build(conf Config, repo_id int) ? { - c := client.new(conf.address, conf.api_key) - repo := c.get_git_repo(repo_id)? - - build_arch := os.uname().machine - - println('Creating base image...') - image_id := create_build_image(conf.base_image)? - - println('Running build...') - res := build_repo(conf.address, conf.api_key, image_id, repo)? - - println('Removing build image...') - - mut dd := docker.new_conn()? - - defer { - dd.close() or {} - } - - dd.remove_image(image_id)? - - println('Uploading logs to Vieter...') - c.add_build_log(repo.id, res.start_time, res.end_time, build_arch, res.exit_code, - res.logs)? -} diff --git a/src/build/cli.v b/src/build/cli.v deleted file mode 100644 index 64814cb..0000000 --- a/src/build/cli.v +++ /dev/null @@ -1,29 +0,0 @@ -module build - -import cli -import env - -pub struct Config { -pub: - api_key string - address string - base_image string = 'archlinux:base-devel' -} - -// cmd returns the cli submodule that handles the build process -pub fn cmd() cli.Command { - return cli.Command{ - name: 'build' - required_args: 1 - usage: 'id' - description: 'Build the repository with the given ID.' - execute: fn (cmd cli.Command) ? { - config_file := cmd.flags.get_string('config-file')? - conf := env.load(config_file)? - - id := cmd.args[0].int() - - build(conf, id)? - } - } -} diff --git a/src/console/git/build.v b/src/console/git/build.v new file mode 100644 index 0000000..fac760d --- /dev/null +++ b/src/console/git/build.v @@ -0,0 +1,34 @@ +module git + +import client +import docker +import os +import build + +// build builds every Git repo in the server's list. +fn build(conf Config, repo_id int) ? { + c := client.new(conf.address, conf.api_key) + repo := c.get_git_repo(repo_id)? + + build_arch := os.uname().machine + + println('Creating base image...') + image_id := build.create_build_image(conf.base_image)? + + println('Running build...') + res := build.build_repo(conf.address, conf.api_key, image_id, repo)? + + println('Removing build image...') + + mut dd := docker.new_conn()? + + defer { + dd.close() or {} + } + + dd.remove_image(image_id)? + + println('Uploading logs to Vieter...') + c.add_build_log(repo.id, res.start_time, res.end_time, build_arch, res.exit_code, + res.logs)? +} diff --git a/src/console/git/git.v b/src/console/git/git.v index db9dec5..06d5f80 100644 --- a/src/console/git/git.v +++ b/src/console/git/git.v @@ -7,8 +7,9 @@ import client import console struct Config { - address string [required] - api_key string [required] + address string [required] + api_key string [required] + base_image string = 'archlinux:base-devel' } // cmd returns the cli submodule that handles the repos API interaction @@ -112,6 +113,18 @@ pub fn cmd() cli.Command { patch(conf, cmd.args[0], params)? } }, + cli.Command{ + name: 'build' + required_args: 1 + usage: 'id' + description: 'Build the repo with the given id & publish it.' + execute: fn (cmd cli.Command) ? { + config_file := cmd.flags.get_string('config-file')? + conf := env.load(config_file)? + + build(conf, cmd.args[0].int())? + } + }, ] } } diff --git a/src/main.v b/src/main.v index db6d5ef..dbfac09 100644 --- a/src/main.v +++ b/src/main.v @@ -3,7 +3,6 @@ module main import os import server import cli -import build import console.git import console.logs import cron @@ -25,7 +24,6 @@ fn main() { ] commands: [ server.cmd(), - build.cmd(), git.cmd(), cron.cmd(), logs.cmd(),