Merge pull request 'fix(build): explicitely set PATH variable in build containers' (#257) from Chewing_Bever/vieter:better-path-var into dev

Reviewed-on: vieter/vieter#257
dev
Jef Roosens 2022-06-17 20:31:06 +02:00
commit 1ac76ac452
2 changed files with 11 additions and 1 deletions

View File

@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* Renamed `/api/v1/repos` namespace to `/api/v1/targets` * Renamed `/api/v1/repos` namespace to `/api/v1/targets`
* Branch name for 'git' targets is now optional; if not provided, the * Branch name for 'git' targets is now optional; if not provided, the
repository will be cloned with the default branch repository will be cloned with the default branch
* Build containers now explicitely set the PATH variable
### Removed ### Removed

View File

@ -11,6 +11,9 @@ import models { Target }
const ( const (
container_build_dir = '/build' container_build_dir = '/build'
build_image_repo = 'vieter-build' build_image_repo = 'vieter-build'
// Contents of PATH variable in build containers
path_dirs = ['/sbin', '/bin', '/usr/sbin', '/usr/bin', '/usr/local/sbin',
'/usr/local/bin', '/usr/bin/site_perl', '/usr/bin/vendor_perl', '/usr/bin/core_perl']
) )
// 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
@ -109,7 +112,13 @@ pub fn build_target(address string, api_key string, base_image_id string, target
c := docker.NewContainer{ c := docker.NewContainer{
image: '$base_image_id' image: '$base_image_id'
env: ['BUILD_SCRIPT=$base64_script', 'API_KEY=$api_key'] env: [
'BUILD_SCRIPT=$base64_script',
'API_KEY=$api_key',
// `archlinux:base-devel` does not correctly set the path variable,
// causing certain builds to fail. This fixes it.
'PATH=${build.path_dirs.join(':')}',
]
entrypoint: ['/bin/sh', '-c'] entrypoint: ['/bin/sh', '-c']
cmd: ['echo \$BUILD_SCRIPT | base64 -d | /bin/bash -e'] cmd: ['echo \$BUILD_SCRIPT | base64 -d | /bin/bash -e']
work_dir: '/build' work_dir: '/build'