Commit Graph

67 Commits

Author SHA1 Message Date
George Joseph
18fe583d12 CI: Move test group config files to Jenkins
One of the downaides of having things like test configuration
in the git repo is that it can't be changed at runtime.  You have
to create a review for the changes and merge it mefore it will
take effect.

This review moves the data currently held in
tests/CI/periodic-dailyTestGroups.json and
tests/CI/gateTestGroups.json into a Jenkins Config File attached
to the job definitions.  This allows us to alter it from the
Jenkins UI at runtime.  The original files stay in the repo
as documentation.

Change-Id: I14b9702f6285ce1fb2420287ba0e7d3b59109763
2019-04-15 06:51:26 -06:00
George Joseph
1464a6b80f CI: Add --no-dev-mode option to buildAsterisk.sh
The new option disables dev mode, TEST_FRAMEWORK and
MALLOC_DEBUG making the build more production-like.

Change-Id: Ieb72497d4d91d5416684aaed702cc3f532099738
2019-04-03 16:56:34 -06:00
George Joseph
6e8cba39a4 CI: Update jenkinsfiles with new Gerrit URLs
The recent upgrade of Gerrit to 2.16 elimiated referencing a
repository in a way the jenkinsfiles were relying on so
the URL references were changed to a more consistent and supported
format.

Change-Id: I2e8e3f213b9a96bb1b27665eca4a9a24bc49820e
(cherry picked from commit 5ce084579f)
2019-02-27 10:56:02 -06:00
Joshua Colp
3a2db0ee04 CI: Use tmpfs option to Docker instead of mount.
Some tests require Asterisk to execute scripts which
are stored in /tmp. When mount is used for tmpfs there
is no ability to allow scripts to be executed from
that location.

This change switches to using tmpfs which can be told
to allow executables to be run from /tmp.

Change-Id: I0e598ca2b76af1f7f2d29f0da7b1731a214a291a
2019-02-19 10:23:02 -06:00
Joshua Colp
1084b6e1a1 ci: Rerun unit tests when non-code changes occur.
This change makes it so that even if non-code changes
occur (such as commit message changing) unit tests
will still be run and result in a verification.

ASTERISK-28251

Change-Id: I6491fff7c93e5d5cd8e41054486968bf66c4f608
2019-02-08 07:10:23 -06:00
George Joseph
a6c2662404 CI: Various updates to buildAsterisk.sh
* Added ---no-configure, --no-menuselect, --no-make and --no-alembic
  options that prevent those actions from being performed.  Useful
  for testing and re-running portions of the build after fixing
  earlier failures.

* Added "set -e" to abort the script on command failure.
  Not sure why this wasn't there in the first place.

* Fixed a few echos that were redirecting to stderr when they shouldn't
  have been.

* Catch more alembic failures by actually trying to generate the SQL.

Change-Id: I9f395fa4e9254be7299e7c1014f1a13db78faffb
2018-12-05 12:02:54 -05:00
George Joseph
729967e99c CI: Get job timeouts from environment
The job timeouts were hard coded in the jenkinsfiles which
means changes had to go through gerrit.  Now they are taken
from the following environment variables (and their defaults) that
can be set in Jenkins configuration...

TIMEOUT_GATES =      "60 MINUTES"
TIMEOUT_DAILIES =    "3 HOURS"
TIMEOUT_REF_DEBUG =  "24 HOURS"
TIMEOUT_UNITTESTS =  "30 MINUTES"

Change-Id: I673a551c1780bf665a3bc160b245da574aa4bbab
2018-11-19 13:05:03 -05:00
George Joseph
dd0a3c0bba CI: Add tmpfs to all jenkinsfiles
Change-Id: Ida29d70d48d5f39aabf0b25c66b51f79324a8cba
2018-11-18 11:39:13 -05:00
George Joseph
77e9c877b5 CI: Mount a tmpfs on /tmp for testsuite docker containers
Change-Id: I0566d81b0852f22066cd76d58eae5f1fda5602aa
(cherry picked from commit 73efe86436)
2018-11-17 17:07:25 -05:00
George Joseph
0552bc2a94 CI: Pass work directory to runTestsuite
The testsuite can now use a user-specified work directory for
all it's temp files.  This allows the docker containers to use
a tmpfs backed directory for the temp files instead of it's
own write-layer image.

