Commit Graph
11406 Commits
Author SHA1 Message Date
dced246bb5 Delete comment since it's in the official docs
Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
2026-04-24 15:16:42 -07:00
Erica Portnoy ed82edd001 remove comment added to check concurrency 2026-04-24 13:10:18 -07:00
Erica Portnoy b6fe14e0f7 add a comment to check concurrency; this should stop the previous test and run this instead 2026-04-24 13:09:15 -07:00
Erica Portnoy 269d856681 remove github.ref from concurency group name 2026-04-24 13:08:29 -07:00
Erica Portnoy 87b13716cd group venv as well! these should maybe be separate steps but whatever 2026-04-24 13:04:17 -07:00
Erica Portnoy 9ba5d3317a group more outputs in sphinx tests 2026-04-24 13:01:53 -07:00
Erica Portnoy 0f5ac81a6b add a comment to test if debugging turned off correctly 2026-04-24 12:58:46 -07:00
Erica Portnoy cfa43e860b put the sphinx capitalization change in the right place 2026-04-24 12:44:36 -07:00
Erica Portnoy b0e5900e52 use github actions syntax for groups and errors 2026-04-24 12:28:58 -07:00
Erica Portnoy 6f2aa2f376 use consistent naming and capitalization for sphinx builds as well 2026-04-24 12:21:49 -07:00
Erica Portnoy 23738a1c6e remove test_name since github already has that context, swap order of toxenv and image name 2026-04-24 11:57:09 -07:00
Erica Portnoy 4e47230974 remove uploading to codecov, since we don't use that anymore 2026-04-24 11:50:51 -07:00
Erica Portnoy 52613ca83c remove TARGET_BRANCH that's no longer used anyway 2026-04-24 11:43:22 -07:00
Erica Portnoy e73f1eccd0 mac_install id no longer needed, it's an artifact of interim testing 2026-04-24 11:42:03 -07:00
Erica Portnoy 3c5b411435 define AWS_EC2_PEM_FILE in env; it was lost in the actions conversion 2026-04-24 11:41:16 -07:00
Erica Portnoy e9de9fdf76 secrets are now inherited; no need to be able to pass them into a workflow and we should not do so 2026-04-24 11:39:44 -07:00
Erica Portnoy a267b704e6 remove set -e since it's now implicit 2026-04-24 11:36:02 -07:00
Erica Portnoy 59034c89f3 set persist-credentials to false as flagged by zizmor 2026-04-24 11:35:12 -07:00
Erica Portnoy f8f6a24e5e clean up name fields for reading test results 2026-04-17 15:34:35 -07:00
Erica Portnoy 95ac7bc382 add checker job to enable required checks; remove vestigial name field 2026-04-17 15:19:25 -07:00
Erica Portnoy 3c8b6dbbcb convert .azure-pipelines/main.yml to .github/workflows/pr-test-suite.yml to run PR test suite 2026-04-17 14:41:34 -07:00
Erica Portnoy dd436786b0 add standard tests jobs; compare to .azure-pipelines/templates/jobs/standard-tests-jobs.yml which is still needed for other pipelines on azure 2026-04-17 14:40:54 -07:00
Erica Portnoy 7690b4c019 add tox steps; compare to .azure-pipelines/templates/steps/tox-steps.yml which is still needed for other pipelines on azure 2026-04-17 14:39:39 -07:00
Erica Portnoy d2c39a3980 add sphinx tests; compare to .azure-pipelines/templates/steps/sphinx-steps.yml which is still needed for other pipelines on azure 2026-04-17 14:39:01 -07:00
Erica Portnoy 9086feb49a modify .gitignore to ignore files created during the migration process 2026-04-17 14:26:26 -07:00
Brad WarrenandGitHub 3a5c92c6be update base docker image (#10620)
fixes https://github.com/certbot/certbot/issues/10619

you can see docker builds and tests passing on this change at
https://dev.azure.com/certbot/certbot/_build/results?buildId=10360&view=results

i'm also creating a calendar event for us so we remember to keep this
updated in the future

i don't think this PR requires two reviews
2026-04-13 12:21:34 -07:00
Brad WarrenandGitHub 0cc0844f2c Release certbot 5.5.0 (#10616) 2026-04-07 14:29:50 -07:00
Erica Portnoy fc91823888 Bump version to 5.6.0 2026-04-07 09:38:18 -07:00
Erica Portnoy 6a7443f654 Remove built packages from git 2026-04-07 09:38:18 -07:00
Erica Portnoy 82dda45352 Release 5.5.0 v5.5.0 2026-04-07 09:38:17 -07:00
Erica Portnoy 171cb29183 Update changelog for 5.5.0 release 2026-04-07 09:37:45 -07:00
0eb8af20a5 Add @ing mattermost notifications to release build successes and failures (#10604)
Fixes https://github.com/certbot/certbot/issues/10599

This approach creates a new azure stage Notify and posts to the
mattermost webhook directly from within azure.

The python script uses the azure rest api to get the status of the
Deploy stage specifically. This will be failed if it failed, or skipped
if a previous stage failed, or abandoned if it timed out.

We may want to remove the existing azure build failure notification when
this is merged. It can be deleted from
[here](https://dev.azure.com/certbot/certbot/_settings/serviceHooks)
(it's the one that says "Build release, status Failed"), although
personally I think it's fine to keep it.

History of alternate general approaches I investigated:

1. give azure a custom file to say a message that depends on the
requestedBy field. impossible. no custom messages at all, much less
dependant ones.
2. hook azure build completed webhook trigger directly to github
respository_dispatch event. impossible. azure will send data in a
[specific
format](https://learn.microsoft.com/en-us/azure/devops/service-hooks/events?view=azure-devops#build.complete),
which is not the format [github
requires](https://docs.github.com/en/rest/repos/repos?apiVersion=2026-03-10#create-a-repository-dispatch-event).
3. option 2, but put a custom server somewhere to translate them. or to
grab azure and send directly to mattermost. this is a horrible idea; no
one wants to be managing a production server with secrets on it.
4. a mattermost bot is just a special user account. the sender still has
to format the data so mm can read it.
5. block on migrating from azure to github actions. drawback: this will
likely take a while, and also we're not definitely doing it. see
https://github.com/certbot/certbot/issues/10581
6. smaller than 5; wrap release in a github action that calls azure
inside of it. and then if we end up migrating more, it should be pretty
smooth to move things inside of actions. drawback: this will probably
not integrate as smoothly, given we use the azure integration. I did not
investigate further.
7. there doesn't seem to be any sort of github actions event about
builds passing on a certain branch that we can check
8. just message mattermost directly from within the pipeline as a final
stage --> where I landed.

There's further discussion in the comments about others ways we tried to
structure the pipeline and get information from azure that's not super
necessary to read to review this PR.

Relevant links:

https://learn.microsoft.com/en-us/azure/devops/service-hooks/events?view=azure-devops#build.complete

https://learn.microsoft.com/en-us/azure/devops/service-hooks/services/webhooks?view=azure-devops#resource-details-to-send

https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#agent-variables

https://learn.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml#job-status-functions


https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows

https://docs.github.com/en/rest/repos/repos?apiVersion=2026-03-10#create-a-repository-dispatch-event

https://docs.github.com/en/webhooks/webhook-events-and-payloads#repository_dispatch

Results of tests with the latest code are here:

https://dev.azure.com/certbot/certbot/_build/results?buildId=10309&view=results

https://dev.azure.com/certbot/certbot/_build/results?buildId=10310&view=results

https://dev.azure.com/certbot/certbot/_build/results?buildId=10311&view=results

Plus the mattermost messages did get sent.

---------

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
2026-04-02 14:14:27 -07:00
Brad WarrenandGitHub 08c2354f46 update poetry (#10615)
this is in response to
https://github.com/certbot/certbot/security/dependabot/126

as you can see by examining the github status checks on this PR, i ran
the full test suite and everything passed

i also don't think this PR requires two reviews
2026-04-02 14:11:07 -07:00
ohemorangeandGitHub 3d803821b7 Repin dependencies (#10611) 2026-03-27 09:03:31 -07:00
6f1c0b0abd merge certbot-apache and certbot-nginx into certbot (#10522)
based on the suggestion @bmw made in #10484, this moves nearly
everything from `certbot-apache` and `certbot-nginx` into subdirectories
in `certbot/src/certbot/_internal`, and corresponding "extra"
dependencies are made for the certbot distribution. in their place,
entrypoint shims are made in the old distributions.

this way, installing `certbot[nginx]` will pull in the extra
dependencies needed for the nginx code, and also pull in the shim in
`certbot-nginx`, letting our plugin discovery system work just as it did
before. ditto for apache.

note that this doesn't yet deprecate anything, which was one of the
primary goals of the original issue -- i spun out that work into #10521

fixes #10484

---------

Co-authored-by: Brad Warren <bmw@users.noreply.github.com>
Co-authored-by: ohemorange <erica@eff.org>
2026-03-23 18:09:04 -07:00
ohemorangeandGitHub 9599364837 Use python warning filters from pytest.ini during integration tests (#10602)
Fixes https://github.com/certbot/certbot/issues/10180.

So first of all, the core issue here is that [pyca deliberately
chose](https://github.com/pyca/cryptography/blob/ec80c1c2894320d30fd674ea2c6103d91b4e777e/src/cryptography/utils.py#L15-L18)
to override the default python functionality and make deprecation
warnings appear by default. This isn't common. If they'd actually used a
`DeprecationWarning`, it wouldn't have shown up to users, at least. That
being said, we should still try to catch it, as we do in fact want to
know about deprecation warnings for our own updates.

To do that, this PR searches upwards for a `pytest.ini` file from the
file's location. If found, it reads the warnings from the file, and
passes them using the `PYTHONWARNINGS` env variable. It also explicitly
sets warnings to `error` always in case we can't find the `pytest.ini`,
and ignores the subsequent unverified-https-on-localhost warning. It
also fixes a warning in our test nginx config that seemed reasonable to
address.

I tested this by adding a temporary warning, which I then removed, but
since it turned out there were two other warnings, that wasn't actually
necessary.

Options I considered and rejected:

- Switch from `atexit` to calling `main` directly. To do this, we'd have
to switch our `main` function to something like a try-finally. That's
complicated by the fact that we call `atexit` from other places in the
code. Also, `exc_info` isn't availabe in `finally` while it is in
`at_exit`, so it's not as versatile. But mostly if we wanted to do this,
we'd have to implement a custom atexit handler, basically, and that
seems worse than this option.
- Looking into pytest-forked. It's apparently buggy and not being
maintained. Not even sure this is what it's for anyway.
- Multiple
[-W](https://docs.python.org/3/using/cmdline.html#cmdoption-W) options
can be given instead of an env variable. The env version seemed cleaner.
- More closely mimicking [how pytest finds ini
files](https://docs.pytest.org/en/stable/reference/customize.html#finding-the-rootdir).
It seemed unnecessary to me.

Potential drawbacks:
- If we move or rename the `pytest.ini` file and for some reason don't
do a reasonable grep for `pytest.ini`, we will no longer catch any
additional `ignore`s in there. But imo we're likely to do that grep, and
also a missing ignore will then show up when we run the tests.
2026-03-20 14:40:31 -07:00
Brad WarrenandGitHub 9ed92009db deprecate certbot.ocsp (#10584)
this is part of https://github.com/certbot/certbot/issues/10517

to update this description in response to the discussion below, i'd
recommend reviewing this PR by commit. the first commit just moves
ocsp.py under _internal making no other changes while the second commit
fixes everything else up. the diff really isn't as big here as it looks
2026-03-19 15:14:10 -07:00
ohemorangeandGitHub b42b986fb7 List certbot-dns-eurodns as a third-party plugin (#10605)
Fixes https://github.com/certbot/certbot/issues/10603

The link to the github repo is 404'ing. I've asked for a current link,
but the pypi link seems fine to me also. It was released yesterday so it
does seem to still be in active development.

<img width="910" height="214" alt="Screenshot 2026-03-18 at 10 30 19 AM"
src="https://github.com/user-attachments/assets/25208402-ebd1-4d9e-8c46-f1a3f5b83ec0"
/>
2026-03-18 10:52:14 -07:00
James MossandGitHub 26a0b0295b Logo & Wording for DigitalOcean Open Source Sponsorship in Readme.rst (#10601)
In exchange for participating in Open Source Sponsorship, DigitalOcean
has assembled a guide. This commit should bring the readme in line with
the provided guide.

https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/index.html
2026-03-17 13:33:36 -07:00
Brad WarrenandGitHub e9f3c986a2 update manual docs for IP certs (#10596)
i noticed this when reviewing jsha's upcoming blog post

this probably should have been done as part of
https://github.com/certbot/certbot/pull/10544, but we forgot to do it
then

i don't think this PR requires two reviews
2026-03-11 12:51:40 -07:00
ohemorangeandGitHub fa0b0b1057 Merge pull request #10594 from certbot/candidate-5.4.0
Candidate 5.4.0
2026-03-10 12:15:27 -07:00
Will Greenberg 8ebbe24190 Bump version to 5.5.0 2026-03-10 10:47:29 -07:00
Will Greenberg 1ff7e2032a Remove built packages from git 2026-03-10 10:47:29 -07:00
Will Greenberg 95c004cb96 Release 5.4.0 v5.4.0 2026-03-10 10:47:28 -07:00
Will Greenberg 564a7b70d6 Update changelog for 5.4.0 release 2026-03-10 10:46:56 -07:00
ohemorangeandGitHub c31974128b Add thanks section to readme; thank digital ocean (#10592)
Fixes https://github.com/certbot/certbot/issues/10580

Direct link to preview of updated README:
https://github.com/certbot/certbot/blob/47786891acc4cb5031d5934de76399620c08a013/certbot/README.rst#thanks
2026-03-06 17:58:31 -08:00
ohemorangeandGitHub e6efb5c6d3 Add notice about AI generated code policy to pull request checklist (#10590) 2026-03-05 11:02:22 -08:00
ohemorangeandGitHub 15e73753a6 Fix link in docker readme (#10582)
The link in the docker README is no longer accurate, we've changed the
headings on the website. This updates the README to match.
2026-02-25 21:17:09 -08:00
ff281d48a8 Improve the error message when certbot renew is used with the -d option (#10225)
Co-authored-by: Brad Warren <bmw@eff.org>
2026-02-13 23:55:35 +00:00
ohemorangeandGitHub 4c61a450d4 Reset mock call count using reset_mock since new thread-safe implementation means it can no longer just be set to 0 (#10576)
This should fix our failing tests.

Python 3.14.3 has the following in its changelog:

> [gh-142651](https://github.com/python/cpython/issues/142651):
[unittest.mock](https://docs.python.org/3/library/unittest.mock.html#module-unittest.mock):
fix a thread safety issue where
[Mock.call_count](https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.call_count)
may return inaccurate values when the mock is called concurrently from
multiple threads.

As a result, we have to call `reset_mock()` instead of using
`.call_count = 0`. See example
[here](https://github.com/matplotlib/matplotlib/pull/31153).

Tests on my machine showing that this change fixes things, and it's the
only place to fix:
```bash
$ brew upgrade pyenv
$ pyenv install 3.14.3
$ pyenv global 3.14.3
$ tools/venv.py
$ source venv/bin/activate
$ pytest certbot -k "test_rollback_too_many" 
====================================================================== test session starts =======================================================================
platform darwin -- Python 3.14.3, pytest-9.0.2, pluggy-1.6.0
rootdir: /Users/erica/certbot
configfile: pytest.ini
plugins: anyio-4.12.1, xdist-3.8.0, cov-7.0.0
collected 1039 items / 1038 deselected / 1 selected                                                                                                              

certbot/src/certbot/_internal/tests/reverter_test.py .                                                                                                     [100%]

=============================================================== 1 passed, 1038 deselected in 2.94s ===============================================================
$ git grep 'call_count = 0'
$ git checkout main
$ pytest certbot -k "test_rollback_too_many"
====================================================================== test session starts =======================================================================
platform darwin -- Python 3.14.3, pytest-9.0.2, pluggy-1.6.0
rootdir: /Users/erica/certbot
configfile: pytest.ini
plugins: anyio-4.12.1, xdist-3.8.0, cov-7.0.0
collected 1039 items / 1038 deselected / 1 selected                                                                                                              

certbot/src/certbot/_internal/tests/reverter_test.py F                                                                                                     [100%]

============================================================================ FAILURES ============================================================================
_______________________________________________________ TestFullCheckpointsReverter.test_rollback_too_many _______________________________________________________

self = <certbot._internal.tests.reverter_test.TestFullCheckpointsReverter testMethod=test_rollback_too_many>
mock_logger = <MagicMock name='logger' id='4463351456'>

>   ???
E   AssertionError: assert 2 == 1
E    +  where 2 = <MagicMock name='logger.warning' id='4463351792'>.call_count
E    +    where <MagicMock name='logger.warning' id='4463351792'> = <MagicMock name='logger' id='4463351456'>.warning

certbot/src/certbot/_internal/tests/reverter_test.py:363: AssertionError
==================================================================== short test summary info =====================================================================
FAILED certbot/src/certbot/_internal/tests/reverter_test.py::TestFullCheckpointsReverter::test_rollback_too_many - AssertionError: assert 2 == 1
=============================================================== 1 failed, 1038 deselected in 0.48s ===============================================================
$ git grep 'call_count = 0'
certbot/src/certbot/_internal/tests/reverter_test.py:        mock_logger.warning.call_count = 0
```
2026-02-13 13:08:06 -08:00