author | dadaa <daisuke.akatsuka@birchill.co.jp> |
Wed, 09 Jul 2025 04:53:58 +0000 (13 hours ago) | |
changeset 795836 | a5500d271fe3a1fefb4d81d96fc4abd00d9eade7 |
parent 783040 | 687f6d881b34c6c02928aa9d0871bc6011252095 |
permissions | -rw-r--r-- |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
1 |
#!/usr/bin/env/python |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
2 |
# This Source Code Form is subject to the terms of the Mozilla Public |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
3 |
# License, v. 2.0. If a copy of the MPL was not distributed with this |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
4 |
# file, You can obtain one at http://mozilla.org/MPL/2.0/. |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
5 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
6 |
import argparse |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
7 |
import gzip |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
8 |
import io |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
9 |
import logging |
643525
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
10 |
import os |
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
11 |
import sys |
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
12 |
import tarfile |
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
13 |
import time |
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
14 |
from contextlib import contextmanager |
699191
6cb1b4d1134a3ec4c7367a1dc4fd43276300dae8
Bug 1884540 - Remove six dependency from build/ directory r=ahochheiden
serge-sans-paille <sguelton@mozilla.com>
parents:
692053
diff
changeset
|
15 |
from queue import Queue |
643525
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
16 |
from threading import Event, Thread |
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
17 |
|
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
18 |
import requests |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
19 |
from mozbuild.generated_sources import ( |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
20 |
get_filename_with_digest, |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
21 |
get_s3_region_and_bucket, |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
22 |
) |
643525
e51d5f374c771cb37f7c63311d0366219dc00e3e
Bug 1790816 - Reformat build/ with isort. r=linter-reviewers,ahal DONTBUILD
Marco Castelluccio <mcastelluccio@mozilla.com>
parents:
614355
diff
changeset
|
23 |
from requests.packages.urllib3.util.retry import Retry |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
24 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
25 |
# Arbitrary, should probably measure this. |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
26 |
NUM_WORKER_THREADS = 10 |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
27 |
log = logging.getLogger("upload-generated-sources") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
28 |
log.setLevel(logging.INFO) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
29 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
30 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
31 |
@contextmanager |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
32 |
def timed(): |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
33 |
""" |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
34 |
Yield a function that provides the elapsed time in seconds since this |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
35 |
function was called. |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
36 |
""" |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
37 |
start = time.time() |
385817
6074db12d685655fe5692d59471b3c32cc967dc9
Bug 1406650 - Make build/*.py and a few other files flake8 compatible and add them to the list of files to check r=chmanchester
Sylvestre Ledru <sledru@mozilla.com>
parents:
375341
diff
changeset
|
38 |
|
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
39 |
def elapsed(): |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
40 |
return time.time() - start |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
41 |
|
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
42 |
yield elapsed |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
43 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
44 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
45 |
def gzip_compress(data): |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
46 |
""" |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
47 |
Apply gzip compression to `data` and return the result as a `BytesIO`. |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
48 |
""" |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
49 |
b = io.BytesIO() |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
50 |
with gzip.GzipFile(fileobj=b, mode="w") as f: |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
51 |
f.write(data) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
52 |
b.flush() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
53 |
b.seek(0) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
54 |
return b |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
55 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
56 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
57 |
def upload_worker(queue, event, bucket, session_args): |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
58 |
""" |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
59 |
Get `(name, contents)` entries from `queue` and upload `contents` |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
60 |
to S3 with gzip compression using `name` as the key, prefixed with |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
61 |
the SHA-512 digest of `contents` as a hex string. If an exception occurs, |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
62 |
set `event`. |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
63 |
""" |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
64 |
try: |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
65 |
import boto3 |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
66 |
|
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
67 |
session = boto3.session.Session(**session_args) |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
68 |
s3 = session.client("s3") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
69 |
while True: |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
70 |
if event.is_set(): |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
71 |
# Some other thread hit an exception. |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
72 |
return |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
73 |
(name, contents) = queue.get() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
74 |
pathname = get_filename_with_digest(name, contents) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
75 |
compressed = gzip_compress(contents) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
76 |
extra_args = { |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
77 |
"ContentEncoding": "gzip", |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
78 |
"ContentType": "text/plain", |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
79 |
} |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
80 |
log.info(f'Uploading "{pathname}" ({len(compressed.getvalue())} bytes)') |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
81 |
with timed() as elapsed: |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
82 |
s3.upload_fileobj(compressed, bucket, pathname, ExtraArgs=extra_args) |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
83 |
log.info(f'Finished uploading "{pathname}" in {elapsed():0.3f}s') |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
84 |
queue.task_done() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
85 |
except Exception: |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
86 |
log.exception("Thread encountered exception:") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
87 |
event.set() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
88 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
89 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
90 |
def do_work(artifact, region, bucket): |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
91 |
session_args = {"region_name": region} |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
92 |
session = requests.Session() |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
93 |
retry = Retry(total=5, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504]) |
472612
4dabc47dec1223930955d6e7eeb09d7fb5a61661
Bug 1523324 - Add retries to upload_generated_sources.py; r=nalexander
Mike Shal <mshal@mozilla.com>
parents:
385817
diff
changeset
|
94 |
http_adapter = requests.adapters.HTTPAdapter(max_retries=retry) |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
95 |
session.mount("https://", http_adapter) |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
96 |
session.mount("http://", http_adapter) |
472612
4dabc47dec1223930955d6e7eeb09d7fb5a61661
Bug 1523324 - Add retries to upload_generated_sources.py; r=nalexander
Mike Shal <mshal@mozilla.com>
parents:
385817
diff
changeset
|
97 |
|
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
98 |
if "TASK_ID" in os.environ: |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
99 |
level = os.environ.get("MOZ_SCM_LEVEL", "1") |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
100 |
secrets_url = "http://taskcluster/secrets/v1/secret/project/releng/gecko/build/level-{}/gecko-generated-sources-upload".format( # noqa |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
101 |
level |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
102 |
) |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
103 |
log.info(f'Using AWS credentials from the secrets service: "{secrets_url}"') |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
104 |
res = session.get(secrets_url) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
105 |
res.raise_for_status() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
106 |
secret = res.json() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
107 |
session_args.update( |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
108 |
aws_access_key_id=secret["secret"]["AWS_ACCESS_KEY_ID"], |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
109 |
aws_secret_access_key=secret["secret"]["AWS_SECRET_ACCESS_KEY"], |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
110 |
) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
111 |
else: |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
112 |
log.info("Trying to use your AWS credentials..") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
113 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
114 |
# First, fetch the artifact containing the sources. |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
115 |
log.info(f'Fetching generated sources artifact: "{artifact}"') |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
116 |
with timed() as elapsed: |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
117 |
res = session.get(artifact) |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
118 |
log.info( |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
119 |
f"Fetch HTTP status: {res.status_code}, {len(res.content)} bytes downloaded in {elapsed():0.3f}s" |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
120 |
) |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
121 |
res.raise_for_status() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
122 |
# Create a queue and worker threads for uploading. |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
123 |
q = Queue() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
124 |
event = Event() |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
125 |
log.info(f"Creating {NUM_WORKER_THREADS} worker threads") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
126 |
for i in range(NUM_WORKER_THREADS): |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
127 |
t = Thread(target=upload_worker, args=(q, event, bucket, session_args)) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
128 |
t.daemon = True |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
129 |
t.start() |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
130 |
with tarfile.open(fileobj=io.BytesIO(res.content), mode="r|gz") as tar: |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
131 |
# Next, process each file. |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
132 |
for entry in tar: |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
133 |
if event.is_set(): |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
134 |
break |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
135 |
log.info(f'Queueing "{entry.name}"') |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
136 |
q.put((entry.name, tar.extractfile(entry).read())) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
137 |
# Wait until all uploads are finished. |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
138 |
# We don't use q.join() here because we want to also monitor event. |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
139 |
while q.unfinished_tasks: |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
140 |
if event.wait(0.1): |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
141 |
log.error("Worker thread encountered exception, exiting...") |
692053
20b5b5dd0ce0266644d4f3fbcddb77156b9b5d21
Bug 1874758 - Avoid errors during upload_generated_sources.py being ignored. r=firefox-build-system-reviewers,ahochheiden
Mike Hommey <mh+mozilla@glandium.org>
parents:
647377
diff
changeset
|
142 |
sys.exit(1) |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
143 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
144 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
145 |
def main(argv): |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
146 |
logging.basicConfig(format="%(levelname)s - %(threadName)s - %(message)s") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
147 |
parser = argparse.ArgumentParser( |
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
148 |
description="Upload generated source files in ARTIFACT to BUCKET in S3." |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
149 |
) |
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
150 |
parser.add_argument("artifact", help="generated-sources artifact from build task") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
151 |
args = parser.parse_args(argv) |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
152 |
region, bucket = get_s3_region_and_bucket() |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
153 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
154 |
with timed() as elapsed: |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
155 |
do_work(region=region, bucket=bucket, artifact=args.artifact) |
783040
687f6d881b34c6c02928aa9d0871bc6011252095
Bug 1715287 - [lint] Enable remaining pyupgrade rules and lint tree r=linter-reviewers,webdriver-reviewers,translations-reviewers,whimboo,sylvestre
Alex Hochheiden <ahochheiden@mozilla.com>
parents:
699191
diff
changeset
|
156 |
log.info(f"Finished in {elapsed():.03f}s") |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
157 |
return 0 |
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
158 |
|
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
159 |
|
554551
994ae8e4833c90447d91f0e26a718573cff5a514
Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Ricky Stewart <rstewart@mozilla.com>
parents:
554311
diff
changeset
|
160 |
if __name__ == "__main__": |
375341
73bf88110b3821d62a3d393e85b56896a12f2930
bug 1259832 - add a post-build task to upload generated source files. r=dustin
Ted Mielczarek <ted@mielczarek.org>
parents:
diff
changeset
|
161 |
sys.exit(main(sys.argv[1:])) |