| name: Linux |
| |
| on: |
| pull_request: |
| push: |
| release: |
| types: published |
| |
| jobs: |
| build: |
| runs-on: [ubuntu-latest] |
| container: |
| image: centos:7 |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Install dependencies |
| run: | |
| curl -L -O https://github.com/Kitware/CMake/releases/download/v3.16.4/cmake-3.16.4-Linux-x86_64.sh |
| chmod +x cmake-3.16.4-Linux-x86_64.sh |
| ./cmake-3.16.4-Linux-x86_64.sh --skip-license --prefix=/usr/local |
| curl -L -O https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/p/p7zip-16.02-10.el7.x86_64.rpm |
| curl -L -O https://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/epel/7/x86_64/Packages/p/p7zip-plugins-16.02-10.el7.x86_64.rpm |
| rpm -U --quiet p7zip-16.02-10.el7.x86_64.rpm |
| rpm -U --quiet p7zip-plugins-16.02-10.el7.x86_64.rpm |
| yum install -y make gcc-c++ libasan clang-analyzer |
| |
| - name: Build debug ninja |
| shell: bash |
| env: |
| CFLAGS: -fstack-protector-all -fsanitize=address |
| CXXFLAGS: -fstack-protector-all -fsanitize=address |
| run: | |
| scan-build -o scanlogs cmake -DCMAKE_BUILD_TYPE=Debug -B debug-build |
| scan-build -o scanlogs cmake --build debug-build --parallel --config Debug |
| |
| - name: Test debug ninja |
| run: ./ninja_test |
| working-directory: debug-build |
| |
| - name: Build release ninja |
| shell: bash |
| run: | |
| cmake -DCMAKE_BUILD_TYPE=Release -B release-build |
| cmake --build release-build --parallel --config Release |
| strip release-build/ninja |
| |
| - name: Test release ninja |
| run: ./ninja_test |
| working-directory: release-build |
| |
| - name: Create ninja archive |
| run: | |
| mkdir artifact |
| 7z a artifact/ninja-linux.zip ./release-build/ninja |
| |
| # Upload ninja binary archive as an artifact |
| - name: Upload artifact |
| uses: actions/upload-artifact@v1 |
| with: |
| name: ninja-binary-archives |
| path: artifact |
| |
| - name: Upload release asset |
| if: github.event.action == 'published' |
| uses: actions/upload-release-asset@v1.0.1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ github.event.release.upload_url }} |
| asset_path: ./artifact/ninja-linux.zip |
| asset_name: ninja-linux.zip |
| asset_content_type: application/zip |