build/upload_generated_sources.py
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--
Bug 1957280: Limit user's mouse amount for tree component r=places-reviewers,reusable-components-reviewers,masayuki,mstriemer Differential Revision: https://phabricator.services.mozilla.com/D251224
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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:]))