xref: /curl/.circleci/config.yml (revision 46bd595b)
1#***************************************************************************
2#                                  _   _ ____  _
3#  Project                     ___| | | |  _ \| |
4#                             / __| | | | |_) | |
5#                            | (__| |_| |  _ <| |___
6#                             \___|\___/|_| \_\_____|
7#
8# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
9#
10# This software is licensed as described in the file COPYING, which
11# you should have received as part of this distribution. The terms
12# are also available at https://curl.se/docs/copyright.html.
13#
14# You may opt to use, copy, modify, merge, publish, distribute and/or sell
15# copies of the Software, and permit persons to whom the Software is
16# furnished to do so, under the terms of the COPYING file.
17#
18# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19# KIND, either express or implied.
20#
21# SPDX-License-Identifier: curl
22#
23###########################################################################
24
25# View these jobs in the browser: https://app.circleci.com/pipelines/github/curl/curl
26
27# Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/configuration-reference/
28version: 2.1
29
30commands:
31  install-cares:
32    steps:
33      - run:
34          command: |
35            sudo apt-get update && sudo apt-get install -y libc-ares-dev
36
37  install-libssh:
38    steps:
39      - run:
40          command: |
41            sudo apt-get update && sudo apt-get install -y libssh-dev
42
43  install-deps:
44    steps:
45      - run:
46          command: |
47            sudo apt-get update && sudo apt-get install -y libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev python3-pip libpsl-dev
48            sudo python3 -m pip install impacket
49
50  install-wolfssl:
51    steps:
52      - run:
53          command: |
54            # renovate: datasource=github-tags depName=wolfSSL/wolfssl versioning=semver extractVersion=^v?(?<version>.+)-stable$ registryUrl=https://github.com
55            WOLFSSL_VER=5.7.4
56            echo "Installing wolfSSL $WOLFSSL_VER"
57            curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz
58            tar -xzf v$WOLFSSL_VER-stable.tar.gz
59            cd wolfssl-$WOLFSSL_VER-stable
60            ./autogen.sh
61            ./configure --disable-dependency-tracking --enable-tls13 --enable-all --enable-harden --prefix=$HOME/wssl
62            make install
63
64  install-wolfssh:
65    steps:
66      - run:
67          command: |
68            # renovate: datasource=github-tags depName=wolfSSL/wolfssh versioning=semver extractVersion=^v?(?<version>.+)-stable$ registryUrl=https://github.com
69            WOLFSSH_VER=1.4.19
70            echo "Installing wolfSSH $WOLFSSH_VER"
71            curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssh/archive/v$WOLFSSH_VER-stable.tar.gz
72            tar -xzf v$WOLFSSH_VER-stable.tar.gz
73            cd wolfssh-$WOLFSSH_VER-stable
74            ./autogen.sh
75            ./configure --disable-dependency-tracking --with-wolfssl=$HOME/wssl --prefix=$HOME/wssh --enable-scp --enable-sftp --disable-examples
76            make install
77
78  configure:
79    steps:
80      - run:
81          command: |
82            autoreconf -fi
83            ./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-werror --enable-warnings \
84              --with-openssl \
85              || { tail -1000 config.log; false; }
86
87  configure-openssl-no-verbose:
88    steps:
89      - run:
90          command: |
91            autoreconf -fi
92            ./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-werror \
93              --with-openssl --disable-verbose \
94              || { tail -1000 config.log; false; }
95
96  configure-no-proxy:
97    steps:
98      - run:
99          command: |
100            autoreconf -fi
101            ./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-werror \
102              --with-openssl --disable-proxy \
103              || { tail -1000 config.log; false; }
104
105  configure-libssh:
106    steps:
107      - run:
108          command: |
109            autoreconf -fi
110            ./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-werror --enable-warnings \
111              --with-openssl --with-libssh \
112              || { tail -1000 config.log; false; }
113
114  configure-cares:
115    steps:
116      - run:
117          command: |
118            autoreconf -fi
119            ./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-werror --enable-warnings \
120              --with-openssl --enable-ares \
121              || { tail -1000 config.log; false; }
122
123  configure-wolfssh:
124    steps:
125      - run:
126          command: |
127            autoreconf -fi
128            LDFLAGS="-Wl,-rpath,$HOME/wssh/lib" \
129            ./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-werror --enable-warnings \
130              --with-wolfssl=$HOME/wssl --with-wolfssh=$HOME/wssh \
131              || { tail -1000 config.log; false; }
132
133  configure-cares-debug:
134    steps:
135      - run:
136          command: |
137            autoreconf -fi
138            ./configure --disable-dependency-tracking --enable-unity --enable-test-bundles --enable-werror --enable-debug \
139              --with-openssl --enable-ares \
140              || { tail -1000 config.log; false; }
141
142  build:
143    steps:
144      - run: make -j3 V=1
145      - run: make -j3 V=1 examples
146
147  test:
148    steps:
149      - run: make -j3 V=1 test-ci TFLAGS='-j14'
150
151executors:
152  ubuntu:
153    machine:
154      image: ubuntu-2004:2024.01.1
155
156jobs:
157  basic:
158    executor: ubuntu
159    steps:
160      - checkout
161      - install-deps
162      - configure
163      - build
164      - test
165
166  no-verbose:
167    executor: ubuntu
168    steps:
169      - checkout
170      - install-deps
171      - configure-openssl-no-verbose
172      - build
173
174  wolfssh:
175    executor: ubuntu
176    steps:
177      - checkout
178      - install-deps
179      - install-wolfssl
180      - install-wolfssh
181      - configure-wolfssh
182      - build
183
184  no-proxy:
185    executor: ubuntu
186    steps:
187      - checkout
188      - install-deps
189      - configure-no-proxy
190      - build
191      - test
192
193  cares:
194    executor: ubuntu
195    steps:
196      - checkout
197      - install-deps
198      - install-cares
199      - configure-cares
200      - build
201      - test
202
203  libssh:
204    executor: ubuntu
205    steps:
206      - checkout
207      - install-deps
208      - install-libssh
209      - configure-libssh
210      - build
211      - test
212
213  arm:
214    machine:
215      image: ubuntu-2004:2024.01.1
216    resource_class: arm.medium
217    steps:
218      - checkout
219      - install-deps
220      - configure
221      - build
222      - test
223
224  arm-cares:
225    machine:
226      image: ubuntu-2004:2024.01.1
227    resource_class: arm.medium
228    steps:
229      - checkout
230      - install-deps
231      - install-cares
232      - configure-cares-debug
233      - build
234      - test
235
236workflows:
237  x86-openssl:
238    jobs:
239      - basic
240
241  openssl-c-ares:
242    jobs:
243      - cares
244
245  openssl-libssh:
246    jobs:
247      - libssh
248
249  openssl-no-proxy:
250    jobs:
251      - no-proxy
252
253  openssl-no-verbose:
254    jobs:
255      - no-verbose
256
257  wolfssl-wolfssh:
258    jobs:
259      - wolfssh
260
261  arm-openssl:
262    jobs:
263      - arm
264
265  arm-openssl-c-ares:
266    jobs:
267      - arm-cares
268