-
Notifications
You must be signed in to change notification settings - Fork 396
132 lines (117 loc) · 5.74 KB
/
Copy pathci-conan.yml
File metadata and controls
132 lines (117 loc) · 5.74 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
name: Conan
'on':
pull_request:
push:
branches:
- master
- develop
- feature/**
env:
UBSAN_OPTIONS: print_stacktrace=1
jobs:
build:
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
name: "${{ matrix.os }} (container: ${{ matrix.container || 'GithubCI' }})"
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
conanflags: ''
tests-env: 'JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64'
- os: ubuntu-22.04
container: ubuntu:22.04
conanflags: ''
tests-env: 'JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64'
- os: macos-14
conanflags: ''
tests-env: ''
steps:
- name: Install sudo
if: matrix.container == 'ubuntu:22.04'
run: |
DEBIAN_FRONTEND=noninteractive apt update
DEBIAN_FRONTEND=noninteractive apt install -y sudo
- name: Install Ubuntu packages
if: matrix.os == 'ubuntu-22.04'
run: |
sudo DEBIAN_FRONTEND=noninteractive apt update
sudo DEBIAN_FRONTEND=noninteractive apt install -y \
libpq-dev \
gcc g++ cmake git clang-format \
python3 python3-pip python3-venv
- name: Install MacOS packages
if: matrix.os == 'macos-14'
run: |
brew update
brew trust --formula azure/bicep/bicep
brew trust --formula hashicorp/tap/packer
brew trust mongodb/brew
brew trust aws/tap
brew tap mongodb/brew
brew install clang-format postgresql redis kafka rabbitmq mongodb-community
mkdir -p "$(brew --prefix)/etc/rabbitmq/conf.d"
echo 'deprecated_features.permit.transient_nonexcl_queues = true' > "$(brew --prefix)/etc/rabbitmq/conf.d/10-userver-ci.conf"
brew install python@3.11
- name: Checkout
uses: actions/checkout@v7
- name: Change permissions
if: matrix.container == 'ubuntu:22.04'
run: |
useradd -m -G sudo -s /bin/bash test-user
chown -R test-user .
- name: Install common packages
run: |
pip install conan
pip install numpy
${{ matrix.container && 'sudo -u test-user' }} conan profile detect
${{ matrix.container && 'sudo -u test-user' }} conan profile show
- name: Run conan
run: |
${{ matrix.container && 'sudo -u test-user' }} git config --global --add safe.directory `pwd`
${{ matrix.container && 'sudo -u test-user' }} conan create . --update --build=missing --version=`cat version.txt` -s:a compiler.cppstd=20 -pr:b=default ${{matrix.conanflags}}
- name: Install test dependencies
if: matrix.os == 'ubuntu-22.04'
run: |
sudo DEBIAN_FRONTEND=noninteractive apt install -y curl wget lsb-release
wget -qO- https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor | sudo tee /usr/share/keyrings/mongodb-server-7.0.gpg >/dev/null
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" \
| sudo tee -a /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo DEBIAN_FRONTEND=noninteractive apt update
sudo DEBIAN_FRONTEND=noninteractive apt install -y postgresql libpq-dev redis mongodb-org mongodb-mongosh locales
${{ matrix.container && 'sudo locale-gen en_US.UTF-8' }}
${{ matrix.container && 'update-locale LC_ALL="en_US.UTF-8" LANG="en_US.UTF-8" LANGUAGE="en_US.UTF-8"' }}
sudo ./scripts/kafka/ubuntu_install_kafka.sh
sudo ./scripts/rabbitmq/ubuntu_install_rabbitmq_server.sh
- name: Test userver conan package
run: |-
mv libraries/easy/samples/0_hello_world samples/
mv libraries/easy/samples/1_hi samples/
mv libraries/easy/samples/3_json samples/
mv scripts/tests/conanfile.py samples/
rm -rf userver/cmake/
cd samples/
USERVER_VERSION=$(${{ matrix.container && 'sudo -u test-user' }} conan list -c -v quiet userver/* | tail -n 1)
for SAMPLE in \
0_hello_world \
1_hi \
3_json \
chaotic_service \
embedded_files \
grpc_service \
otlp_service \
hello_service \
https_service \
postgres_service \
redis_service \
${{ matrix.container && ' ' || 'kafka_service' }} \
rabbitmq_service \
mongo_service \
s3api \
; do
mv conanfile.py $SAMPLE/
echo "Run: ${{ matrix.container && 'sudo -u test-user' }} ${{matrix.tests-env}} conan test --build=never -s:a compiler.cppstd=20 -pr:b=default ${{matrix.conanflags}} $SAMPLE/ ${USERVER_VERSION}"
${{ matrix.container && 'sudo -u test-user' }} ${{matrix.tests-env}} conan test --build=never -s:a compiler.cppstd=20 -pr:b=default ${{matrix.conanflags}} $SAMPLE/ ${USERVER_VERSION}
mv $SAMPLE/conanfile.py ./
done