Skip to content

Commit

Permalink
-configured Docker to build Linux release;
Browse files Browse the repository at this point in the history
-added release ci config;
-added clang-format config;
  • Loading branch information
kamchatka-volcano committed Sep 29, 2024
1 parent 5ccd569 commit 8e36030
Show file tree
Hide file tree
Showing 5 changed files with 158 additions and 11 deletions.
60 changes: 60 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
BasedOnStyle: WebKit
AlignAfterOpenBracket: AlwaysBreak
AllowAllArgumentsOnNextLine: false
AllowAllConstructorInitializersOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortLambdasOnASingleLine: Empty
AllowShortEnumsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AllowShortBlocksOnASingleLine: Empty
AlwaysBreakTemplateDeclarations: Yes
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterFunction: true
BeforeElse: true
BeforeLambdaBody: true
BeforeWhile: true
BeforeCatch: true
BreakBeforeBraces: Custom
BreakBeforeBinaryOperators: None
BreakInheritanceList: AfterComma
ColumnLimit: 120
ContinuationIndentWidth: 8
Cpp11BracedListStyle: true
NamespaceIndentation: None
PenaltyBreakBeforeFirstCallParameter: 0
PenaltyReturnTypeOnItsOwnLine: 1000
PenaltyBreakAssignment: 10
SpaceBeforeCpp11BracedList: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpaceAfterTemplateKeyword: false
SpacesInLineCommentPrefix:
Minimum: 0
Maximum: -1
FixNamespaceComments: true
UseCRLF: false
IncludeCategories:
# Headers in <> without extension.
- Regex: '<[[:alnum:]\-_]+>'
Priority: 6
# Headers in <> from specific external libraries.
- Regex: '<(gtest|gmock|boost|gsl)\/'
Priority: 5
# Headers in <> with subdirectory.
- Regex: '<[[:alnum:]\-_]+\/'
Priority: 4
# Headers in <> with extension.
- Regex: '<[[:alnum:].\-_]+>'
Priority: 3
# Headers in "" with subdirectory.
- Regex: '"[[:alnum:]\-_]+\/'
Priority: 2
# Headers in "" with extension.
- Regex: '"[[:alnum:].\-_]+"'
Priority: 1
...
20 changes: 9 additions & 11 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@ on:

jobs:
build:
name: ${{ matrix.config.name }} (nameof = ${{ matrix.use_nameof }})
name: ${{ matrix.config.name }}
runs-on: ${{ matrix.config.os }}
env:
CC: ${{ matrix.config.cc }}
CXX: ${{ matrix.config.cxx }}

strategy:
fail-fast: false
Expand Down Expand Up @@ -56,7 +53,7 @@ jobs:
- uses: ilammy/msvc-dev-cmd@v1

- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTS=ON -DENABLE_EXAMPLES=ON
run: cmake --preset=${{ matrix.config.cmake-preset }} -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Release -DENABLE_TESTS=ON -DENABLE_EXAMPLES=ON

- name: Build
run: cmake --build ${{github.workspace}}/build --config Release
Expand All @@ -73,8 +70,9 @@ jobs:
find build/examples -type f -name "*.so" -exec cp {} examples-build \;
find build/examples -type f -name "*.dll" -exec cp {} examples-build \;
- name: Upload build artifact
uses: actions/upload-artifact@v3
- name: Upload examples build artifact
if: matrix.config.cmake-preset != 'gcc-release'
uses: actions/upload-artifact@v4
with:
name: hypertextcpp-examples-${{ matrix.config.os }}
path: |
Expand All @@ -101,12 +99,12 @@ jobs:
shell_command: "",
}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- if: matrix.config.name == 'Windows'
uses: msys2/setup-msys2@v2
with:
path-type: inherit
- uses: robinraju/release-downloader@v1.7
- uses: robinraju/release-downloader@v1.11
with:
repository: "kamchatka-volcano/lunchtoast"
latest: true
Expand All @@ -119,7 +117,7 @@ jobs:
run: chmod +x lunchtoast
- name: Download hypertextcpp examples build
id: pre_launch_tests
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: hypertextcpp-examples-${{ matrix.config.os }}
path: examples-build
Expand All @@ -140,7 +138,7 @@ jobs:
run: lunchtoast/lunchtoast functional_tests ${{ matrix.config.shell_command }} -collectFailedTests=failed_tests -config="ci.cfg"
- name: Upload failed tests
if: failure() && steps.launch_tests.outcome != 'success' && steps.pre_launch_tests.outcome == 'success'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: hypertextcpp-failed-tests-${{ matrix.config.os }}
path: failed_tests
60 changes: 60 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: release

on:
push:
tags: [ "v*" ]

jobs:
build-windows:
name: Build Windows version
runs-on: windows-latest
steps:
- name: Install ninja
run: choco install ninja

- uses: actions/checkout@v4
- uses: rui314/setup-mold@v1
- uses: ilammy/msvc-dev-cmd@v1

- name: Configure CMake
run: cmake --preset=msvc-release -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Release

- name: Build
run: cmake --build ${{github.workspace}}/build --config Release

- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: hypertextcpp-windows-latest
path: |
${{github.workspace}}/build/hypertextcpp.exe
release_hypertextcpp:
name: Release hypertextcpp
runs-on: ubuntu-latest
needs: build-windows
steps:
- name: Git checkout
uses: actions/checkout@v4

- name: Build linux version in Docker
run: DOCKER_BUILDKIT=1 docker build --build-arg cmake_preset=clang-release --output build .

- name: Run unit tests
working-directory: ${{github.workspace}}/build/tests
run: ./test_hypertextcpp

- name: Download hypertextcpp Windows build
uses: actions/download-artifact@v4
with:
name: hypertextcpp-windows-latest
path: build
- name: Archive shared_lib_api
run: zip -r shared_lib_api.zip shared_lib_api
- name: Upload release
uses: softprops/action-gh-release@v2
with:
files: |
build/hypertextcpp
build/hypertextcpp.exe
shared_lib_api.zip
27 changes: 27 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
FROM alpine:3.18.3 AS hypertextcpp-build-container
ARG cmake_preset
RUN apk update && \
apk add --no-cache \
git \
build-base \
ccache \
cmake \
clang \
clang-dev \
mold \
samurai

WORKDIR /hypertextcpp_src
COPY external ./external/
COPY src ./src/
COPY tests ./tests/
COPY CMakeLists.txt .
COPY CMakePresets.json .
RUN cmake --preset "$cmake_preset" -B build -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_EXE_LINKER_FLAGS="-static" -DENABLE_TESTS=ON
RUN cmake --build build
RUN strip --strip-all build/hypertextcpp


FROM scratch AS hypertextcpp-build
COPY --from=hypertextcpp-build-container /hypertextcpp_src/build/hypertextcpp .
COPY --from=hypertextcpp-build-container /hypertextcpp_src/build/tests/test_hypertextcpp ./tests/
2 changes: 2 additions & 0 deletions src/node_utils.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#include "node_utils.h"
#include <algorithm>
#include <iterator>

namespace htcpp{

Expand Down

0 comments on commit 8e36030

Please sign in to comment.