Spark #1270
Workflow file for this run
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: Continuous Integration on Master | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
env: | |
SOURCE_ARTIFACT: source | |
jobs: | |
create-source-distribution: | |
name: Create Source Distribution | |
runs-on: ubuntu-latest | |
env: | |
ARTIFACT_DIR: source | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v2 | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y libboost-all-dev libdb-dev libdb++-dev libevent-dev bison | |
- name: Create Distribution Tarball | |
run: | | |
./autogen.sh | |
./configure --with-incompatible-bdb ac_cv_lib_tor_tor_main=yes | |
make dist | |
- name: Download Dependencies | |
run: make -C depends download | |
- name: Create Dependencies Tarball | |
run: tar -czf depends.tar.gz depends | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv depends.tar.gz firo-*.tar.gz $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v1 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
path: ${{ env.ARTIFACT_DIR }} | |
build-linux: | |
name: Build for Linux | |
needs: create-source-distribution | |
runs-on: ubuntu-latest | |
env: | |
ARTIFACT_DIR: linux-binaries | |
TEST_LOG_ARTIFACT_DIR: test-logs | |
steps: | |
- name: Getting Source | |
uses: actions/download-artifact@v1 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
- name: Extract Archives | |
run: | | |
tar -xzf depends.tar.gz | |
tar -xzf firo-*.tar.gz --strip-components=1 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y python3-zmq | |
- name: Build Dependencies | |
run: make -C depends -j$(nproc) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Build Firo | |
run: | | |
./configure --disable-jni --enable-elysium --enable-tests --with-comparison-tool=no --prefix=$(realpath depends/x86_64-pc-linux-gnu) | |
make -j$(nproc) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Run Unit Tests | |
run: make check | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Run RPC Tests | |
env: | |
TIMEOUT: 600 | |
run: qa/pull-tester/rpc-tests.py -extended | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv $SOURCE_ARTIFACT/src/{firo-cli,firo-tx,firod,qt/firo-qt} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v1 | |
with: | |
name: linux-binaries | |
path: ${{ env.ARTIFACT_DIR }} | |
- name: Prepare Test Logs for Artifact | |
if: failure() | |
run: | | |
tor_log=$SOURCE_ARTIFACT/src/tor/test-suite.log | |
firo_log=$SOURCE_ARTIFACT/src/test-suite.log | |
mkdir -p $TEST_LOG_ARTIFACT_DIR | |
if test -f $tor_log; then | |
mv $tor_log $TEST_LOG_ARTIFACT_DIR/tor.log | |
fi | |
if test -f $firo_log; then | |
mv $firo_log $TEST_LOG_ARTIFACT_DIR/firo.log | |
fi | |
- name: Upload Test Logs Artifact | |
if: failure() | |
uses: actions/upload-artifact@v1 | |
with: | |
name: test-logs | |
path: ${{ env.TEST_LOG_ARTIFACT_DIR }} | |
build-windows: | |
name: Build for Windows | |
needs: create-source-distribution | |
runs-on: ubuntu-20.04 | |
env: | |
ARTIFACT_DIR: windows-binaries | |
steps: | |
- name: Getting Source | |
uses: actions/download-artifact@v1 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
- name: Extract Archives | |
run: | | |
tar -xzf depends.tar.gz | |
tar -xzf firo-*.tar.gz --strip-components=1 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Install Required Packages | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y g++-mingw-w64-x86-64 gcc-mingw-w64-x86-64 | |
- name: Switch MinGW GCC and G++ to POSIX Threading | |
run: | | |
sudo update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix | |
sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix | |
- name: Build Dependencies | |
run: make -C depends -j$(nproc) HOST=x86_64-w64-mingw32 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Build Firo | |
run: | | |
./configure --without-libs --disable-jni --enable-elysium --prefix=$(realpath depends/x86_64-w64-mingw32) | |
make -j$(nproc) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv $SOURCE_ARTIFACT/src/{firo-cli.exe,firo-tx.exe,firod.exe,qt/firo-qt.exe} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v1 | |
with: | |
name: windows-binaries | |
path: ${{ env.ARTIFACT_DIR }} | |
build-mac: | |
name: Build for macOS | |
needs: create-source-distribution | |
runs-on: macos-latest | |
env: | |
ARTIFACT_DIR: mac-binaries | |
steps: | |
- name: Getting Source | |
uses: actions/download-artifact@v1 | |
with: | |
name: ${{ env.SOURCE_ARTIFACT }} | |
- name: Extract Archives | |
run: | | |
tar -xzf depends.tar.gz | |
tar -xzf firo-*.tar.gz --strip-components=1 | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Use Xcode instead of Command Line Tools | |
run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer | |
- name: Install Required Packages | |
run: brew install automake coreutils pkg-config | |
# Workaround for macOS: https://github.com/actions/runner/issues/2958 | |
- name: Install setuptools | |
run: sudo -H pip install setuptools | |
- name: Build Dependencies | |
run: make -C depends -j$(sysctl -n hw.activecpu) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Build Firo | |
run: | | |
./configure --disable-jni --enable-elysium --prefix=$(grealpath depends/x86_64-apple-darwin*) | |
make -j$(sysctl -n hw.activecpu) | |
working-directory: ${{ env.SOURCE_ARTIFACT }} | |
- name: Prepare Files for Artifact | |
run: | | |
mkdir -p $ARTIFACT_DIR | |
mv $SOURCE_ARTIFACT/src/{firo-cli,firo-tx,firod,qt/firo-qt} $ARTIFACT_DIR | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v1 | |
with: | |
name: mac-binaries | |
path: ${{ env.ARTIFACT_DIR }} |