Custom Docker and Binary #453
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Custom Docker and Binary | |
on: | |
workflow_dispatch: | |
inputs: | |
branch_name: | |
description: 'Branch name' | |
default: '' | |
required: true | |
image_version: | |
description: 'Image version for docker hub' | |
default: '' | |
required: true | |
cmake_options: | |
description: 'Additional cmake options' | |
default: '' | |
required: false | |
build_type: | |
description: 'Build type of skaled binary' | |
type: choice | |
required: true | |
options: | |
- Debug | |
- RelWithDebInfo | |
default: RelWithDebInfo | |
jobs: | |
main_job: | |
runs-on: self-hosted | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} | |
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} | |
BUILD_TYPE: ${{ github.event.inputs.build_type }} | |
steps: | |
- name: update apt | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test || true | |
sudo apt-get update || true | |
- name: install packages | |
run: | | |
sudo apt-get -y remove libzmq* || true | |
sudo apt-get -y install software-properties-common gcc-9 g++-9 || true | |
- name: Use g++-9 and gcov-9 by default | |
run: | | |
echo "Updating all needed alternatives" | |
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 | |
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9 | |
sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-9 9 | |
sudo update-alternatives --install /usr/bin/gcov-dump gcov-dump /usr/bin/gcov-dump-9 9 | |
sudo update-alternatives --install /usr/bin/gcov-tool gcov-tool /usr/bin/gcov-tool-9 9 | |
echo "Checking alternative for gcc" | |
which gcc | |
gcc --version | |
echo "Checking alternative for g++" | |
which g++ | |
g++ --version | |
echo "Checking alternative for gcov" | |
which gcov | |
gcov --version | |
echo "Checking alternative for gcov-dump" | |
which gcov-dump | |
gcov-dump --version | |
echo "Checking alternative for gcov-tool" | |
which gcov-tool | |
gcov-tool --version | |
- name: Extract repo name | |
run: echo ::set-env name=REPOSITORY_NAME::$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}') | |
shell: bash | |
env: | |
ACTIONS_ALLOW_UNSECURE_COMMANDS: true | |
- name: Extract branch name | |
shell: bash | |
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" | |
id: extract_branch | |
- name: checkout | |
uses: actions/checkout@v2 | |
with: | |
ref: ${{ github.event.inputs.branch_name }} | |
- name: Submodule update | |
run: | | |
rm -rf ./libconsensus || true | |
ls -1 | |
git submodule update --init --recursive | |
- name: Prepare ccache timestamp | |
id: ccache_cache_timestamp | |
shell: cmake -P {0} | |
run: | | |
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) | |
message("::set-output name=timestamp::${current_date}") | |
- name: Ccache cache files | |
uses: actions/cache@v1.1.0 | |
with: | |
path: .ccache | |
key: ${ { matrix.config.name } }-ccache-${ { steps.ccache_cache_timestamp.outputs.timestamp } } | |
restore-keys: | | |
${ { matrix.config.name } }-ccache- | |
- name: Build dependencies | |
run: | | |
export CC=gcc-9 | |
export CXX=g++-9 | |
export TARGET=all | |
export CMAKE_BUILD_TYPE=$BUILD_TYPE | |
[[ $CMAKE_BUILD_TYPE = "Debug" ]] && export DEBUG_FLAG=1 || export DEBUG_FLAG=0 | |
cd deps | |
./clean.sh | |
rm -f ./libwebsockets-from-git.tar.gz | |
./build.sh PARALLEL_COUNT=$(nproc) DEBUG=$DEBUG_FLAG | |
cd .. | |
- name: Configure all | |
run: | | |
export CC=gcc-9 | |
export CXX=g++-9 | |
export TARGET=all | |
export CMAKE_BUILD_TYPE=$BUILD_TYPE | |
mkdir -p build | |
cd build | |
cmake -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE ${{ github.event.inputs.cmake_options }} .. | |
cd .. | |
- name: Build all | |
run: | | |
export CC=gcc-9 | |
export CXX=g++-9 | |
export TARGET=all | |
export CMAKE_BUILD_TYPE=$BUILD_TYPE | |
cd build | |
make skaled -j$(nproc) | |
#echo "Ensure release mode skaled does not have any debug markers" | |
#strip skaled/skaled | |
cd .. | |
- name: Build and publish container | |
run: | | |
cp build/skaled/skaled scripts/skale_build/executable/ | |
export BRANCH=${{ github.event.inputs.branch_name }} | |
[[ $BUILD_TYPE = "Debug" ]] && export VERSION_SUFFIX=debug || export VERSION_SUFFIX=release | |
export VERSION=${{ github.event.inputs.image_version }}-$VERSION_SUFFIX | |
echo "Version $VERSION" | |
export RELEASE=true | |
bash ./scripts/build_and_publish.sh | |
- name: Upload skaled binary as artifact | |
uses: actions/upload-artifact@v2 | |
if: ${{ always() }} | |
with: | |
name: skaled | |
path: ./build/skaled/skaled |