-
Notifications
You must be signed in to change notification settings - Fork 5
134 lines (116 loc) · 4.58 KB
/
release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Copyright (C) 2005 - 2021 Settlers Freaks <sf-team at siedler25.org>
#
# SPDX-License-Identifier: GPL-2.0-or-later
name: Release
on:
push:
release:
types: [published]
concurrency:
group: ${{format('release-{0}:{1}', github.repository, github.ref)}}
cancel-in-progress: true
env:
BOOST_VERSION: 1.75.0 # Use a recent one to benefit from bugfixes and performance improvements
defaults:
run:
shell: bash
jobs:
Release:
strategy:
matrix:
include:
- { compiler: gcc-10, os: ubuntu-22.04 }
- { compiler: msvc, os: windows-2019 }
runs-on: ${{matrix.os}}
steps:
- run: |
echo "DEPS_DIR=${{runner.temp}}/.cache" >> $GITHUB_ENV
echo "LIBUTIL_DIR=$GITHUB_WORKSPACE/external/libutil" >> $GITHUB_ENV
echo "LIBENDIAN_DIR=$GITHUB_WORKSPACE/external/libendian" >> $GITHUB_ENV
- name: Extract tag name
id: filenames
run: |
tag=${GITHUB_REF#refs/tags/}
if [[ "$tag" =~ refs/ ]]; then tag="NoTag"; fi
echo "Using tag: $tag"
echo "::set-output name=foldername::rttrUtils_$tag"
echo "::set-output name=filename::rttrUtils-${{runner.os}}-${tag}.tar.gz"
- name: Get upload URL
if: github.event_name == 'release'
run: echo "::set-output name=upload_url::https://uploads.github.com/repos/$GITHUB_REPOSITORY/releases/$(jq --raw-output '.release.id' $GITHUB_EVENT_PATH)/assets{?name,label}"
id: release
- uses: actions/checkout@v4
- uses: actions/checkout@v4
name: Checkout libutil
with:
repository: Return-To-The-Roots/libutil
ref: master
path: external/libutil
- uses: actions/checkout@v4
name: Checkout libendian
with:
repository: Return-To-The-Roots/libendian
ref: master
path: external/libendian
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{env.DEPS_DIR}}
key: ${{matrix.os}}-${{matrix.compiler}}-${{env.BOOST_VERSION}}
- name: Install Compiler
if: "startsWith(runner.os, 'Linux')"
run: |
pkgs=${{matrix.compiler}}
pkgs=${pkgs/gcc-/g++-}
sudo apt install $pkgs
- name: Setup compiler
if: "!startsWith(runner.os, 'Windows')"
run: tools/ci/setupCompiler.sh
env:
COMPILER: ${{matrix.compiler}}
- name: Install system packages (Linux)
if: "startsWith(runner.os, 'Linux')"
run: sudo apt install cmake cmake-data ccache libminiupnpc-dev
- name: Install system packages (OSX)
if: startsWith(runner.os, 'macOS')
run: brew install ccache cmake miniupnpc
- name: Install system packages (Windows)
if: startsWith(runner.os, 'Windows')
run: choco install wget
- name: Setup cmake
if: "!startsWith(runner.os, 'Windows')"
uses: jwlawson/[email protected]
with:
cmake-version: '3.20.x'
- name: Setup CCache
if: "!startsWith(runner.os, 'Windows')"
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{matrix.os}}-${{matrix.compiler}}-${{matrix.buildType}}-${{matrix.boostVersion}}
max-size: 200M
- name: Install Boost
shell: bash
run: |
BOOST_ROOT="${DEPS_DIR}/boost${BOOST_VERSION}"
echo "BOOST_ROOT=${BOOST_ROOT}" >> $GITHUB_ENV
echo "ADDITIONAL_CMAKE_FLAGS=${ADDITIONAL_CMAKE_FLAGS} -DBoost_NO_SYSTEM_PATHS=ON -DBoost_NO_BOOST_CMAKE=ON" >> $GITHUB_ENV
$LIBUTIL_DIR/tools/ci/installBoost.sh "${BOOST_VERSION}" "${BOOST_ROOT}" "filesystem,system,program_options,thread,test,locale,iostreams,regex"
- name: Build
run: tools/ci/build.sh "Release" "${ADDITIONAL_CMAKE_FLAGS}"
- name: Package
run: |
mv installed ${{steps.filenames.outputs.foldername}}
tar -zvcf "${{steps.filenames.outputs.filename}}" ${{steps.filenames.outputs.foldername}}
working-directory: build
- name: Check asset
run: ls build/${{steps.filenames.outputs.filename}} # Just check that uploading would work (asset_path exists)
- name: Upload
if: success() && github.event_name == 'release'
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.release.outputs.upload_url }}
asset_path: build/${{steps.filenames.outputs.filename}}
asset_name: ${{steps.filenames.outputs.filename}}
asset_content_type: application/tar.gz