Skip to content

Commit 32739e9

Browse files
TUN-6209: Improve feedback process if release_pkgs to deb and rpm fail
This PR mostly raises exceptions so we are aware if release deb or release pkgs fail. It also makes release_version optional if backup pkgs are not needed.
1 parent 7ce2bb8 commit 32739e9

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

cfsetup.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ stretch: &stretch
4848
- pip3 install pynacl==1.4.0
4949
- pip3 install pygithub==1.55
5050
- pip3 install boto3==1.22.9
51-
- pip3 install gnupg==2.3.1
51+
- pip3 install python-gnupg==0.4.9
5252
post-cache:
5353
# build all packages (except macos and FIPS) and move them to /cfsetup/built_artifacts
5454
- ./build-packages.sh

release_pkgs.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
them to be in an uploadable state.
99
2. Upload these packages to a storage in a format that apt and yum expect.
1010
"""
11-
import subprocess
11+
from subprocess import Popen, PIPE
1212
import os
1313
import argparse
1414
import base64
@@ -102,19 +102,21 @@ def create_distribution_conf(self,
102102
dist: contains all the pkgs and signed releases that are necessary for an apt download.
103103
"""
104104
def create_deb_pkgs(self, release, deb_file):
105-
self._clean_build_resources()
106-
subprocess.call(("reprepro", "includedeb", release, deb_file), timeout=120)
107-
108-
"""
109-
This is mostly useful to clear previously built db, dist and pool resources.
110-
"""
111-
def _clean_build_resources(self):
112-
subprocess.call(("reprepro", "clearvanished"), timeout=120)
105+
print(f"creating deb pkgs: {release} : {deb_file}")
106+
p = Popen(["reprepro", "includedeb", release, deb_file], stdout=PIPE, stderr=PIPE)
107+
out, err = p.communicate()
108+
if p.returncode != 0:
109+
print(f"create deb_pkgs result => {out}, {err}")
110+
raise
113111

114112
# TODO https://jira.cfops.it/browse/TUN-6209 : Sign these packages.
115113
def create_rpm_pkgs(self, artifacts_path):
116114
self._setup_rpm_pkg_directories(artifacts_path)
117-
subprocess.call(("createrepo", "./rpm"), timeout=120)
115+
p = Popen(["createrepo", "./rpm"], stdout=PIPE, stderr=PIPE)
116+
out, err = p.communicate()
117+
if p.returncode != 0:
118+
print(f"create rpm_pkgs result => {out}, {err}")
119+
raise
118120

119121
"""
120122
sets up the RPM directories in the following format:
@@ -180,7 +182,7 @@ def upload_from_directories(pkg_uploader, directory, release, binary):
180182
gpg_key_id: is an id indicating the key the package should be signed with. The public key of this id will be
181183
uploaded to R2 so it can be presented to apt downloaders.
182184
183-
release_version: is the cloudflared release version.
185+
release_version: is the cloudflared release version. Only provide this if you want a permanent backup.
184186
"""
185187
def create_deb_packaging(pkg_creator, pkg_uploader, releases, gpg_key_id, binary_name, archs, package_component, release_version):
186188
# set configuration for package creation.
@@ -205,9 +207,10 @@ def create_deb_packaging(pkg_creator, pkg_uploader, releases, gpg_key_id, binary
205207
upload_from_directories(pkg_uploader, "dists", None, binary_name)
206208
upload_from_directories(pkg_uploader, "pool", None, binary_name)
207209

208-
print(f"uploading versioned release {release_version} to r2...")
209-
upload_from_directories(pkg_uploader, "dists", release_version, binary_name)
210-
upload_from_directories(pkg_uploader, "pool", release_version, binary_name)
210+
if release_version:
211+
print(f"uploading versioned release {release_version} to r2...")
212+
upload_from_directories(pkg_uploader, "dists", release_version, binary_name)
213+
upload_from_directories(pkg_uploader, "pool", release_version, binary_name)
211214

212215
def create_rpm_packaging(pkg_creator, pkg_uploader, artifacts_path, release_version, binary_name):
213216
print(f"creating rpm pkgs...")
@@ -216,8 +219,9 @@ def create_rpm_packaging(pkg_creator, pkg_uploader, artifacts_path, release_vers
216219
print("uploading latest to r2...")
217220
upload_from_directories(pkg_uploader, "rpm", None, binary_name)
218221

219-
print(f"uploading versioned release {release_version} to r2...")
220-
upload_from_directories(pkg_uploader, "rpm", release_version, binary_name)
222+
if release_version:
223+
print(f"uploading versioned release {release_version} to r2...")
224+
upload_from_directories(pkg_uploader, "rpm", release_version, binary_name)
221225

222226

223227
def parse_args():
@@ -239,7 +243,7 @@ def parse_args():
239243
)
240244
parser.add_argument(
241245
"--release-tag", default=os.environ.get("RELEASE_VERSION"), help="Release version you want your pkgs to be\
242-
prefixed with"
246+
prefixed with. Leave empty if you don't want tagged release versions backed up to R2."
243247
)
244248

245249
parser.add_argument(
@@ -281,6 +285,7 @@ def parse_args():
281285
gpg_key_id = pkg_creator.import_gpg_keys(args.gpg_private_key, args.gpg_public_key)
282286

283287
pkg_uploader = PkgUploader(args.account, args.bucket, args.id, args.secret)
288+
print(f"signing with gpg_key: {gpg_key_id}")
284289
create_deb_packaging(pkg_creator, pkg_uploader, args.deb_based_releases, gpg_key_id, args.binary, args.archs,
285290
"main", args.release_tag)
286291

0 commit comments

Comments
 (0)