summaryrefslogtreecommitdiff
path: root/.github/workflows
Commit message (Collapse)AuthorAgeFilesLines
* workflows/testsuite.yaml - Add testing of -DNO_TAINT_SUPPORTYves Orton2023-04-021-0/+1
| | | | | | | | Test that we can pass test with -DNO_TAINT_SUPPORT but without -DSILENT_NO_TAINT_SUPPORT. Both disable taint mode, but the latter causes -t and -T to be silently ignored, whereas the former by itself causes use of -t and -T to throw fatal exceptions during process startup.
* workflows/testsuite.yml - Automatically test without taint supportDavid Cantrell2023-04-021-0/+1
| | | | | | | | Add an entry for -DSILENT_NO_TAINT_SUPPORT to our linux based test matrix. Currently we cannot do the same for plain -DNO_TAINT_SUPPORT as it chokes on -t and -T on the command line. [Committers note: edited commit message to add detail]
* .github/workflows/testsuite.yml - switch from secrets to varsYves Orton2023-02-231-35/+38
| | | | | | | | | | | | | | We have been using secrets to store boolean variables. This results in our CI output being annoyingly corrupted by the security eliding. Github now supports "variables" as well as secrets, which are not elided in CI output. So switch our test framework controls to use the variable. Note the EXTENDED_TESTING variable was switched from to DO_EXTENDED_TESTING so that we can have both the EXTENDED_TESTING /secret/ and the new DO_EXTENDED_TESTING variable available at the same time as this commit is processed. Fixes #20843
* CI linux-i386: Replace checkout@v1 with git cmdsBram2023-01-071-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | For linux-i386 we are/were using checkout@v1 because checkout@v2/checkout@v3 do not work inside a i386-container. checkout@v1 however has some issues[^1] with shallow clones (`fetch-depth: 1`): - it cause race conditions[^2] - it makes it impossible to re-run an older job Options we have Today: - clone with full history: this is slow *and* influences some of the (porting) tests. - ditch checkout@v1 and manually clone it: we already do this for cygwin and it's faster: 58s (for checkout@v1) vs 7s when doing it ourselves[^3]. -> Ditch checkout@v1. [^1]: Upstream report: https://github.com/actions/runner/issues/2357 [^2]: `git clone` fails when new commits are pushed between the start of the CI run and the start of the linux-i386 job. With our CI config that is a time-frame of about 10 minutes (since that is how long the 'Sanity check' takes). [^3]: checkout@v1 always fetches *all* tags and *all* branches.
* irc-notifications: use literal blocksNicolas R2022-12-201-16/+18
|
* irc-notifications: advertise merged and closed PRsNicolas R2022-12-201-2/+15
| | | | Split merged and closed PR notifications
* irc-notifications: split notificationsNicolas R2022-12-201-6/+19
| | | | | | | | | | Split notifications between the two channels Advertise opened and closed Pull Requests to #p5p and use #p5p-commits for any extra notifications so we reduce noise to #p5p to its minimum. Remove body from opened PR and only use title.
* irc-notifications: update notify-ircNicolas R2022-12-201-4/+4
| | | | Update notify-irc action to v2
* .github - switch to v3 actionsYves Orton2022-12-091-14/+14
|
* GitHub Actions: switch from ::set-output to $GITHUB_OUTPUTGraham Knop2022-11-041-15/+15
| | | | | | | | The ::set-output command has been deprecated and replaced with the $GITHUB_OUTPUT environment file. Convert the workflows to use the newer output mechanism. Reference: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
* CI/dist-modules: add job to test dist/ modules on macos system perlTony Cook2022-10-241-0/+26
| | | | | | | | | | | | This tests two things for us: - it tests on a "strange" platform, where things aren't exactly POSIX, but similar enough for some purposes. This allows testing for https://github.com/Perl/perl5/issues/20362 - the MacOS system perl is threaded, which is a flaw with the existing dist-modules tests. This found a few problems which are fixed in the following commits.
* CI/dist-modules: make continuing controllable on the command-lineTony Cook2022-10-241-1/+1
|
* CI/dist-modules: Use `actions/checkout@v2`Bram2022-10-241-1/+1
| | | | | | | | | | The test/checkout does work with `actions/checkout@v2` so use it instead of 'checkout@v1'. (v2 is faster because it does a shallow clone and doesn't fetch the tags.) (My *assumption* on why `checkout@v1` was used: `checkout@v2` does not work when a 32-bit container is used on a 64-bit host. In these tests it uses a 64-bit container and that does work.)
* Avoid excess flood from IRC notifications workflowNicolas R2022-10-171-6/+44
| | | | | | | | | | | | | | | | | | | The IRC github workflow fails unexpectedly from time to time. We should enforce a size limit to the message we send (Some recent commit messages can be pretty long). Shorten Pull Requests title and body for IRC bot. The default timeout is 6 hours which is much longer than needed to parse the git commits and submit a few IRC notifications if needed. Adding a timeout to the job should avoid long stall runs. We do not want the irc workflow to spoil resources and prefer using it for running unit tests. Use consistent heredoc token 'EOS' to setup variables.
* Extend testsuite.yml to 'select' which jobs to runBram2022-10-121-12/+78
| | | | | | | | | | | | | | | | | | | | For the Perl/perl5 repository nothing changes. For a fork of perl5 the user now has some more control to select which jobs to run. This is done by setting the appropriate secrets. Before this commit one could choose to: - run no tests (= GitHub Actions disabled) - run 'Sanity Check' (= GitHub Actions enabled) - run all jobs (= GitHub Actions enabled + EXTENDED_TESTING secret added) With this commit specific jobs can be enabled by adding a secret with a true value. For example: setting `CI_FORCE_CYGWIN=1` in the Secrets will cause it to run the 'Sanity Check' job and the Cygwin' job. All other jobs are skipped. (See the docs in the file to see the full list of Secrets)
* testsuite.yml: Check for false valueBram2022-10-121-3/+18
| | | | | | | | | | | | Extend the 'EXTENDED_TESTING' check to differentiate between a true and a false value. With the original check: setting 'EXTENDED_TESTING' to 0 would cause all jobs to be run which is not very logical. The only way to disable it is/was to completely remove the 'EXTENDED_TESTING' secret. With this commit it can be disabled by setting 'EXTENDED_TESTING' to '0' (or '00000000' or ' ' or ' 0 0 0000 00 ' or ...)
* testsuite.yml: Split "run_all_jobs" logicBram2022-10-121-4/+7
| | | | | This is in preparation of the next commit which will alter the `[[ -n "${EXTENDED_TESTING}" ]]` condition.
* Add some docs for workflow/testsuite.ymlBram2022-10-121-0/+16
|
* Use cancelled() instead of always()Bram2022-10-121-12/+12
| | | | | | | | | | | | The use of `always()` made it impossible to cancel the workflow. From https://docs.github.com/en/actions/managing-workflow-runs/canceling-a-workflow : To cancel the workflow run, the server re-evaluates if conditions for all currently running jobs. If the condition evaluates to true, the job will not get canceled. For example, the condition if: always() would evaluate to true and the job continues to run. -> Replace `always()` with `! cancelled()`
* Also run 'dist-modules' when porting test failsBram2022-10-121-1/+1
| | | | | This to make it similar to all other jobs: when (only) the porting test fails then all other jobs should still run.
* build: harden testsuite.yml permissionsAlex2022-09-261-0/+3
| | | Signed-off-by: Alex <aleksandrosansan@gmail.com>
* build: harden detect-conflicts.yml permissionsAlex2022-09-261-0/+4
| | | Signed-off-by: Alex <aleksandrosansan@gmail.com>
* build: harden irc-notifications.yaml permissionsAlex2022-09-261-0/+1
| | | Signed-off-by: Alex <aleksandrosansan@gmail.com>
* CI/macos: Switch to macos-11Bram2022-09-191-3/+3
| | | | | | | | | | As far as I can find: macos-11 is called Big Sur and uses xcode 13.2.1. See also: https://github.com/actions/runner-images/blob/main/images/macos/macos-11-Readme.md (Reason for the change: macos-10 is deprecated in GitHub CI and is planned to be removed on 1 December 2022.) Fixes #20167
* CI/macos: Remove `export SDK`Bram2022-09-191-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | I'm not sure tho that what was ever added.. The build and test appear to work fine when it's not set. README.macosx does mention it but there it does get used. From README.macosx#sdk-support : First, export the path to the SDK into the build environment: export SDK=.... ... You can use the SDK by exporting some additions to Perl's 'ccflags' and '..flags' config variables: ./Configure -Accflags="-nostdinc -B$SDK/usr/include/gcc \ -B$SDK/usr/lib/gcc -isystem$SDK/usr/include \ -F$SDK/System/Library/Frameworks" \ -Aldflags="-Wl,-syslibroot,$SDK" \ -de But nothing in the ci worflow appears to do that.. So as far as I can tell `$SDK` is never used.
* CI/cygwin: clone the repo similar to 'checkout@v2'Bram2022-09-131-6/+5
| | | | | | | | The primary reason for doing is to make it similar to all the other CI configs. The second reason for doing this is because it makes the checkout faster. (old: 1m14s, new: 9s)
* CI/cygwin: use test harness with 2 jobsBram2022-09-131-1/+1
| | | | | | | It was running the tests using t/TEST; change it to use t/harness and use two jobs for doing so. This decreases the total run-time from about 1h to 38m.
* CI/cygwin: use `shell: sh`Bram2022-09-131-17/+40
| | | | | | | | | | | | | | Before it was using powershell (or cmd) to run a 'sh -c' command. Change it to use `shell: sh` so it becomes a bit more readable. For using `shell: sh` two problems had to be fixed: - the GitHub runner creates a file with the 'run'-contents but it uses a CRLF line ending which doesn't work with `sh`. The work-around for that is to include `igncr` in SHELLOPTS (the 'igncr' option is a cygwin patch to bash) - SHELLOPTS contain 'errexit' which breaks ./Configure since it stopped on the first non-zero exit status (which happened to be a `grep`)
* CI/linux-i386: use shallow clone (fetch-depth: 1)Bram2022-09-131-0/+2
| | | | | | | The other CI configurations use `checkout@v2' which defaults to making a shallow clone (i.e. with fetch-depth set to 1). Do the same for linux-i386.
* CI/linux-i386: Remove fetching of tagsBram2022-09-131-5/+1
| | | | | | | | | | | | | | | | | | For linux-i386 `checkout@v1` is used which automatically fetches all tags. It uses the command (slightly altered for readability): git -c http.extraheader="AUTHORIZATION: basic ***" fetch \ --tags \ --prune \ --progress \ --no-recurse-submodules \ origin +refs/heads/*:refs/remotes/origin/* So fetching the tags again is not needed. Note: this also makes it possible to get rid of the `git remote set-url` command. (This was added to add 'Authorization' header which is needed when using a private repo when using `git fetch`. Since the `git fetch` is gone the changing of the remote is no longer needed)
* CI/linux-i386: Explain why 'checkout@v2' failsBram2022-09-131-1/+7
| | | | | TLDR: it uses a 64-bit binary inside a 32-bit container. (For details see the code)
* testsuite.yml: Remove fetching of tagsBram2022-09-131-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The only test that need the git tags (afaik) is porting/cmp_version.t; But the fetching of tags isn't really working for that test. Basically the repo is cloned with: $ git clone --depth 1 https://github.com/perl/perl5 $ git fetch --depth=1 origin +refs/tags/*:refs/tags/* And then later the test uses: $ git describe --abbrev=0 HEAD and it expects to find a tag. However doing that: $ git describe --abbrev=0 HEAD fatal: No tags can describe '6a011f13d7690dbe2e03ad7500756c983bcb1834'. So it's not really working.. This can also be seen in the CI logs[^1], the output contains: porting/cmp_version.t ..... skipped: Git found, but no Git tags found There are only 3 CI configs that do run the porting/cmp_version.t test: - 'Sanity: Linux -Dusethreads' - this is intended - 'linux i386/ubuntu (-Dusedevel)'[^2] - 'cygwin'[^3] [^1]: CI logs of: 'linux (-Uusethreads)', 'linux (-Duseshrplib ...)', 'linux (-Duserelocatableinc)', 'linux (-Dcc='clang')', 'linux (-Dcc='g++')', 'install', 'macOS (catalina) xcode 12 (-Uusethreads)', 'macOS (catalina) xcode 12 (-Duseithreads -Duseshrplib)', 'Windows msvc142', 'Windows mingw64', 'ASAN (-Accflags=-DPURIFY)', 'ASAN (-DDEBUGGING)', 'ASAN (-Dusethreads)', 'PERL_UNICODE (-Uusethreads)', 'PERL_UNICODE (-Dusethreads ...') [^2]: it uses 'actions/checkout@v1' to do the checkout which does a full clone [^3]: it manually runs `git clone`, doing a full clone (with all history)
* CI: Special case porting test in 'sanity check'Bram2022-09-051-12/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a special case for the porting test in the sanity check of the CI run. Before: When a porting test failed (such as t/porting/authors.t, t/porting/cmp_version.t, ...) then it would skip all the other test configurations. Now: When a porting test fails: - result of sanity check is failure (i.e. it's red) - other test configurations are run and these will also run the porting tests. (These may or may not fail, depending on the test) When a non-porting test fails: - result of sanity check is failure (i.e. it's red) - sanity check still runs the porting tests - other test configurations are skipped Note: in the `if`conditions of the other test configurations it was needed to include `always()` because otherwise GitHub uses an implicit `success() &&` (which check the result of the sanity check - which is unwanted if only the porting tests failed) Fixes #19867
* test dist/ modules against various older perls in CITony Cook2022-08-311-0/+40
| | | | | | | | | | | | | | | | This currently has one major limitation: the perl-testers images aren't threaded and don't have threaded alternatives, so the threads, threads-shared and Thread-Queue dists are effectively untested on the older perls. The perl-testers images have a large number of test modules and their dependencies installed, which means we're testing against the latest versions of those dependencies (such as parent.pm) rather than against the version of that dependency that shipped with that perl. I tried to use the official perl images, but these only include a small number of recent perls. The git repository includes DockerFiles for the older versions, but these aren't published to Docker Hub.
* CI: Remove fetching of tags from sanity checkBram2022-08-221-2/+1
| | | | | | | | | | | | | | | For the 'sanity check' CI the option `fetch-depth: 0` is used. This causes it to fetch all branches *and* all tags with all history. By doing `git fetch --depth=1 origin +refs/tags/*:refs/tags/*` it is fetching all the tags again and in this case *discarding* all the history of the tags and turning this into a shallow clone instead of a full clone. -> Remove the fetching of tags from the sanity check CI since they were already fetched with their full history. (This is needed because in the next commit a check will be done to see if the test is running in a shallow clone)
* testsuite.yml - fix and rename "authors" CI workflow to "authors_involved_debug"Yves Orton2022-08-211-2/+4
| | | | | | | | | | | | The existing name is confusing to me, especially when the workflow gets skipped so change the name to something more intuitive. We also change it to respect .mailmap by using %aN and %aE instead of %an and %ae. We also change it to use ".." and "..." in the git log statement, and use `sort | uniq -c` instead of `sort -u`, it is helpful to see counts. We also show the resolved begin and end commits.
* Add 'g++' build in the GitHub workflowBram2022-08-171-0/+1
| | | | | | | | Also do a build with 'g++' since it can catch more errors. (I accidentally broke builds with g++ and that commit got merged on blead; smokers then reported build failures with g++ but it would have been nicer if I knew this before it got merged.)
* Make DEBUGGING the default on CI for WindowsKarl Williamson2022-08-091-4/+4
| | | | This should help find things earlier/easier
* use the cygwin install action instead of chocoTony Cook2022-06-221-6/+6
| | | | | Removed "gcc" and "lib" from the package list since there are no such packages.
* testsuite.yml - fix git breakage from fix for CVE-2022-24765Yves Orton2022-04-131-1/+3
| | | | | | | | | | | | | | | We need to configure git to know that our working directory is "safe". This fixes this bug on github: Run git remote set-url origin "***[github.com/$GITHUB_REPOSITORY](http://github.com/$GITHUB_REPOSITORY)" fatal: unsafe repository ('/__w/perl5/perl5' is owned by someone else) To add an exception for this directory, call: git config --global --add safe.directory /__w/perl5/perl5 Process completed with exit code 128. See the git mailing list for more details on this CVE.
* revert to windows-2019 in GitHub Actions (for now)Tomasz Konojacki2022-02-151-3/+3
| | | | | It seems the changes in windows-latest (windows-2022) image broke our builds.
* install libgdbm and libdb in GitHub ActionsTomasz Konojacki2021-10-151-4/+28
| | | | This ensures that DB_File and GDBM_File will be built and tested.
* disable LeakSanitizer in GitHub ActionsTomasz Konojacki2021-10-151-2/+4
| | | | | | It randomly fails with a fatal error for no apparent reason. Fixes #19189
* Leave the checkout `fetch-depth` at its default (1) for most jobsNicholas Clark2021-10-121-16/+8
| | | | | | | The default is a shallow checkout. Keep the full checkout for the "sanity test" job so that it runs all the tests in t/porting. Add a comment explaining the reasoning.
* A CI test that manicheck reports no errors on a clean checkoutNicholas Clark2021-10-121-0/+3
| | | | | | Do this on the "minitest" job as that has no "manicheck" step yet, and the "minitest" job does not have a "matrix", so we only run this actual test once.
* A CI test that manicheck has no errors after `git clean -dxf`Nicholas Clark2021-10-121-0/+6
|
* Add CI tests for `make distclean` and Porting/manicheckNicholas Clark2021-10-121-0/+7
|
* Test ASAN with -DDEBUGGING (and so also with assertions enabled)Nicholas Clark2021-09-261-1/+2
| | | | | Make it clear in the earlier comment about -DDEBUGGING that it was referencing the "linux" job, not the entire file.
* Test a macOS threaded shared-library build tooNicholas Clark2021-09-261-1/+8
|
* Test clang's ASAN as well as gcc's ASANNicholas Clark2021-09-261-1/+1
| | | | | | | | | | | | | | On the GH virtual machine, gcc's ASAN appears to be slightly buggy, as the `-Accflags=-DPURIFY` job is causing cpan/File-Path/t/Path.t to reliably SEGV after passing all 167 subtests: Tracer caught signal 11: addr=0x0 pc=0x7ff95dfaa8b0 sp=0x7ff95a2a6ce0 LeakSanitizer has encountered a fatal error. I can't replicate this on machines I have access to, which makes it rather hard to debug. Hence side-step the issue by running this test with clang instead, so that we also test with clang's ASAN implementation. We still test with gcc's ASAN in one of the PERL_UNICODE jobs.