Various optimizations part 1

* Configure for python3
* Update tests
* Use appropriate virtualenv
* Install nginx for the integration tests
* Try use LD_LIBRARY_PATH to find augeas shared library in snap when python-augeas is invoked
* Update travis to use build-in setup capabilities
* Update .travis.yml
* Add acme build
* Update tests
* Try more recent dist
* Update command
* Clean tests
* Add back augeas
* Add env
* Revert to last working snapcraft config
* Add a gitignore
* Reintegrate acme. Declare augeas in certbot parts
* Use release version of certbot
* Try new approach
* Fix config
* Directly install version of python-augeas from pypi
* Restart from basic
* Clone only once certbot repository. Use pinned versions of dependencies from certbot-auto.
* Try relatively to source
* Use snapcraft env variables
* Strip hashes
* Fix path
* Redefine path
* Continue to prepare the runtime
* Fix command line
* Update .travis.yml
* Add back certbot-apache
* Update snapcraft.yaml
* Build snap against the latest release of certbot
This commit is contained in:
Adrien Ferrand
2020-04-21 16:36:49 -07:00
committed by Brad Warren
parent 0f6486ec7f
commit d63be466a8
6 changed files with 80 additions and 59 deletions
+8
View File
@@ -0,0 +1,8 @@
.snapcraft
parts
prime
stage
*.snap
certbot
venv
.idea
+21 -3
View File
@@ -1,11 +1,29 @@
dist: xenial
language: bash language: bash
script: docker run -v $(pwd):$(pwd) -t snapcore/snapcraft sh -c "apt-get update -qq && cd $(pwd) && snapcraft" && sudo apt-get -y install snapd && sudo snap install --dangerous --classic *.snap && sudo bash test.bash install:
- EXPORT CERTBOT_VERSION=$(python3 get_latest_version.py)
- git clone https://github.com/certbot/certbot.git certbot --branch ${CERTBOT_VERSION}
- certbot/tools/strip_hashes.py certbot/letsencrypt-auto-source/pieces/dependency-requirements.txt > certbot/constraints.txt
script:
- docker run -v $(pwd):$(pwd) -t -e CERTBOT_VERSION=${CERTBOT_VERSION} snapcore/snapcraft sh -c "apt-get update -qq && apt-get install -qq git && cd $(pwd) && snapcraft"
- sudo snap install --dangerous --classic *.snap
- sudo bash test.sh
sudo: required sudo: required
addons:
apt:
packages:
- snapd
- nginx-light
- python3-venv
- python3-requests
- python3-packaging
services: services:
- docker - docker
deploy: deploy:
'on': 'on':
branch: master branch: master
provider: script provider: script
script: openssl aes-256-cbc -K $encrypted_edc9d3b1405a_key -iv $encrypted_edc9d3b1405a_iv -in .snapcraft/travis_snapcraft.cfg -out .snapcraft/snapcraft.cfg -d && docker run -v $(pwd):$(pwd) -t snapcore/snapcraft sh -c "cd $(pwd) && snapcraft push *.snap --release edge" script: |
openssl aes-256-cbc -K $encrypted_edc9d3b1405a_key -iv $encrypted_edc9d3b1405a_iv -in .snapcraft/travis_snapcraft.cfg -out .snapcraft/snapcraft.cfg -d
docker run -v $(pwd):$(pwd) -t snapcore/snapcraft sh -c "cd $(pwd) && snapcraft push *.snap --release edge"
skip_cleanup: true skip_cleanup: true
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env python3
import sys
import requests
from packaging import version
def main():
result = requests.get('https://api.github.com/repos/certbot/certbot/tags')
result.raise_for_status()
tags = [version.parse(entry['name'].replace('v', '')) for entry in result.json()]
tags.sort()
latest_tag = 'v{0}'.format(tags[-1])
sys.stdout.write(latest_tag)
if __name__ == '__main__':
main()
+20 -22
View File
@@ -2,6 +2,7 @@ name: certbot
version: script version: script
version-script: cd parts/certbot/src && git describe|sed s/^v// version-script: cd parts/certbot/src && git describe|sed s/^v//
summary: Automatically configure HTTPS using Let's Encrypt summary: Automatically configure HTTPS using Let's Encrypt
base: core18
description: | description: |
The objective of Certbot, Let's Encrypt, and the ACME (Automated The objective of Certbot, Let's Encrypt, and the ACME (Automated
Certificate Management Environment) protocol is to make it possible Certificate Management Environment) protocol is to make it possible
@@ -23,45 +24,42 @@ apps:
command: certbot command: certbot
environment: environment:
PATH: "$SNAP/bin:$SNAP/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" PATH: "$SNAP/bin:$SNAP/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
AUGEAS_LENS_LIB: $SNAP/usr/share/augeas/lenses/dist AUGEAS_LENS_LIB: "$SNAP/usr/share/augeas/lenses/dist"
LD_LIBRARY_PATH: "$SNAP/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH"
renew: renew:
command: certbot -q renew command: certbot -q renew
daemon: oneshot daemon: oneshot
environment: environment:
PATH: "$SNAP/bin:$SNAP/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games" PATH: "$SNAP/bin:$SNAP/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
AUGEAS_LENS_LIB: $SNAP/usr/share/augeas/lenses/dist AUGEAS_LENS_LIB: $SNAP/usr/share/augeas/lenses/dist
LD_LIBRARY_PATH: "$SNAP/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH"
passthrough: passthrough:
# Run approximately twice a day with randomization # Run approximately twice a day with randomization
timer: 00:00~24:00/2 timer: 00:00~24:00/2
parts: parts:
python-augeas: acme:
plugin: python plugin: python
source: git://github.com/basak/python-augeas source: certbot
source-branch: snap source-subdir: acme
python-version: python2 constraints: $SNAPCRAFT_PART_SRC/constraints.txt
build-packages: [libaugeas0] python-version: python3
certbot: certbot:
plugin: python plugin: python
source: git://github.com/certbot/certbot source: certbot
source-branch: master constraints: $SNAPCRAFT_PART_SRC/constraints.txt
python-version: python2 python-version: python3
after: [python-augeas] python-packages:
certbot-nginx: - acme
plugin: python after: [acme]
source: git://github.com/certbot/certbot
source-branch: master
source-subdir: certbot-nginx
build-packages: [libaugeas-dev]
stage-packages: [libaugeas0]
after: [certbot]
python-version: python2
certbot-apache: certbot-apache:
plugin: python plugin: python
source: git://github.com/certbot/certbot source: certbot
source-branch: master
source-subdir: certbot-apache source-subdir: certbot-apache
constraints: $SNAPCRAFT_PART_SRC/constraints.txt
python-version: python3
python-packages:
- certbot
build-packages: [libaugeas-dev] build-packages: [libaugeas-dev]
stage-packages: [libaugeas0] stage-packages: [libaugeas0]
after: [certbot] after: [certbot]
python-version: python2
-34
View File
@@ -1,34 +0,0 @@
#!/bin/bash
set -ex
apt-get -y install lsb-release net-tools wget python nginx
wget https://github.com/docker/compose/releases/download/1.15.0-rc1/docker-compose-Linux-x86_64 -O /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
cat << EOF > /usr/local/bin/coverage
#!/bin/bash -xe
if [ "\$1" != "run" ]; then
exit 0;
fi
"\${@:7}"
EOF
chmod +x /usr/local/bin/coverage
certbot_version=$(certbot --version 2>&1 | grep "^certbot" | cut -d " " -f 2)
cd parts/certbot/src
tests/boulder-fetch.sh
until curl http://localhost:4000/directory 2>/dev/null; do
echo waiting for boulder
sleep 1
done
# Not needed under Travis Trusty?
#sed -i "s/'1.3.6.1.5.5.7.1.24'/-e '1.3.6.1.5.5.7.1.24' -e 'status_request'/g" tests/certbot-boulder-integration.sh
tests/boulder-integration.sh
echo "Success!"
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
set -ex
cd certbot
python3 -m venv venv
. venv/bin/activate
pip install -e certbot-ci
pytest certbot-ci/certbot_integration_tests/certbot_tests --numprocesses 4 --acme-server=pebble