Skip to content

Shippable/reqExec

Repository files navigation

ReqExec - Shippable build executor

Run Status

reqExec is the component on the build node that executes the build steps. Once reqKick decides to run a build step, it either

  • calls reqExec directly to run build on the host, or
  • spins up a reqExec mounted Docker container that runs the build in the container

Unlike reqProc and reqKick, reqExec is not an always-running agent, but a single platform-specific compiled binary that is responsible for following tasks:

  • run the bash scripts that contain the build step commands
  • publish logs from running the script
  • return the steps status back to reqKick

It is one of the three components that are installed on the host when users initialize the host to act as a build node on Shippable. The other two components that are installed upon node initialization are reqProc and reqKick.

Development

Pre-requisties

  1. Python 2.7.x
  2. pip
  3. virtualenv
  4. tar (WindowsServer_2016)

Virtualenv

rm -rf /tmp/reqExec_dev_ve
virtualenv -p /usr/bin/python /tmp/reqExec_dev_ve
source /tmp/reqExec_dev_ve/bin/activate
pip install -r ./requirements/dev.txt

Packaging binaries

Any merged change in the project triggers Shippable assembly lines to compile reqExec for all supported platforms and push the updated binaries with master tag.

Use ./package/<ARCHITECTURE>/<OS>/package.<EXT> to package binaries. The following are supported:

ARCHITECTURE OS EXT
x86_64 Ubuntu_16.04 sh
x86_64 macOS_10.12 sh
aarch64 Ubuntu_16.04 sh
x86_64 WindowsServer_2016 ps1

Releases

reqExec is updated with every Shippable release. The list of all Shippable releases can be found here.