-
-
Notifications
You must be signed in to change notification settings - Fork 1
135 lines (135 loc) · 4.72 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
135
name: release
on:
push:
tags:
- 'v*.*.*'
permissions: # Set permissions for the GITHUB_TOKEN
contents: write # Grant write permission to contents
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: install deps
run: sudo make deb-install-deps
- name: build static binary
run: make mh-static OPTS=-lpthread
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mh-static-linux-x86_64
path: mh-linux-x86_64
build-deb:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
path: 'mh'
- name: build deb package
run: |
cd mh
git fetch --tags --force
git fetch --unshallow
docker run --rm -v ${{ github.workspace }}:/workspace -w /workspace debian:buster bash -c "apt-get update && apt install -y build-essential git pkg-config && git config --global --add safe.directory /workspace/mh && make -C mh deb-install-deps deb-export-archive deb-version deb-build"
ls ..
- name: Extract Git Tag
run: |
# Retrieve the current tag
cd mh
VERSION=$(git describe --tags --abbrev=0)
# Strip the 'v' prefix if needed
VERSION=${VERSION#v}
echo "VERSION=$VERSION" >> $GITHUB_ENV
ls
- name: upload artifcat
uses: actions/upload-artifact@v4
with:
path: mh_${{ env.VERSION }}-1_amd64.deb
name: mh_${{ env.VERSION }}-1_amd64.deb
build-osx-arm:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Check for Homebrew
run: |
if test ! $(which brew); then
echo "Homebrew not found"
exit 1
fi
- name: update brew
run: brew update
- name: install libs
run: brew install pcre2 cmocka
- name: Install dependencies
run: |
brew install llvm
echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> $GITHUB_ENV
echo 'export LDFLAGS="-L/usr/local/opt/llvm/lib"' >> $GITHUB_ENV
echo 'export CPPFLAGS="-I/usr/local/opt/llvm/include"' >> $GITHUB_ENV
- name: build
run: |
make mh CC=clang LIBS="$(pkg-config --cflags --libs libpcre2-8) -lpthread" PROGNAME=mh-$(uname -o | tr '[:upper:]' '[:lower:]')-$(uname -m)
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mh-darwin-arm64
path: mh-darwin-arm64
build-osx-amd64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Check for Homebrew
run: /usr/sbin/softwareupdate --install-rosetta --agree-to-license
- name: install brew for amd64
run: arch -x86_64 /usr/bin/env bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- name: Install Python and Handle Symlink Conflicts
run: |
arch -x86_64 /usr/local/bin/brew install python@3.12 || true
brew link --overwrite python@3.12
- name: install libs
run: arch -x86_64 /usr/local/bin/brew install pcre2 cmocka llvm pkg-config
- name: Install dependencies
run: |
echo 'export PATH="/usr/local/opt/llvm/bin:$PATH"' >> $GITHUB_ENV
echo 'export LDFLAGS="-L/usr/local/opt/llvm/lib"' >> $GITHUB_ENV
echo 'export CPPFLAGS="-I/usr/local/opt/llvm/include"' >> $GITHUB_ENV
- name: build
run: |
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"
make mh CC=clang LIBS="$(/usr/local/bin/pkg-config --cflags --libs libpcre2-8) -lpthread" CPPFLAGS="-target x86_64-apple-macos11" PROGNAME=mh-darwin-x86_64-apple-macos11
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: mh-darwin-x86_64-apple-macos11
path: mh-darwin-x86_64-apple-macos11
create-release:
runs-on: ubuntu-latest
needs: [build, build-deb, build-osx-arm, build-osx-amd64]
steps:
- name: Create Release
id: create_release
uses: actions/create-release@v1
with:
tag_name: ${{ github.ref }}
release_name: "Release ${{ github.ref }}"
body: "Release notes or description"
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: ./artifacts
- name: list
run: ls -ll artifacts/
- name: upload mac osx arm build artifact to release
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/mh-darwin-*/*
artifacts/mh-static-linux-x86_64/*
artifacts/mh_*_amd64.deb/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}