Repository navigation
144 lines (123 loc) · 5.68 KB
/
Copy pathbuild.yml
File metadata and controls
144 lines (123 loc) · 5.68 KB
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
136
137
138
139
140
141
142
143
144
name: Build binaries
on:
release:
types: [ created ]
workflow_dispatch:
permissions:
# Write required for the release type
contents: write
env:
RUSTFLAGS: "-C target-cpu=x86-64-v3"
jobs:
build:
name: Build
runs-on: ubuntu-latest
strategy:
matrix:
variant: [default, all-dynamic, basic]
target: [x86_64-unknown-linux-gnu]
package: [deb, rpm, binary]
include:
- target: x86_64-unknown-linux-gnu
output-file-name: gnu
- variant: all-dynamic
needs-librdkafka: true
- package: deb
needs-cargo-deb: true
build-deb: true
target-dir: debian
- package: rpm
needs-cargo-generate-rpm: true
needs-binary-build: true
build-rpm: true
target-dir: generate-rpm
- package: binary
needs-binary-build: true
target-dir: binary-package
- target: x86_64-unknown-linux-gnu
package: deb
needs-cross: true
- target: x86_64-unknown-linux-gnu
variant: all-dynamic
package: deb
needs-cross: false
steps:
- name: Checkout repo
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@ecabd13d1c56bd1345c230e542e9144811ad706f # v2.0.0
with:
target: ${{ matrix.target }}
- name: Install libhyperscan
run: sudo apt-get update -y && sudo apt-get -y install libhyperscan-dev
- name: Install librdkafka
if: ${{ matrix.needs-librdkafka }}
run: sudo apt-get update -y && sudo apt-get -y install librdkafka-dev libcurl4-openssl-dev
- name: Setup rust cross
if: ${{ matrix.needs-cross }}
run: cargo install cross
- name: Install scdoc
run: sudo apt-get update -y && sudo apt-get -y install scdoc
- name: Build docs
run: make doc
- name: Install cargo-deb
if: ${{ matrix.needs-cargo-deb }}
run: cargo install cargo-deb
- name: Install cargo-generate-rpm
if: ${{ matrix.needs-cargo-generate-rpm }}
run: cargo install cargo-generate-rpm
- name: Build binary
if: ${{ matrix.needs-binary-build }}
env:
CARGO_TARGET_DIR: "target/${{ matrix.variant }}"
run: |
cargo build --target "${{ matrix.target }}" --release --no-default-features --features "${{ matrix.variant }}"
# Binary also needs docs and examples
mkdir -p "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}/man"
cp "target/${{ matrix.variant }}/${{ matrix.target }}/release/stringsimile" "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}/stringsimile"
cp target/man/* "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}/man"
cp distribution/config.yaml "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}/config.yaml"
mkdir -p "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}/rules"
cp distribution/rules/* "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}/rules/"
- name: Build deb
if: ${{ matrix.build-deb && !matrix.needs-cross }}
env:
CARGO_TARGET_DIR: "target/${{ matrix.variant }}"
run: |
cargo deb --variant "${{ matrix.variant }}" --target "${{ matrix.target }}"
- name: Install Hyperscan
if: ${{ matrix.build-deb && matrix.needs-cross }}
uses: flier/install-hyperscan@8e7f62dc4145d293ea1266e1d973fd5ba9ef533e # no version, main from Dec 1, 2024
with:
hyperscan_version: 5.4.1
build_static_lib: on
src_dir: ${{ runner.temp }}/hyperscan/
install_prefix: ${{ github.workspace }}/dist
cache_key: ${{ runner.os }}-build-hyperscan-${{ matrix.hyperscan }}-pcre-${{ matrix.pcre }}-${{ secrets.CACHE_VERSION }}
- name: Cross build deb
if: ${{ matrix.build-deb && matrix.needs-cross }}
env:
PKG_CONFIG_PATH: ${{ github.workspace }}/dist/lib/pkgconfig
HYPERSCAN_ROOT: ${{ github.workspace }}/dist
run: |
cross build --target "${{ matrix.target }}" --release --no-default-features --features "${{ matrix.variant }}"
cp "target/${{ matrix.target }}/release/stringsimile" "target/release/stringsimile"
cargo deb --no-build --variant "${{ matrix.variant }}" --target "${{ matrix.target }}"
mkdir -p "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}"
mv "target/${{ matrix.target-dir }}" "target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}"
- name: Build rpm
if: ${{ matrix.build-rpm }}
run: |
cargo generate-rpm -p bin/stringsimile-service --target-dir "target/${{ matrix.variant }}" --variant "${{ matrix.variant }}" --target "${{ matrix.target }}"
- name: Upload build files
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: stringsimile-${{ matrix.variant }}-${{ matrix.output-file-name }}-${{ matrix.package }}
path: ./target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}
- name: Upload build files
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
if: ${{ github.event_name == 'release' }}
with:
files: |
LICENSE
./target/${{ matrix.variant }}/${{ matrix.target }}/${{ matrix.target-dir }}