actions: change static build #301
This file contains hidden or 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: ci/gh-actions/cli | |
on: | |
push: | |
paths-ignore: | |
- 'docs/**' | |
- '**/README.md' | |
pull_request: | |
paths-ignore: | |
- 'docs/**' | |
- '**/README.md' | |
# The below variables reduce repetitions across similar targets | |
env: | |
# ARCH="default" (not "native") ensures, that a different execution host can execute binaries compiled elsewhere. | |
BUILD_DEFAULT_LINUX: 'cmake -S . -B build -D ARCH="default" -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=Release && cmake --build build --target all && cmake --build build --target wallet_api' | |
APT_INSTALL_LINUX: 'apt -y install curl build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libusb-1.0-0-dev libprotobuf-dev protobuf-compiler ccache git' | |
APT_SET_CONF: | | |
tee -a /etc/apt/apt.conf.d/80-custom << EOF | |
Acquire::Retries "3"; | |
Acquire::http::Timeout "120"; | |
Acquire::ftp::Timeout "120"; | |
EOF | |
CCACHE_SETTINGS: | | |
ccache --max-size=150M | |
ccache --set-config=compression=true | |
jobs: | |
build-macos: | |
name: 'macOS (brew)' | |
runs-on: macOS-latest | |
env: | |
CCACHE_TEMPDIR: /tmp/.ccache-temp | |
steps: | |
- name: Setup Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 1.23.8 | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/cache@v4 | |
with: | |
path: /Users/runner/Library/Caches/ccache | |
key: ccache-${{ runner.os }}-build-${{ github.sha }} | |
restore-keys: ccache-${{ runner.os }}-build- | |
- uses: ./.github/actions/set-make-job-count | |
- name: install dependencies | |
run: | | |
HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi openssl zmq libpgm miniupnpc expat libunwind-headers protobuf ccache | |
- name: build | |
run: | | |
${{env.CCACHE_SETTINGS}} | |
make -j${{env.MAKE_JOB_COUNT}} | |
build-windows: | |
name: 'Windows (MSYS2)' | |
runs-on: windows-latest | |
env: | |
CCACHE_TEMPDIR: C:\Users\runneradmin\.ccache-temp | |
CCACHE_DIR: C:\Users\runneradmin\.ccache | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/cache@v4 | |
with: | |
path: C:\Users\runneradmin\.ccache | |
key: ccache-${{ runner.os }}-build-${{ github.sha }} | |
restore-keys: ccache-${{ runner.os }}-build- | |
- uses: msys2/setup-msys2@v2 | |
with: | |
update: true | |
install: mingw-w64-x86_64-toolchain make mingw-w64-x86_64-cmake mingw-w64-x86_64-ccache mingw-w64-x86_64-boost mingw-w64-x86_64-openssl mingw-w64-x86_64-zeromq mingw-w64-x86_64-libsodium mingw-w64-x86_64-hidapi mingw-w64-x86_64-protobuf-c mingw-w64-x86_64-libusb mingw-w64-x86_64-unbound git mingw-w64-x86_64-go | |
- uses: ./.github/actions/set-make-job-count | |
- name: build | |
run: | | |
${{env.CCACHE_SETTINGS}} | |
make release-static -j${{env.MAKE_JOB_COUNT}} | |
build-arch: | |
name: 'Arch Linux' | |
runs-on: ubuntu-latest | |
container: | |
image: archlinux:latest | |
steps: | |
- name: install dependencies | |
run: pacman -Syyu --noconfirm curl base-devel git cmake boost openssl zeromq unbound libsodium readline expat gtest python3 doxygen graphviz hidapi libusb protobuf | |
- name: Install Go 1.23.8 | |
run: | | |
curl -LO https://go.dev/dl/go1.23.8.linux-amd64.tar.gz | |
tar -C /usr/local -xzf go1.23.8.linux-amd64.tar.gz | |
ln -s /usr/local/go/bin/go /usr/local/bin/go | |
go version | |
- name: configure git | |
run: git config --global --add safe.directory '*' | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: ./.github/actions/set-make-job-count | |
- name: build | |
env: | |
CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
run: ${{env.BUILD_DEFAULT_LINUX}} | |
build-debian: | |
# Oldest supported Debian version | |
name: 'Debian 12' | |
runs-on: ubuntu-latest | |
container: | |
image: debian:12 | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
steps: | |
- name: set apt conf | |
run: ${{env.APT_SET_CONF}} | |
- name: update apt | |
run: apt update | |
- name: install scala dependencies | |
run: ${{env.APT_INSTALL_LINUX}} | |
- name: Install Go 1.23.8 | |
run: | | |
curl -LO https://go.dev/dl/go1.23.8.linux-amd64.tar.gz | |
tar -C /usr/local -xzf go1.23.8.linux-amd64.tar.gz | |
ln -s /usr/local/go/bin/go /usr/local/bin/go | |
go version | |
- name: configure git | |
run: git config --global --add safe.directory '*' | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: ./.github/actions/set-make-job-count | |
- name: build | |
env: | |
CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
run: ${{env.BUILD_DEFAULT_LINUX}} | |
build-ubuntu: | |
name: ${{ matrix.name }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: Ubuntu 22.04 | |
container: ubuntu:22.04 | |
container: | |
image: ${{ matrix.container }} | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
CCACHE_TEMPDIR: /tmp/.ccache-temp | |
CCACHE_DIR: ~/.ccache | |
steps: | |
- name: set apt conf | |
run: ${{env.APT_SET_CONF}} | |
- name: update apt | |
run: apt update | |
- name: install scala dependencies | |
run: ${{env.APT_INSTALL_LINUX}} | |
- name: configure git | |
run: git config --global --add safe.directory '*' | |
- name: Install Go 1.23.8 | |
run: | | |
curl -LO https://go.dev/dl/go1.23.8.linux-amd64.tar.gz | |
tar -C /usr/local -xzf go1.23.8.linux-amd64.tar.gz | |
ln -s /usr/local/go/bin/go /usr/local/bin/go | |
go version | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- uses: actions/cache@v4 | |
with: | |
path: ~/.ccache | |
key: ccache-${{ matrix.container }}-build-${{ github.sha }} | |
restore-keys: ccache-${{ matrix.container }}-build- | |
- uses: ./.github/actions/set-make-job-count | |
- name: build | |
env: | |
CMAKE_BUILD_PARALLEL_LEVEL: ${{env.MAKE_JOB_COUNT}} | |
run: | | |
${{env.CCACHE_SETTINGS}} | |
${{env.BUILD_DEFAULT_LINUX}} | |
source-archive: | |
name: "source archive" | |
runs-on: ubuntu-latest | |
container: | |
image: ubuntu:22.04 | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
steps: | |
- name: set apt conf | |
run: ${{env.APT_SET_CONF}} | |
- name: update apt | |
run: apt update | |
- name: install dependencies | |
run: apt install -y curl git python3-pip | |
- name: configure git | |
run: git config --global --add safe.directory '*' | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
submodules: recursive | |
- name: archive | |
run: | | |
pip install git-archive-all | |
export VERSION="scala-$(git rev-parse --short HEAD)" | |
export OUTPUT="$VERSION.tar" | |
echo "OUTPUT=$OUTPUT" >> $GITHUB_ENV | |
git-archive-all --prefix "$VERSION/" --force-submodules "$OUTPUT" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ env.OUTPUT }} | |
path: ${{ env.OUTPUT }} |