* runTestsuite.sh now accepts a --work-dir command line argument
  that gets exported as AST_WORK_DIR before running the testsuite.

* gates.jenkinsfile now specifies --work-dir to be
  <testsuite_dir>/astroot.

Since the Asterisk CI docker hosts now mount /srv/jenkins/workspace
on a tmpfs, asterisk should be compiled and the testsuite run all in
memory.

Change-Id: If5ee905a15821296c355bb84cda38950ad8edc45
(cherry picked from commit a335f4c9ad)
2018-11-17 17:05:24 -05:00
George Joseph
7ba8f32632 CI: Allow runUnittests to use 'expect' to run the tests
There seems to be a race condition between starting the asterisk
daemon and attempting to use 'asterisk -r' that can cause the
control socket file to not be created.  Since all of the Jenkins
slaves have 'expect' installed, the runUnittests script can use
it to start asterisk in the forground and issue the commands
interactively.  This is much more reliable and it can also make
startup errors more visible since they'll be in the Jenkins console
output.

If 'expect' isn't installed, the original daemon/asterisk -r
process is used.

Also added a "core show settings" before running the tests
and added "notice,warning,error" to the console log.

Change-Id: Idd656085f854afede813ac241b9e312b31358160
2018-11-16 10:03:43 -05:00
George Joseph
6fd21a6af6 CI: Fix missing () in gates.jenkinsfile
Change-Id: I2f252e0f8c7f1a6328438fbd2be5d6574b7dfa5b
2018-10-04 13:04:04 -05:00
George Joseph
1598c7a306 CI: Add timestamps and timeouts to jenkinsfiles
Change-Id: Ide83574dc957bc1df28e30a69079140050dfc35f
2018-10-04 10:14:21 -05:00
George Joseph
1debf9e484 Merge "jenkins: Fix cleanup command redirection." into 16 2018-10-04 09:42:17 -05:00
George Joseph
24f44474b6 Merge "CI: Use brace expansion instead of calling out to seq" into 16 2018-10-04 09:41:23 -05:00
Sean Bright
d0a1237c19 CI: Look up configured kernel.core_pattern sysctl
Change-Id: I8246a0147df8d821fbbcabc1db1887104b8bedc4
2018-10-03 16:54:09 -05:00
Corey Farrell
48bb4543d9 jenkins: Fix cleanup command redirection.
Fix redirection to /dev/null of cleanup commands.  The '2' was being
interpreted as part of the command instead of part of the redirect.

Change-Id: I2e3a591b165e0288c4b82b9ef475fdfd5392a90a
2018-10-03 16:32:17 -05:00
Sean Bright
8b3b504b79 CI: Use brace expansion instead of calling out to seq
Also make the shebang in publishAsteriskDocs.sh the first line.

Change-Id: I3fdd6f22e652e4fb5b5fe85df46fa34eb6d0cf08
2018-10-03 09:11:43 -05:00
Sean Bright
5f7350d68b CI: Use bindport instead of port in test http.conf
Change-Id: Ife9a6879da63a56e5b8348a2024eeed4e7b1615b
2018-10-03 09:00:50 -05:00
George Joseph
227d9719da CI: Add --test-timeout option to runTestsuite.sh
The default is 600 seconds.
Also added timeouts to the *TestGroups.json files.

Change-Id: I8ab6a69e704b6a10f06a0e52ede02312a2b72fe0
2018-09-26 08:15:02 -05:00
George Joseph
4a309839eb CI: Fix typo in testsuite git checkout
Change-Id: I30024515e5b00a5044fd39fbff27d818f016b719
2018-09-17 07:15:01 -05:00
George Joseph
3f9544c1f5 CI: Use proper credentials for Security testsuite checkout
Can't do anonymous http checkout from Security-testsuite.
Need to use same credentials as the gerrit review checkout.

