on: push: tags: - 'v*' name: Create release and build artifacts jobs: build_win: name: Build Windows artifacts runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@master - name: Checkout deps run: git clone https://github.com/xmrig/xmrig-deps.git - name: Build project on Windows run: | cmake . -G "MinGW Makefiles" -DXMRIG_DEPS=xmrig-deps\gcc\x64 make -j2 copy src\config.json . copy bin\WinRing0\WinRing0x64.sys . 7z a -tzip -mx windows_build.zip xmrig.exe config.json WinRing0x64.sys - name: Upload Windows build artifacts uses: actions/upload-artifact@v1 with: name: windows_build path: windows_build.zip build_lin: name: Build Ubuntu artifacts runs-on: ubuntu-20.04 steps: - name: Prepare Ubuntu tools run: | sudo apt-get install -y git build-essential cmake libuv1-dev libssl-dev libhwloc-dev - name: Checkout code uses: actions/checkout@master - name: Build project on Ubuntu run: | cmake . make -j$(nproc) cp src/config.json . tar cfz ubuntu_build.tar.gz xmrig config.json - name: Upload Ubuntu build artifacts uses: actions/upload-artifact@v1 with: name: ubuntu_build path: ubuntu_build.tar.gz build_macos: name: Build MacOS artifacts runs-on: macos-latest steps: - name: Prepare MacOS tools run: | brew install cmake libuv openssl hwloc - name: Checkout code uses: actions/checkout@master - name: Build hwloc on MacOS run: | curl -O https://download.open-mpi.org/release/hwloc/v2.1/hwloc-2.1.0.tar.bz2 tar xjf hwloc-2.1.0.tar.bz2 cd hwloc-2.1.0 ./configure --disable-shared --enable-static --disable-io --disable-libxml2 make -j$(sysctl -n hw.logicalcpu) cd .. - name: Build project on MacOS run: | cmake . -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DHWLOC_INCLUDE_DIR=hwloc-2.1.0/include -DHWLOC_LIBRARY=hwloc-2.1.0/hwloc/.libs/libhwloc.a make -j$(sysctl -n hw.logicalcpu) cp src/config.json . tar cfz macos_build.tar.gz xmrig config.json - name: Upload MacOS build artifacts uses: actions/upload-artifact@v1 with: name: macos_build path: macos_build.tar.gz build_lin_rh7: name: Build CentOS 7 artifacts runs-on: ubuntu-latest container: centos:7 steps: - name: Prepare CentOS 7 tools run: | yum install -y epel-release yum install -y git cmake gcc gcc-c++ libstdc++-static make openssl-devel libmicrohttpd-devel libuv-devel glibc-static libuv-static - name: Checkout code run: | git clone https://github.com/MoneroOcean/xmrig.git . git checkout ${GITHUB_REF:10} - name: Build project on CentOS 7 run: | cmake . -DWITH_TLS=OFF -DWITH_HWLOC=OFF make -j$(nproc) cp src/config.json . mv xmrig-notls xmrig tar cfz centos7_build.tar.gz xmrig config.json - name: Upload CentOS 7 build artifacts uses: actions/upload-artifact@v1 with: name: centos7_build path: centos7_build.tar.gz deploy: needs: [build_win, build_lin, build_macos, build_lin_rh7] name: Create release and upload artifacts runs-on: ubuntu-latest steps: - name: Create Release id: create_release uses: actions/create-release@v1.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} draft: false prerelease: false - name: Set version id: version run: echo ::set-output name=VERSION::${GITHUB_REF:10} - name: Download Windows build artifacts uses: actions/download-artifact@v1 with: name: windows_build - name: Download Ubuntu build artifacts uses: actions/download-artifact@v1 with: name: ubuntu_build - name: Download MacOS build artifacts uses: actions/download-artifact@v1 with: name: macos_build - name: Download CentOS 7 build artifacts uses: actions/download-artifact@v1 with: name: centos7_build - name: Upload Windows build release asset uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: windows_build/windows_build.zip asset_name: xmrig-${{steps.version.outputs.VERSION}}-win64.zip asset_content_type: application/zip - name: Upload Ubuntu build release asset uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ubuntu_build/ubuntu_build.tar.gz asset_name: xmrig-${{steps.version.outputs.VERSION}}-lin64.tar.gz asset_content_type: application/zip - name: Upload MacOS build release asset uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: macos_build/macos_build.tar.gz asset_name: xmrig-${{steps.version.outputs.VERSION}}-mac64.tar.gz asset_content_type: application/zip - name: Upload CentOS 7 build release asset uses: actions/upload-release-asset@v1.0.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: centos7_build/centos7_build.tar.gz asset_name: xmrig-${{steps.version.outputs.VERSION}}-lin64-compat.tar.gz asset_content_type: application/zip - name: Update xmrig_setup repo run: | git clone https://$GITHUB_ACTOR:${{secrets.xmrig_setup_key}}@github.com/MoneroOcean/xmrig_setup.git cd xmrig_setup git config user.name MoneroOcean git config user.email support@moneroocean.stream mv ../centos7_build/centos7_build.tar.gz xmrig.tar.gz mv ../windows_build/windows_build.zip xmrig.zip unzip xmrig.zip zip -u offline_miner_setup.zip xmrig.exe config.json WinRing0x64.sys git commit -m "xmrig "${GITHUB_REF:10}" based release" xmrig.tar.gz xmrig.zip offline_miner_setup.zip git push