Skip to content

Commit f547101

Browse files
Actions | Make build and release action
1 parent 97c3c97 commit f547101

1 file changed

Lines changed: 94 additions & 0 deletions

File tree

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
name: "Build and test"
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- release-process
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
builds-and-tests:
15+
strategy:
16+
matrix:
17+
preset: [
18+
{"os": windows-latest, "name": "msbuild", "filename": "windows-x64"},
19+
{"os": ubuntu-latest, "name": "gnu", "filename": "linux"}
20+
]
21+
build-type: ["Release"]
22+
23+
fail-fast: false
24+
25+
name: ${{ matrix.preset.os }} / ${{matrix.preset.name}} / ${{matrix.build-type}}
26+
runs-on: ${{ matrix.preset.os }}
27+
28+
steps:
29+
- name: checkout repository
30+
uses: actions/checkout@v3
31+
32+
- name: setup ninja
33+
uses: seanmiddleditch/gha-setup-ninja@master
34+
35+
- name: getcmake
36+
uses: lukka/get-cmake@latest
37+
38+
# - name: Setup upterm session
39+
# uses: lhotari/action-upterm@v1
40+
41+
# I am having issues installing vcpkg in ubuntu.
42+
- name: Setup vtk in ubuntu
43+
if: matrix.preset.os=='ubuntu-latest'
44+
run: |
45+
sudo apt-get update
46+
sudo apt-get install -y libvtk9-dev
47+
48+
- name: Setup vcpkg
49+
uses: lukka/run-vcpkg@v11
50+
51+
- name: Windows configure and build
52+
if: matrix.preset.name=='msbuild'
53+
run: |
54+
cmake --preset ${{matrix.preset.name}} -S . -B build
55+
cmake --build build --config ${{matrix.build-type}} -j
56+
57+
- name: Windows Run tests
58+
if: matrix.preset.name=='msbuild'
59+
run: build/bin/${{matrix.build-type}}/tessellator_tests.exe
60+
61+
- name: Ubuntu configure and build
62+
if: matrix.preset.name=='gnu'
63+
run: |
64+
cmake --preset ${{matrix.preset.name}} -S . -B build
65+
cmake --build build -j
66+
67+
- name: Ubuntu Run tests
68+
if: matrix.preset.name=='gnu'
69+
run: build/bin/tessellator_tests
70+
71+
- name: Get current date
72+
id: date
73+
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
74+
75+
- name: Create linux .tar file
76+
if: matrix.preset.name=='gnu'
77+
run: |
78+
tar --exclude="*test*" -czvf opensemba-tessellator-${{matrix.preset.filename}}.tar.gz ./build/bin/*
79+
80+
- name: Create windows .tar file
81+
if: matrix.preset.name=='msbuild'
82+
run: |
83+
tar --exclude="*test*" -czvf opensemba-tessellator-${{matrix.preset.filename}}.tar.gz ./build/bin/${{matrix.build-type}}/*
84+
85+
- name: Generating release
86+
if: matrix.preset.name=='gnu'
87+
uses: "marvinpinto/action-automatic-releases@latest"
88+
with:
89+
repo_token: "${{ secrets.GITHUB_TOKEN }}"
90+
automatic_release_tag: "${{ steps.date.outputs.date }}-${{matrix.preset.filename}}-opensemba-tessellator"
91+
prerelease: True
92+
title: "${{ steps.date.outputs.date }} ${{matrix.preset.filename}} OpenSemba Tessellator release"
93+
files: |
94+
opensemba-tessellator-${{matrix.preset.filename}}.tar.gz

0 commit comments

Comments
 (0)