Change-Id: I87af68c995cb8926f5e87f9af245600d76984f05
2018-09-14 12:34:50 -05:00
Corey Farrell
5842741689 CI: Use .gitreview to default BRANCH_NAME.
This ensures that binary modules are avoided in the master branch even
if BRANCH_NAME is not set.

Change-Id: I79162d2063f22fa9d6b31fde4827ace2dd5bf0da
2018-09-12 19:11:57 -05:00
Corey Farrell
1b1f47bef6 Create --disable-binary-modules option.
This new option can be passed for ./configure or
./tests/CI/buildAsterisk.sh to prevent download/install of binary
modules.

Normally enabling the categories MENUSELECT_CODECS or MENUSELECT_RES
will result in binary modules being enabled even if the build target is
incompatible with those modules.  This includes CI scripts which enable
categories before disabling specific modules.

If more binary modules are offered in the future this will help avoid
accidentally downloading them if unwanted or incompatible.  Adding a
binary module will only require creating a new menuselect entry similar
to the existing ones, it will not be necessary to modify the CI scripts.

Change-Id: I6b1bd1c75a2e48f05b8b8a45b7a7a2d00a079166
2018-08-27 13:45:08 -05:00
George Joseph
df78227e4a CI: Fixup for non-13 branches
Change-Id: I5e1d4a09e58b92b541bc8ed6f9e10e54c4e5101f
2018-08-16 12:51:51 -06:00
George Joseph
4ca959c72c CI: Final version of setting correct gerrit creds
Change-Id: I7729ecceedceb12f52bf18dae259846aa1d993b3
2018-08-16 12:33:37 -06:00
George Joseph
33a5b8ccaf CI: Add https credentials to gerrit checkouts
If the review to be tested is in a project with restricted access,
we need to use the jenkins user's gerrit https credentials when we
do the checkout or the checkout will fail.

Change-Id: I9dc9994763c5ebfeb9f1cff60fb53f6902b7fd5f
2018-08-16 12:33:37 -06:00
Corey Farrell
3bf968470b CI: Add support for coverage processing.
Enable coverage with `./tests/CI/buildAsterisk.sh --coverage`.  This
will cause Asterisk to be compiled with coverage support.  It also
initializes 'before' coverage data for all sources.  Accept
--tested-only to disable modules which are not run by any test.
Enabling coverage also sets tested-only true by default.  To build
everything with coverage enabled use `--coverage --tested-only=0`.

./tests/CI/processCoverage.sh is used to process the coverage and
generate HTML reports.

Fix utils/check_expr2 which failed to compiled with coverage enabled.

Add status output 5 times per stage of astobj2_test_perf to ensure
remote CLI does not timeout when compiled with coverage.  Remote CLI
disconnects if no output is received for 60 seconds.  When coverage is
enabled it takes about 70 seconds for my laptop to run the stages of
this test, so with the change a message is printed every 14 seconds.

