Skip to content

[ci] Improve binskim scan performance (#11) #176

[ci] Improve binskim scan performance (#11)

[ci] Improve binskim scan performance (#11) #176

Workflow file for this run

name: CI
env:
BUILD_DIR: xa-build
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
jobs:
build_llvm_linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install LLVM build dependencies
run: >-
sudo apt-get update;
sudo apt-get -f -u install cmake ninja-build chrpath texinfo sharutils libffi-dev
lsb-release patchutils diffstat xz-utils python3-dev libedit-dev libncurses5-dev swig
python3-six python3-sphinx binutils-dev libxml2-dev libjsoncpp-dev pkg-config lcov
procps help2man zlib1g-dev g++-multilib libjs-mathjax python3-recommonmark libpfm4-dev
python3-setuptools libz3-dev ccache
- name: build Linux LLVM
run: ./build-llvm.sh
env:
CC: gcc-10
CXX: g++-10
- name: package LLVM config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'config.*' -o -name '*.log' -o -name 'CMakeCache.txt' | zip -9 build-logs-linux-llvm.zip -@
- name: upload LLVM config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: build-logs
path: build-logs-linux-llvm.zip
- name: package LLVM artifacts
run: tar cjf artifacts-linux-llvm.tar.bz2 artifacts
- name: upload Linux LLVM artifacts
uses: actions/upload-artifact@v3
with:
name: linux
path: artifacts-linux-llvm.tar.bz2
build_xautils_linux:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Xamarin.Android Utilities build dependencies
run: >-
sudo apt-get update;
sudo apt-get -f -u install mingw-w64 cmake ninja-build xz-utils zlib1g-dev libz-mingw-w64-dev
- name: build Linux and Windows Xamarin.Android Utilities
run: ./build-xa-utils.sh
env:
CC: gcc-10
CXX: g++-10
- name: package Xamarin.Android Utilities config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'CMakeCache.txt' -o -name 'CMake*.log' | zip -9 build-logs-linux-xa-utils.zip -@
- name: upload Xamarin.Android Utilities config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: build-logs
path: build-logs-linux-xa-utils.zip
- name: package Xamarin.Android Utilities artifacts
run: tar cjf artifacts-linux-xa-utils.tar.bz2 artifacts
- name: upload Linux and Windows Xamarin.Android Utilities artifacts
uses: actions/upload-artifact@v3
with:
name: linux
path: artifacts-linux-xa-utils.tar.bz2
build_llvm_macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install LLVM build dependencies
run: |
brew update
brew install cmake ninja ccache
- name: build macOS LLVM
run: bash ./build-llvm.sh
- name: package LLVM config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'config.*' -o -name '*.log' -o -name 'CMakeCache.txt' | zip -9 build-logs-macos-llvm.zip -@
- name: upload LLVM config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: build-logs
path: build-logs-macos-llvm.zip
- name: package LLVM artifacts
run: tar cjf artifacts-macos-llvm.tar.bz2 artifacts
- name: upload macOS LLVM artifacts
uses: actions/upload-artifact@v3
with:
name: macOS
path: artifacts-macos-llvm.tar.bz2
build_xautils_macos:
runs-on: macos-11
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Xamarin.Android Utilities build dependencies
run: |
brew update
brew install make cmake xz ninja
- name: build macOS Xamarin.Android Utilities
run: bash ./build-xa-utils.sh
- name: package Xamarin.Android Utilities config and build logs
if: ${{ always() }}
run: find ${BUILD_DIR} -name 'CMakeCache.txt' -o -name 'CMake*.log' | zip -9 build-logs-macos-xa-utils.zip -@
- name: upload Xamarin.Android Utilities config and build logs
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: build-logs
path: build-logs-macos-xa-utils.zip
- name: package Xamarin.Android Utilities artifacts
run: tar cjf artifacts-macos-xa-utils.tar.bz2 artifacts
- name: upload macOS Xamarin.Android Utilities artifacts
uses: actions/upload-artifact@v3
with:
name: macOS
path: artifacts-macos-xa-utils.tar.bz2
build_llvm_windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.1
- name: build Windows LLVM
run: ./build-llvm.cmd
# - name: Download UPX
# run: ./download-upx.ps1
# - name: Compress LLVM utilities with UPX
# run: |
# ./upx.exe -9 -v .\artifacts\windows\bin\llc.exe
# ./upx.exe -9 -v .\artifacts\windows\bin\lld.exe
# ./upx.exe -9 -v .\artifacts\windows\bin\llvm-mc.exe
# ./upx.exe -9 -v .\artifacts\windows\bin\llvm-strip.exe
- name: package LLVM artifacts
run: 7z a artifacts-windows-llvm.7z artifacts
- name: upload Windows LLVM artifacts
uses: actions/upload-artifact@v3
with:
name: Windows
path: artifacts-windows-llvm.7z
package_binaries:
runs-on: ubuntu-20.04
needs: [build_llvm_linux, build_xautils_linux, build_llvm_macos, build_xautils_macos, build_llvm_windows]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Download Linux artifacts
uses: actions/download-artifact@v3
with:
name: linux
- name: Download macOS artifacts
uses: actions/download-artifact@v3
with:
name: macOS
- name: Download Windows artifacts
uses: actions/download-artifact@v3
with:
name: Windows
- name: Unpack Linux artifacts
run: |
tar xf artifacts-linux-llvm.tar.bz2
tar xf artifacts-linux-xa-utils.tar.bz2
- name: Unpack macOS artifacts
run: |
tar xf artifacts-macos-llvm.tar.bz2
tar xf artifacts-macos-xa-utils.tar.bz2
- name: Unpack Windows artifacts
run: |
7z x artifacts-windows-llvm.7z
- name: Package Linux, macOS and Windows artifacts
run: ./package.sh
- name: upload Xamarin.Android Toolchain
uses: actions/upload-artifact@v3
with:
name: Xamarin.Android
path: artifacts/xamarin-android-toolchain.tar.bz2