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
  • Loading branch information
kamchatka-volcano committed Sep 28, 2024
1 parent 7d53e41 commit 6f6b5de
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 5 deletions.
7 changes: 2 additions & 5 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ jobs:
build:
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,7 +70,7 @@ 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
- name: Upload examples build artifact
uses: actions/upload-artifact@v3
with:
name: hypertextcpp-examples-${{ matrix.config.os }}
Expand Down
58 changes: 58 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
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: Upload release
uses: softprops/action-gh-release@v2
with:
files: |
build/hypertextcpp
build/hypertextcpp.exe
shared_lib_api/
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/

0 comments on commit 6f6b5de

Please sign in to comment.