Skip to content

Update build-factory.yml (#1042) #740

Update build-factory.yml (#1042)

Update build-factory.yml (#1042) #740

Workflow file for this run

# Copyright (c) 2018-2019 The Veil developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
name: Github Actions CI for Veil
on: [push, pull_request]
env:
SOURCE_ARTIFACT: source
jobs:
create-source-distribution:
name: Create Source Distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: source
steps:
- name: Checkout
uses: actions/checkout@v4
# Needs qt and protobuf to configure qt and include veil-qt.1 in distribution
- name: Install Required Packages
run: |
sudo apt update
sudo apt install -y libboost-all-dev libdb-dev libdb++-dev libevent-dev libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
- name: Create Distribution Tarball
run: |
./autogen.sh
./configure --with-incompatible-bdb
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 veil-*.tar.gz $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.ARTIFACT_DIR }}
build-x86_64-linux:
name: Build for x86 Linux 64bit
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: x86_64-linux-binaries
TEST_LOG_ARTIFACT_DIR: test-logs
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf veil-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt update
sudo apt install -y python3-zmq
- name: Build Dependencies
run: make -C depends -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Veil
run: |
./configure --disable-jni --enable-tests --with-comparison-tool=no --prefix=$(realpath depends/x86_64-pc-linux-gnu)
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
strip $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt}
mv $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_DIR }}
path: ${{ env.ARTIFACT_DIR }}
build-win64:
name: Build for Win64
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: win64-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf veil-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt update
sudo apt 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 Veil
run: |
./configure --disable-jni --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
strip $SOURCE_ARTIFACT/src/{veil-cli.exe,veil-tx.exe,veild.exe,qt/veil-qt.exe}
mv $SOURCE_ARTIFACT/src/{veil-cli.exe,veil-tx.exe,veild.exe,qt/veil-qt.exe} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_DIR }}
path: ${{ env.ARTIFACT_DIR }}
build-osx64:
name: Build for MacOSX
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: macosx-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf veil-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt update
sudo apt install -y python3-setuptools libcap-dev zlib1g-dev cmake
sudo -H pip install setuptools
- name: Get macOS SDK
run: |
mkdir -p depends/sdk-sources
mkdir -p depends/SDKs
curl https://bitcoincore.org/depends-sources/sdks/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz -o depends/sdk-sources/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz
tar -C depends/SDKs -xf depends/sdk-sources/Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Dependencies
run: make -C depends HOST=x86_64-apple-darwin18 -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Veil
run: |
./configure --enable-c++17 --disable-jni --prefix=$(realpath depends/x86_64-apple-darwin18)
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
# strip fails with "Unable to recognise the format of the input file"
#strip $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt}
mv $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_DIR }}
path: ${{ env.ARTIFACT_DIR }}
build-aarch64-linux:
name: Build for ARM Linux 64bit
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: aarch64-linux-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf veil-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt update
sudo apt install -y python3-zmq libcap-dev cmake g++-aarch64-linux-gnu
- name: Build Dependencies
run: make -C depends HOST=aarch64-linux-gnu -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Veil
run: |
./configure --disable-jni --prefix=$(realpath depends/aarch64-linux-gnu)
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
# strip fails with "Unable to recognise the format of the input file"
# strip $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt}
mv $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_DIR }}
path: ${{ env.ARTIFACT_DIR }}
build-arm-linux-gnueabihf:
name: Build for ARM Linux 32bit
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: arm32-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf veil-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt update
sudo apt install -y g++-arm-linux-gnueabihf libgmp-dev
- name: Build Dependencies
run: make -C depends -j$(nproc) HOST=arm-linux-gnueabihf
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Veil
run: |
./configure --disable-jni --prefix=$(realpath depends/arm-linux-gnueabihf) --enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
# strip fails with "Unable to recognise the format of the input file"
# strip $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt}
mv $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_DIR }}
path: ${{ env.ARTIFACT_DIR }}
build-i686-linux32:
name: Build for x86 Linux 32bit
needs: create-source-distribution
runs-on: ubuntu-20.04
env:
ARTIFACT_DIR: i686-linux32-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf veil-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt update
sudo apt install -y python3-zmq gcc-multilib g++-multilib
- name: Build Dependencies
run: make -C depends -j$(nproc) HOST=i686-linux-gnu
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Veil
run: |
./configure --disable-jni --prefix=$(realpath depends/i686-linux-gnu)
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
strip $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt}
mv $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild,qt/veil-qt} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_DIR }}
path: ${{ env.ARTIFACT_DIR }}
build-riscv64-linux:
name: Build for RISCV Linux 64bit
needs: create-source-distribution
runs-on: ubuntu-22.04
env:
ARTIFACT_DIR: riscv64-linux-binaries
steps:
- name: Getting Source
uses: actions/download-artifact@v4
with:
name: ${{ env.SOURCE_ARTIFACT }}
path: ${{ env.SOURCE_ARTIFACT }}
- name: Extract Archives
run: |
tar -xzf depends.tar.gz
tar -xzf veil-*.tar.gz --strip-components=1
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Install Required Packages
run: |
sudo apt update
sudo apt install -y python3-zmq libcap-dev cmake g++-riscv64-linux-gnu
- name: Build Dependencies
run: make -C depends NO_QR=1 NO_QT=1 HOST=riscv64-linux-gnu -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Build Veil
run: |
./configure --disable-jni --without-gui --prefix=$(realpath depends/riscv64-linux-gnu)
make -j$(nproc)
working-directory: ${{ env.SOURCE_ARTIFACT }}
- name: Prepare Files for Artifact
run: |
mkdir -p $ARTIFACT_DIR
# strip fails with "Unable to recognise the format of the input file"
# strip $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild}
mv $SOURCE_ARTIFACT/src/{veil-cli,veil-tx,veild} $ARTIFACT_DIR
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_DIR }}
path: ${{ env.ARTIFACT_DIR }}