add buils.sh script template and schedule builds
Signed-off-by: Jakub Sokołowski <jakub@status.im>
This commit is contained in:
parent
5573109b49
commit
d380606e39
|
@ -1,19 +1,27 @@
|
|||
---
|
||||
# shared testnet name: medalla, toledo, pyrmont, etc.
|
||||
beacon_node_network: 'medalla'
|
||||
beacon_node_service_name: 'beacon-node-{{ beacon_node_network }}'
|
||||
beacon_node_service_path: 'C:\Users\{{ beacon_node_user }}\{{ beacon_node_service_name }}'
|
||||
beacon_node_service_user_name: 'nimbus'
|
||||
beacon_node_service_user_pass: '{{ ansible_date_time.epoch | password_hash("sha512") }}'
|
||||
beacon_node_service_home: 'C:/Users/{{ beacon_node_service_user_name }}'
|
||||
beacon_node_service_path: '{{ beacon_node_service_home }}/{{ beacon_node_service_name }}'
|
||||
beacon_node_service_bin_path: '{{ beacon_node_service_path }}/bin'
|
||||
|
||||
beacon_node_repo_url: 'https://github.com/status-im/nimbus-eth2.git'
|
||||
beacon_node_repo_branch: 'stable'
|
||||
beacon_node_repo_path: '{{ beacon_node_service_path }}/repo'
|
||||
beacon_node_build_script: '{{ beacon_node_service_path }}/build.sh'
|
||||
|
||||
# shared testnet name: mainnet, pyrmont, prater, etc.
|
||||
beacon_node_network: 'mainnet'
|
||||
beacon_node_log_level: 'INFO'
|
||||
beacon_node_data_folder: 'shared_{{ beacon_node_network }}_0'
|
||||
beacon_node_subscribe_all: false
|
||||
beacon_node_doppelganger_detection: true
|
||||
|
||||
# For validation
|
||||
beacon_node_valid_network_names: ["toledo", "pyrmont", "prater", "mainnet", "steklo", "nocturne"]
|
||||
# Location for all node data
|
||||
beacon_node_data_path: '{{ beacon_node_service_path }}/data/shared_{{ beacon_node_network }}_0'
|
||||
|
||||
# Subfolders for separate read-only mounting
|
||||
beacon_node_secrets_path: '{{ beacon_node_service_path }}/data/{{ beacon_node_data_folder }}/secrets'
|
||||
# For validation
|
||||
beacon_node_valid_network_names: ["pyrmont", "prater", "mainnet", "steklo", "nocturne"]
|
||||
|
||||
# connectivity settings
|
||||
beacon_node_discovery_port: 9000
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
- name: Create service folders
|
||||
win_file:
|
||||
path: '{{ item }}'
|
||||
state: 'directory'
|
||||
with_items:
|
||||
- '{{ beacon_node_service_path }}'
|
||||
- '{{ beacon_node_service_bin_path }}'
|
||||
|
||||
- name: Clone Git repository
|
||||
win_shell: |
|
||||
git --no-pager clone \
|
||||
{{ beacon_node_repo_url }} \
|
||||
{{ beacon_node_repo_path }} \
|
||||
--branch {{ beacon_node_repo_branch }}
|
||||
args:
|
||||
creates: '{{ beacon_node_repo_path }}'
|
||||
|
||||
- name: Fix repo permissions
|
||||
win_owner:
|
||||
path: '{{ beacon_node_repo_path }}'
|
||||
user: '{{ beacon_node_service_user_name }}'
|
||||
|
||||
# WARNING: There's a known issue with broken GCC mirrors:
|
||||
# TODO: Install using some other method.
|
||||
# https://github.com/ScoopInstaller/Main/issues/1752
|
||||
- name: Install GCC to compile Nim
|
||||
win_shell: 'scoop install --global gcc'
|
||||
|
||||
- name: Add GCC to the system wide PATH
|
||||
win_path:
|
||||
name: 'PATH'
|
||||
elements: 'C:/ProgramData/scoop/apps/gcc/current/bin'
|
||||
scope: 'machine'
|
||||
state: 'present'
|
||||
register: machine_path
|
||||
|
||||
- name: Restart host for PATH change to work
|
||||
win_reboot:
|
||||
reboot_timeout: 160
|
||||
when: machine_path.changed
|
||||
|
||||
- name: Create build script
|
||||
win_template:
|
||||
src: 'build.sh.j2'
|
||||
dest: '{{ beacon_node_build_script }}'
|
||||
mode: 0750
|
||||
|
||||
- name: Schedule node builds
|
||||
win_scheduled_task:
|
||||
description: 'Daily rebuild of Nimbus beacon node binaries'
|
||||
name: '{{ beacon_node_service_name }}-build'
|
||||
#path: '{{ beacon_node_service_path }}'
|
||||
actions:
|
||||
- path: '{{ beacon_node_build_script }}'
|
||||
triggers:
|
||||
- type: 'daily'
|
||||
start_boundary: '2021-01-01T01:00:00'
|
||||
username: '{{ beacon_node_service_user_name }}'
|
||||
state: 'present'
|
||||
enabled: true
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
- import_tasks: checks.yml
|
||||
- import_tasks: user.yml
|
||||
- import_tasks: install.yml
|
||||
- import_tasks: service.yml
|
||||
- import_tasks: firewall.yml
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
#!/usr/bin/env bash
|
||||
# vim: ft=sh
|
||||
set -e
|
||||
|
||||
function headIsDetached() {
|
||||
[[ $(git rev-parse --abbrev-ref --symbolic-full-name HEAD) == "HEAD" ]];
|
||||
}
|
||||
|
||||
function binaryExists() {
|
||||
ls -l build/nimbus_beacon_node_${COMMIT} 2>&1 1>/dev/null
|
||||
}
|
||||
|
||||
function fetchChanges() {
|
||||
# We cannot use "git pull" in here, because history may be changed upstream
|
||||
git fetch
|
||||
git reset --hard "origin/${BRANCH}"
|
||||
}
|
||||
|
||||
function buildBinaries() {
|
||||
# Just one process so it doesn't affect the running beacon nodes.
|
||||
make -j1 update V=3
|
||||
make -j1 nimbus_beacon_node nimbus_signing_process V=3 \
|
||||
LOG_LEVEL="TRACE" NIMFLAGS="-d:testnet_servers_image -d:noSignalHandler"
|
||||
|
||||
# Rename binaries to match commit the were built from.
|
||||
mv "build/nimbus_beacon_node" "build/nimbus_beacon_node_${COMMIT}"
|
||||
mv "build/nimbus_signing_process" "build/nimbus_signing_process_${COMMIT}"
|
||||
|
||||
# Delete copies that are older than 7 days
|
||||
find build -mtime +7 -exec rm '{}' \+
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
BRANCH="{{ beacon_node_repo_branch }}"
|
||||
BUILD_USER="{{ beacon_node_service_user_name }}"
|
||||
INSTALL_PATH="{{ beacon_node_service_bin_path }}"
|
||||
|
||||
if [[ "${USER}" != "${BUILD_USER}" ]]; then
|
||||
echo "Incorrect user: ${USER}" >&2
|
||||
echo "Expected: ${BUILD_USER}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build the Beacon node binaries
|
||||
pushd repo >/dev/null
|
||||
|
||||
# Detached HEAD means we're probably on a tag
|
||||
if headIsDetached; then
|
||||
echo " >>> Deatached HEAD, nothing to fetch."
|
||||
else
|
||||
echo " >>> Fetching changes..."
|
||||
fetchChanges
|
||||
fi
|
||||
|
||||
COMMIT=$(git rev-parse --short=8 HEAD)
|
||||
|
||||
if binaryExists && [[ "$1" != "--force" ]]; then
|
||||
echo " >>> Binary already built"
|
||||
else
|
||||
echo " >>> Building binaries..."
|
||||
buildBinaries
|
||||
fi
|
||||
|
||||
popd >/dev/null
|
||||
|
||||
echo " >>> Install binaries..."
|
||||
cp "repo/build/nimbus_beacon_node_${COMMIT}" "${INSTALL_PATH}"
|
||||
cp "repo/build/nimbus_signing_process_${COMMIT}" "${INSTALL_PATH}"
|
||||
|
||||
# TODO, deploy binary
|
||||
|
||||
echo " >>> SUCCESS"
|
Loading…
Reference in New Issue