aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml117
-rw-r--r--.github/workflows/depends.yml39
2 files changed, 98 insertions, 58 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b84c6b0cc..bd2e26484 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -7,11 +7,24 @@ on:
- 'docs/**'
- '**/README.md'
+# The below variables reduce repetitions across similar targets
+env:
+ REMOVE_BUNDLED_BOOST : rm -rf /usr/local/share/boost
+ BUILD_DEFAULT_LINUX: |
+ cmake -S . -B build -D ARCH="default" -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release && cmake --build build -j3
+ APT_INSTALL_LINUX: 'sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler ccache'
+ APT_SET_CONF: |
+ echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ CCACHE_SETTINGS: |
+ ccache --max-size=150M
+ ccache --set-config=compression=true
+
jobs:
build-macos:
runs-on: macOS-latest
env:
- CCACHE_COMPRESS: 1
CCACHE_TEMPDIR: /tmp/.ccache-temp
steps:
- uses: actions/checkout@v1
@@ -20,19 +33,18 @@ jobs:
- uses: actions/cache@v2
with:
path: /Users/runner/Library/Caches/ccache
- key: ccache-macos-build-${{ github.sha }}
- restore-keys: ccache-macos-build-
+ key: ccache-${{ runner.os }}-build-${{ github.sha }}
+ restore-keys: ccache-${{ runner.os }}-build-
- name: install dependencies
- run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi zmq libpgm miniupnpc ldns expat libunwind-headers protobuf ccache
+ run: HOMEBREW_NO_AUTO_UPDATE=1 brew install boost hidapi openssl zmq libpgm miniupnpc ldns expat libunwind-headers protobuf ccache
- name: build
run: |
- ccache --max-size=150M
+ ${{env.CCACHE_SETTINGS}}
make -j3
build-windows:
runs-on: windows-latest
env:
- CCACHE_COMPRESS: 1
CCACHE_TEMPDIR: C:\Users\runneradmin\.ccache-temp
CCACHE_DIR: C:\Users\runneradmin\.ccache
defaults:
@@ -45,22 +57,27 @@ jobs:
- uses: actions/cache@v2
with:
path: C:\Users\runneradmin\.ccache
- key: ccache-windows-build-${{ github.sha }}
- restore-keys: ccache-windows-build-
+ key: ccache-${{ runner.os }}-build-${{ github.sha }}
+ restore-keys: ccache-${{ runner.os }}-build-
- uses: eine/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 git
+ 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
- name: build
run: |
- ccache --max-size=150M
+ ${{env.CCACHE_SETTINGS}}
make release-static-win64 -j2
+# See the OS labels and monitor deprecations here:
+# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
+
build-ubuntu:
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
env:
- CCACHE_COMPRESS: 1
CCACHE_TEMPDIR: /tmp/.ccache-temp
+ strategy:
+ matrix:
+ os: [ubuntu-latest, ubuntu-18.04]
steps:
- uses: actions/checkout@v1
with:
@@ -68,28 +85,24 @@ jobs:
- uses: actions/cache@v2
with:
path: ~/.ccache
- key: ccache-ubuntu-build-${{ github.sha }}
- restore-keys: ccache-ubuntu-build-
+ key: ccache-${{ runner.os }}-build-${{ matrix.os }}-${{ github.sha }}
+ restore-keys: ccache-${{ runner.os }}-build-${{ matrix.os }}
- name: remove bundled boost
- run: sudo rm -rf /usr/local/share/boost
+ run: ${{env.REMOVE_BUNDLED_BOOST}}
- name: set apt conf
- run: |
- echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ run: ${{env.APT_SET_CONF}}
- name: update apt
run: sudo apt update
- name: install monero dependencies
- run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler ccache
+ run: ${{env.APT_INSTALL_LINUX}}
- name: build
run: |
- ccache --max-size=150M
- make -j3
+ ${{env.CCACHE_SETTINGS}}
+ ${{env.BUILD_DEFAULT_LINUX}}
libwallet-ubuntu:
runs-on: ubuntu-latest
env:
- CCACHE_COMPRESS: 1
CCACHE_TEMPDIR: /tmp/.ccache-temp
steps:
- uses: actions/checkout@v1
@@ -98,30 +111,26 @@ jobs:
- uses: actions/cache@v2
with:
path: ~/.ccache
- key: ccache-ubuntu-libwallet-${{ github.sha }}
- restore-keys: ccache-ubuntu-libwallet-
+ key: ccache-${{ runner.os }}-libwallet-${{ github.sha }}
+ restore-keys: ccache-${{ runner.os }}-libwallet-
- name: remove bundled boost
- run: sudo rm -rf /usr/local/share/boost
+ run: ${{env.REMOVE_BUNDLED_BOOST}}
- name: set apt conf
- run: |
- echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ run: ${{env.APT_SET_CONF}}
- name: update apt
run: sudo apt update
- name: install monero dependencies
- run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler ccache
+ run: ${{env.APT_INSTALL_LINUX}}
- name: build
run: |
- ccache --max-size=150M
- cmake -DBUILD_GUI_DEPS=ON
- make -j3
+ ${{env.CCACHE_SETTINGS}}
+ cmake .
+ make wallet_api -j3
test-ubuntu:
needs: build-ubuntu
runs-on: ubuntu-latest
env:
- CCACHE_COMPRESS: 1
CCACHE_TEMPDIR: /tmp/.ccache-temp
steps:
- uses: actions/checkout@v1
@@ -131,31 +140,43 @@ jobs:
uses: actions/cache@v2
with:
path: ~/.ccache
- key: test-ubuntu-ccache-${{ github.sha }}
- restore-keys: test-ubuntu-ccache-
+ key: ccache-${{ runner.os }}-build-ubuntu-latest-${{ github.sha }}
+ restore-keys: ccache-${{ runner.os }}-build-ubuntu-latest
- name: remove bundled boost
- run: sudo rm -rf /usr/local/share/boost
+ run: ${{env.REMOVE_BUNDLED_BOOST}}
- name: set apt conf
- run: |
- echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ run: ${{env.APT_SET_CONF}}
- name: update apt
run: sudo apt update
- name: install monero dependencies
- run: sudo apt -y install build-essential cmake libboost-all-dev miniupnpc libunbound-dev graphviz doxygen libunwind8-dev pkg-config libssl-dev libzmq3-dev libsodium-dev libhidapi-dev libnorm-dev libusb-1.0-0-dev libpgm-dev libprotobuf-dev protobuf-compiler ccache
+ run: ${{env.APT_INSTALL_LINUX}}
- name: install Python dependencies
run: pip install requests psutil monotonic
- name: tests
env:
CTEST_OUTPUT_ON_FAILURE: ON
run: |
- ccache --max-size=150M
- DIR_BUILD="build/ci/release"
- DIR_SRC="`pwd`"
- mkdir -p "${DIR_BUILD}" && cd "${DIR_BUILD}"
- cmake -S "${DIR_SRC}" -D ARCH="default" -D BUILD_SHARED_LIBS=ON -D BUILD_TESTS=ON -D CMAKE_BUILD_TYPE=release && make -j3 && make test
+ ${{env.CCACHE_SETTINGS}}
+ ${{env.BUILD_DEFAULT_LINUX}}
+ cmake --build build --target test
# ARCH="default" (not "native") ensures, that a different execution host can execute binaries compiled elsewhere.
# BUILD_SHARED_LIBS=ON speeds up the linkage part a bit, reduces size, and is the only place where the dynamic linkage is tested.
+ source-archive:
+ runs-on: ubuntu-20.04
+ steps:
+ - uses: actions/checkout@v1
+ with:
+ submodules: recursive
+ - name: archive
+ run: |
+ pip install git-archive-all
+ export VERSION="monero-$(git describe)"
+ export OUTPUT="$VERSION.tar"
+ echo "OUTPUT=$OUTPUT" >> $GITHUB_ENV
+ /home/runner/.local/bin/git-archive-all --prefix "$VERSION/" --force-submodules "$OUTPUT"
+ - uses: actions/upload-artifact@v2
+ with:
+ name: ${{ env.OUTPUT }}
+ path: /home/runner/work/monero/monero/${{ env.OUTPUT }}
diff --git a/.github/workflows/depends.yml b/.github/workflows/depends.yml
index d5509705d..9385338de 100644
--- a/.github/workflows/depends.yml
+++ b/.github/workflows/depends.yml
@@ -7,11 +7,19 @@ on:
- 'docs/**'
- '**/README.md'
+env:
+ APT_SET_CONF: |
+ echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ CCACHE_SETTINGS: |
+ ccache --max-size=150M
+ ccache --set-config=compression=true
+
jobs:
build-macos:
runs-on: ubuntu-18.04
env:
- CCACHE_COMPRESS: 1
CCACHE_TEMPDIR: /tmp/.ccache-temp
strategy:
fail-fast: false
@@ -50,20 +58,31 @@ jobs:
- uses: actions/checkout@v1
with:
submodules: recursive
+# Most volatile cache
- name: ccache
uses: actions/cache@v2
with:
- path: |
- ~/.ccache
- contrib/depends/built
- contrib/depends/sdk-sources
+ path: ~/.ccache
key: ccache-${{ matrix.toolchain.host }}-${{ github.sha }}
restore-keys: ccache-${{ matrix.toolchain.host }}-
+# Less volatile cache
+ - name: depends cache
+ uses: actions/cache@v2
+ with:
+ path: contrib/depends/built
+ key: depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }}
+ restore-keys: |
+ depends-${{ matrix.toolchain.host }}-${{ hashFiles('contrib/depends/packages/*') }}
+ depends-${{ matrix.toolchain.host }}-
+# Static cache
+ - name: OSX SDK cache
+ uses: actions/cache@v2
+ with:
+ path: contrib/depends/sdk-sources
+ key: sdk-${{ matrix.toolchain.host }}-${{ matrix.toolchain.osx_sdk }}
+ restore-keys: sdk-${{ matrix.toolchain.host }}-${{ matrix.toolchain.osx_sdk }}
- name: set apt conf
- run: |
- echo "Acquire::Retries \"3\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::http::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
- echo "Acquire::ftp::Timeout \"120\";" | sudo tee -a /etc/apt/apt.conf.d/80-custom
+ run: ${{env.APT_SET_CONF}}
- name: install dependencies
run: sudo apt update; sudo apt -y install build-essential libtool cmake autotools-dev automake pkg-config bsdmainutils curl git ca-certificates ccache ${{ matrix.toolchain.packages }}
- name: prepare apple-darwin11
@@ -79,7 +98,7 @@ jobs:
sudo update-alternatives --set ${{ matrix.toolchain.host }}-gcc $(which ${{ matrix.toolchain.host }}-gcc-posix)
- name: build
run: |
- ccache --max-size=150M
+ ${{env.CCACHE_SETTINGS}}
make depends target=${{ matrix.toolchain.host }} -j2
- uses: actions/upload-artifact@v2
if: ${{ matrix.toolchain.host == 'x86_64-w64-mingw32' || matrix.toolchain.host == 'x86_64-apple-darwin11' || matrix.toolchain.host == 'x86_64-unknown-linux-gnu' }}