Change-Id: I890f7d5665087426ad7d3e363187691b9afc2222
2018-08-14 07:06:46 -05:00
George Joseph
914b9e1934 CI: Add optional uninstall step before installing asterisk
Change-Id: I7dedf1e925eafc3a0adf01dd9dfbe44eb642aab7
2018-07-30 08:44:25 -05:00
George Joseph
e097dca4d7 CI: Fix placement of job summary statments
Change-Id: Iace19e718f4e8fb48eb7dc9f98af53b115cc45f3
2018-07-26 17:56:41 -06:00
George Joseph
798f049e82 CI: Add docker info to job summary
Change-Id: I45d52005a9b692ad303c11792f226ace1e449901
2018-07-26 10:35:41 -06:00
Jenkins2
166aa49664 Merge "CI: Explicitly pass BRANCH_NAME to buildAsterisk and installAsterisk" into 16 2018-07-25 12:48:53 -05:00
Jenkins2
6e2ce299c3 Merge "CI: Add options to initialize and cleanup database to runTestsuite.sh" into 16 2018-07-25 12:48:19 -05:00
George Joseph
93997f9698 CI: Explicitly pass BRANCH_NAME to buildAsterisk and installAsterisk
Change-Id: I652f4a0ea5107c778e27a78bccb67b18b0c4e087
2018-07-25 09:21:19 -06:00
George Joseph
0baf660bde CI: Add options to initialize and cleanup database to runTestsuite.sh
Change-Id: I352333233bab5377723bf37d490ba84fc55bc853
2018-07-25 09:12:59 -06:00
Corey Farrell
74cbeabb97 CI: Do not mkdir 2.
Change-Id: Ib7377d26a6c98b38bad463f47c84f1875ac84eb7
2018-07-25 10:07:51 -04:00
George Joseph
e4b0f09bcc CI: RefDebug: Fix reference to testsuite URL
Change-Id: I0ee41d95a87f0d97b01f2757012b846bcfe6443d
2018-07-25 06:14:35 -06:00
Corey Farrell
9f3620a578 CI: Use bundled jansson if needed.
Use pkg-config to determine if jansson is at least 2.11, enabled bundled
version otherwise.

Change-Id: Ib555a8b72ff6f6925f9280ef035caa0b91ca4bd2
2018-07-24 10:47:43 -05:00
Jenkins2
b9630a9591 Merge "CI: Add --privileged flag to docker options" into 16 2018-07-24 06:03:02 -05:00
George Joseph
8550fad21a CI: Add --privileged flag to docker options
Change-Id: If92d55f15306e55dd7091ac3c47b13ebbbb03488
2018-07-24 04:40:31 -06:00
George Joseph
f2580d037f CI: Set correct user:group when publishing docs
Change-Id: Ibabeb9ac730d9755cf54318d0da74771c939b86b
2018-07-24 04:32:03 -06:00
Corey Farrell
09b258fd69 CI: Split --test-command argument.
The --test-command argument has now been split, unit tests now use
`--unittest-command` and the testsuite uses --testsuite-command.

This will make it easier to create a script which run everything by
forwarding the same arguments to all CI scripts.

Change-Id: Ia54aa4848eaffbdf13175fcda40fc0b23080ad71
2018-07-23 10:34:35 -05:00
Jenkins2
bd879a6c28 Merge "CI: Fix mkdir CACHE_DIR." into 16 2018-07-23 08:39:12 -05:00
Jenkins2
549aa07265 Merge "CI: Fix logger.conf for unit tests." into 16 2018-07-23 08:37:31 -05:00
Corey Farrell
fd1f74af40 CI: Fix mkdir CACHE_DIR.
Change-Id: Ic9f9a61e230047836c836206731f8ff7eb3538c9
2018-07-22 12:35:42 -04:00
Corey Farrell
c8bd8f6ce9 CI: Fix logger.conf for unit tests.
Change-Id: Idea59d60eab20105de50b34f0f0d506e6ef55d5c
2018-07-20 09:30:00 -05:00
George Joseph
0f82db82cb CI: Add wiki doc publish to periodics
Change-Id: I29ba26134e5083bc6788ede235f1a5d4383c148a
2018-07-20 06:55:42 -06:00
George Joseph
fcc0a6fe8a CI: Fix merge strategy
Change-Id: I5e3fb6adfa6cbf694c0deecf02e3879297b0c12e
2018-07-17 10:09:01 -06:00
George Joseph
3e5a6a6cfc CI: Fix regex in daily and ref_debug jobs
Change-Id: Icf2e67818b2155a158d2390b138613e1f653ea92
2018-07-17 09:41:40 -06:00
George Joseph
fa333dedd0 CI: Add pre-build merge back in as RECURSIVE
Change-Id: I0ff1730ef4a4f0ac9f18ccc9bc0dfe7a782f57a8
2018-07-17 09:15:58 -06:00