Skip to content

Update CMakeLists.txt #52

Update CMakeLists.txt

Update CMakeLists.txt #52

name: Build and Release
on:
push:
tags:
- "*"
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install CURL
run: sudo apt-get install libcurl4-openssl-dev
- name: Install OpenSSL
run: sudo apt-get install libssl-dev
- name: Install ZLIB (for libcurl)
run: sudo apt-get install zlib1g-dev
- name: Build
run: |
mkdir build
cd build
cmake ..
cmake --build .
- name: Rename binary
run: |
mv build/fastgron build/fastgron-ubuntu
- name: Upload artifact
uses: actions/upload-artifact@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: fastgron-ubuntu
path: build/fastgron-ubuntu
build-linux-without-simd:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install CURL
run: sudo apt-get install libcurl4-openssl-dev
- name: Install OpenSSL
run: sudo apt-get install libssl-dev
- name: Install ZLIB (for libcurl)
run: sudo apt-get install zlib1g-dev
- name: Build
run: |
mkdir build
cd build
cmake ..
cmake --build .
- name: Test
run: |
cd build
ctest --verbose
- name: Check tag version
run: |
cd build
./fastgron --version 2>&1 | grep `echo ${{ github.ref }} | sed 's/refs\/tags\/v//'`
- name: Rename binary
run: |
mv build/fastgron build/fastgron-ubuntu-without-simd
- name: Upload artifact
uses: actions/upload-artifact@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: fastgron-ubuntu-without-simd
path: build/fastgron-ubuntu-without-simd
build-windows:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: choco install -y mingw
- name: Install CURL
run: choco install -y curl
- name: Build
run: |
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
cmake --build .
env:
CXX_ARCH_FLAGS: -march=icelake-client
- name: Upload artifact
uses: actions/upload-artifact@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: fastgron-windows
path: build/fastgron.exe
build-windows-without-simd:
runs-on: windows-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: choco install -y mingw
- name: Install CURL
run: choco install -y curl
- name: Build
run: |
mkdir build
cd build
cmake -G "MinGW Makefiles" ..
cmake --build .
- name: Test
run: |
cd build
ctest --verbose
- name: Upload artifact
uses: actions/upload-artifact@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: fastgron-windows-without-simd
path: build/fastgron-without-simd.exe
build-mac:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up C++ environment
uses: aminya/setup-cpp@v0.28.0
with:
compiler-version: llvm
- name: Build
run: |
mkdir build
cd build
cmake -DCMAKE_CXX_COMPILER=$(brew --prefix llvm@15)/bin/clang++ ..
cmake --build .
env:
CXX_ARCH_FLAGS: -arch x86_64 -arch arm64
- name: Test
run: |
cd build
ctest --verbose
- name: Check tag version
run: |
cd build
./fastgron --version 2>&1 | grep `echo ${{ github.ref }} | sed 's/refs\/tags\/v//'`
- name: Rename binary
run: |
mv build/fastgron build/fastgron-mac
- name: Upload artifact
uses: actions/upload-artifact@v2
if: startsWith(github.ref, 'refs/tags/')
with:
name: fastgron-mac
path: build/fastgron-mac
release:
needs:
[
build-linux,
build-windows,
build-mac,
build-linux-without-simd,
build-windows-without-simd,
]
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v2
- name: pwd
run: pwd
- name: find
run: find .
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
fastgron-windows/fastgron.exe
fastgron-windows-without-simd/fastgron-without-simd.exe
fastgron-ubuntu/fastgron-ubuntu
fastgron-ubuntu-without-simd/fastgron-ubuntu-without-simd
fastgron-mac/fastgron-mac
tag_name: ${{ github.ref }}
body: |
${{ github.event.release.body }}
draft: false
prerelease: false
token: ${{ secrets.GH_PAT }}
homebrew:
needs:
[
release
]
runs-on: ubuntu-latest
steps:
- uses: mislav/bump-homebrew-formula-action@v2
with:
formula-name: fastgron
env:
COMMITTER_TOKEN: ${{ secrets.GH_PAT }}