Skip to content

Merge pull request #10 from Ash-L2L/master #15

Merge pull request #10 from Ash-L2L/master

Merge pull request #10 from Ash-L2L/master #15

Workflow file for this run

name: Build
on:
pull_request:
push:
branches:
- "master"
workflow_dispatch:
jobs:
build-linux:
name: Build Linux binaries
runs-on: ubuntu-20.04
steps:
- name: install Linux deps
run: sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ./depends
key: linux-${{ hashFiles('depends/packages/**') }}
- name: download dependencies
run: make -C ./depends download-linux
- name: build dependencies
run: make -C ./depends -j4
- run: ./autogen.sh
- run: echo "CONFIG_SITE=$PWD/depends/x86_64-pc-linux-gnu/share/config.site" >> $GITHUB_ENV
- run: ./configure
- run: make -j4
- name: 'Set environment variables: version number'
run: |
MAINCHAIN_VERSION=$(grep -oP "(?<=^PACKAGE_VERSION=').+(?='$)" configure)
echo "MAINCHAIN_VERSION=$MAINCHAIN_VERSION" >> "$GITHUB_ENV"
- name: move qt binary before uploading artifacts
run: mv src/qt/drivechain-qt src/drivechain-qt
- uses: actions/upload-artifact@v4
with:
name: mainchain-${{ env.MAINCHAIN_VERSION }}-x86_64-unknown-linux-gnu
if-no-files-found: error
path: |
src/drivechaind
src/drivechain-cli
src/drivechain-qt
build-windows:
name: Build Windows binaries
runs-on: ubuntu-20.04
steps:
# g++-mingw-w64-x86-64 is the cross-compiling toolchain needed for
# producing Windows binaries
#
# python3 line is needed to make `python` resolve to `python3`
- name: install deps
run: |
sudo apt install g++-mingw-w64-x86-64 \
build-essential libtool autotools-dev automake \
libssl-dev libevent-dev \
pkg-config bsdmainutils curl git \
python3-setuptools python-is-python3 \
- name: configure the Windows toolchain
run: sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ./depends
key: windows-${{ hashFiles('depends/packages/**') }}
- name: download dependencies
run: make -C ./depends download-win
- name: build dependencies
run: make -C ./depends HOST=x86_64-w64-mingw32 -j4
- run: ./autogen.sh
- run: echo "CONFIG_SITE=$PWD/depends/x86_64-w64-mingw32/share/config.site" >> $GITHUB_ENV
- run: ./configure
- run: make -j4
- name: 'Set environment variables: version number'
run: |
MAINCHAIN_VERSION=$(grep -oP "(?<=^PACKAGE_VERSION=').+(?='$)" configure)
echo "MAINCHAIN_VERSION=$MAINCHAIN_VERSION" >> "$GITHUB_ENV"
- name: move qt binary before uploading artifacts
run: mv src/qt/drivechain-qt.exe src/drivechain-qt.exe
- uses: actions/upload-artifact@v4
with:
name: mainchain-${{ env.MAINCHAIN_VERSION }}-x86_64-w64-mingw32
if-no-files-found: error
path: |
src/drivechaind.exe
src/drivechain-cli.exe
src/drivechain-qt.exe
build-macos:
name: Build macOS binaries
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
path: ./depends
key: macos-${{ hashFiles('depends/packages/**') }}
- name: download dependencies
run: make -C ./depends download-osx
- name: Run build in Docker
uses: addnab/docker-run-action@v3
with:
image: barebitcoin/testchain-macos-builder
options: -v ${{ github.workspace }}:/testchain --workdir=/testchain
shell: bash
run: |
set -e
make -C depends -j4
export CONFIG_SITE=$PWD/depends/x86_64-apple-darwin11/share/config.site
./autogen.sh
./configure
make -j4 # Limit the concurrency to prevent OOM
- name: 'Set environment variables: version number'
run: |
MAINCHAIN_VERSION=$(grep -oP "(?<=^PACKAGE_VERSION=').+(?='$)" configure)
echo "MAINCHAIN_VERSION=$MAINCHAIN_VERSION" >> "$GITHUB_ENV"
- name: move qt binary before uploading artifacts
run: mv src/qt/drivechain-qt src/drivechain-qt
- uses: actions/upload-artifact@v4
with:
name: mainchain-${{ env.MAINCHAIN_VERSION }}-x86_64-apple-darwin11
if-no-files-found: error
path: |
src/drivechaind
src/drivechain-cli
src/drivechain-qt
upload-artifacts-to-releases-drivechain-info:
name: Upload artifacts to releases.drivechain.info
runs-on: ubuntu-latest
needs: [build-linux, build-macos, build-windows]
if: github.repository_owner == 'LayerTwo-Labs'
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Zip artifacts
run: |
mv mainchain-*-x86_64-apple-darwin11 L1-Mainchain-latest-x86_64-apple-darwin
zip -r L1-Mainchain-latest-x86_64-apple-darwin.zip L1-Mainchain-latest-x86_64-apple-darwin
mv mainchain-*-x86_64-w64-mingw32 L1-Mainchain-latest-x86_64-w64-mingw32
zip -r L1-Mainchain-latest-x86_64-w64-mingw32.zip L1-Mainchain-latest-x86_64-w64-mingw32
mv mainchain-*-x86_64-unknown-linux-gnu L1-Mainchain-latest-x86_64-unknown-linux-gnu
zip -r L1-Mainchain-latest-x86_64-unknown-linux-gnu.zip L1-Mainchain-latest-x86_64-unknown-linux-gnu
- name: Upload artifacts to releases.drivechain.info
uses: cross-the-world/ssh-scp-ssh-pipelines@latest
with:
host: 45.33.96.47
user: root
pass: ${{ secrets.RELEASES_SERVER_PW }}
port: 22
scp: |
'L1-Mainchain-latest-*.zip' => '/var/www/html/'