Skip to content

Commit

Permalink
Merge pull request #1925 from skalenetwork/enhancement/add-historic-c…
Browse files Browse the repository at this point in the history
…ustom-builds

Enhancement/add historic custom builds
  • Loading branch information
DmytroNazarenko authored Jun 14, 2024
2 parents 38791ff + 2b72617 commit a0d0c55
Show file tree
Hide file tree
Showing 2 changed files with 190 additions and 122 deletions.
144 changes: 22 additions & 122 deletions .github/workflows/custom_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,126 +25,26 @@ on:
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
core_build:
uses: ./.github/workflows/setup-build-publish.yml
with:
image_version: ${{ github.event.inputs.image_version }}
branch_name: ${{ github.event.inputs.branch_name }}
cmake_options: ${{ github.event.inputs.cmake_options }}
build_type: ${{ github.event.inputs.build_type }}
node_type: core
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}

- 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/[email protected]
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
historic_build:
uses: ./.github/workflows/setup-build-publish.yml
with:
image_version: ${{ github.event.inputs.image_version }}
branch_name: ${{ github.event.inputs.branch_name }}
cmake_options: ${{ github.event.inputs.cmake_options }}
build_type: ${{ github.event.inputs.build_type }}
node_type: historic
secrets:
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
168 changes: 168 additions & 0 deletions .github/workflows/setup-build-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: 'Setup, Build and Publish'
on:
workflow_call:
inputs:
branch_name:
type: string
description: 'Branch name'
required: true
image_version:
type: string
description: 'Image version for docker hub'
required: true
cmake_options:
type: string
description: 'Additional cmake options'
required: false
build_type:
type: string
description: 'Build type of skaled binary'
required: true
node_type:
type: string
description: 'Node type of skaled build'
required: true
secrets:
DOCKER_USERNAME:
required: true
DOCKER_PASSWORD:
required: true

jobs:
main:
runs-on: self-hosted
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
BUILD_TYPE: ${{ inputs.build_type }}
steps:
- name: Prepare workflow variables
if: inputs.node_type != 'historic'
run: |
[[ $BUILD_TYPE = "Debug" ]] && export VERSION_SUFFIX=debug || export VERSION_SUFFIX=release
export VERSION=${{ inputs.image_version }}-$VERSION_SUFFIX
echo "VERSION=$VERSION" >> $GITHUB_ENV
export CMAKE_OPTS="${{ inputs.cmake_options }}"
echo "CMAKE_OPTS=$CMAKE_OPTS" >> $GITHUB_ENV
- name: Prepare workflow variables (historic)
if: inputs.node_type == 'historic'
run: |
[[ $BUILD_TYPE = "Debug" ]] && export VERSION_SUFFIX=debug || export VERSION_SUFFIX=release
export VERSION=${{ inputs.image_version }}-$VERSION_SUFFIX-historic
echo "VERSION=$VERSION" >> $GITHUB_ENV
export CMAKE_OPTS="-DHISTORIC_STATE=1 ${{ inputs.cmake_options }}"
echo "CMAKE_OPTS=$CMAKE_OPTS" >> $GITHUB_ENV
- 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: ${{ 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/[email protected]
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
env:
CMAKE_OPTS: ${{ env.CMAKE_OPTS }}
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 $CMAKE_OPTS ..
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)
cd ..
- name: Build and publish container
env:
VERSION: ${{ env.VERSION }}
run: |
cp build/skaled/skaled scripts/skale_build/executable/
export BRANCH=${{ inputs.branch_name }}
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-${{ inputs.node_type }}
path: ./build/skaled/skaled

0 comments on commit a0d0c55

Please sign in to comment.