[libcxx-commits] [libcxx] cb9f6c4 - [libc++] Clean up unused CI files

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Fri Oct 23 12:21:15 PDT 2020


Author: Louis Dionne
Date: 2020-10-23T15:21:04-04:00
New Revision: cb9f6c4c8cbaa327b4836cf0fa61015f760f4002

URL: https://github.com/llvm/llvm-project/commit/cb9f6c4c8cbaa327b4836cf0fa61015f760f4002
DIFF: https://github.com/llvm/llvm-project/commit/cb9f6c4c8cbaa327b4836cf0fa61015f760f4002.diff

LOG: [libc++] Clean up unused CI files

Those were useful during CI experimentation, but are not used anymore.

Added: 
    

Modified: 
    

Removed: 
    libcxx/utils/ci/buildkite-pipeline-trigger.sh
    libcxx/utils/ci/phabricator-report


################################################################################
diff  --git a/libcxx/utils/ci/buildkite-pipeline-trigger.sh b/libcxx/utils/ci/buildkite-pipeline-trigger.sh
deleted file mode 100755
index 333cc285ab7c..000000000000
--- a/libcxx/utils/ci/buildkite-pipeline-trigger.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#===----------------------------------------------------------------------===##
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===----------------------------------------------------------------------===##
-
-#
-# This file generates a Buildkite pipeline that triggers the libc++ CI
-# job(s) if needed. The intended usage of this script is to be piped
-# into `buildkite-agent pipeline upload`.
-#
-
-if git 
diff  --name-only HEAD~ | grep -q -E "libcxx/|libcxxabi/"; then
-  skip="false"
-else
-  skip="The commit does not touch libc++ or libc++abi"
-fi
-
-reviewID="$(git log --format=%B -n 1 | sed -nE 's/^Review-ID:[[:space:]]*(.+)$/\1/p')"
-if [[ "${reviewID}" != "" ]]; then
-  buildMessage="https://llvm.org/${reviewID}"
-else
-  buildMessage="Push to branch ${BUILDKITE_BRANCH}"
-fi
-
-cat <<EOF
-steps:
-  - trigger: "libcxx-ci"
-    async: true
-    build:
-      message: "${buildMessage}"
-      commit: "${BUILDKITE_COMMIT}"
-      branch: "${BUILDKITE_BRANCH}"
-    skip: "${skip}"
-EOF

diff  --git a/libcxx/utils/ci/phabricator-report b/libcxx/utils/ci/phabricator-report
deleted file mode 100755
index 71bf298e8f53..000000000000
--- a/libcxx/utils/ci/phabricator-report
+++ /dev/null
@@ -1,139 +0,0 @@
-#!/usr/bin/env python3
-#===----------------------------------------------------------------------===##
-#
-# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-# See https://llvm.org/LICENSE.txt for license information.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-#
-#===----------------------------------------------------------------------===##
-
-import argparse
-import io
-import os
-import phabricator
-import re
-import socket
-import subprocess
-import sys
-import time
-
-LLVM_REVIEWS_API = "https://reviews.llvm.org/api/"
-
-def exponentialBackoffRetry(f, exception, maxAttempts=3):
-    """Tries calling a function, but retry with exponential backoff if the
-       function fails with the specified exception.
-    """
-    waitTime = 1
-    attempts = 0
-    while True:
-        try:
-            f()
-            break
-        except exception as e:
-            attempts += 1
-            if attempts == maxAttempts:
-                raise e
-            else:
-                time.sleep(waitTime)
-                waitTime *= 2
-
-def buildPassed(log):
-    """
-    Tries to guess whether a build has passed or not based on the logs
-    produced by it.
-
-    This is really hacky -- it would be better to use the status of the
-    script that runs the tests, however that script is being piped into
-    this script, so we can't know its exit status. What we do here is
-    basically look for abnormal CMake or Lit output, but that is tightly
-    coupled to the specific CI we're running.
-    """
-    # Lit reporting failures
-    matches = re.findall(r"^\s*Failed\s*:\s*(\d+)$", log, flags=re.MULTILINE)
-    if matches and any(int(match) > 0 for match in matches):
-        return False
-
-    # Error while running CMake
-    if 'CMake Error' in log or 'Configuring incomplete, errors occurred!' in log:
-        return False
-
-    # Ninja failed to build some target
-    if 'FAILED:' in log:
-        return False
-
-    return True
-
-def main(argv):
-    parser = argparse.ArgumentParser(
-        description="""
-This script gathers information about a Buildkite build and updates the
-Phabricator review associated to the HEAD commit with those results.
-
-The intended usage of this script is to pipe the output of a command defined
-in a Buildkite pipeline into it. The script will echo everything to stdout,
-like tee, but will also update the Phabricator review associated to HEAD
-with the results of the build.
-
-The script is assumed to be running inside a Buildkite agent, and as such,
-it assumes the existence of several environment variables that are specific
-to Buildkite.
-
-It also assumes that it is running in a context where the HEAD commit contains
-the Phabricator ID of the review to update. If the commit does not contain the
-Phabricator ID, this script is basically a no-op. This allows running the CI
-on commits that are not triggered by a Phabricator review.
-""")
-    args = parser.parse_args(argv)
-
-    for var in ('BUILDKITE_LABEL', 'BUILDKITE_JOB_ID', 'BUILDKITE_BUILD_URL', 'CONDUIT_TOKEN'):
-        if var not in os.environ:
-            raise RuntimeError(
-                'The {} environment variable must exist -- are you running '
-                'this script from a Buildkite agent?'.format(var))
-
-    # First, read all the log input and write it line-by-line to stdout.
-    # This is important so that we can follow progress in the Buildkite
-    # console. Since we're being piped into in real time, it's also the
-    # moment to time the duration of the job.
-    start = time.time()
-    log = io.StringIO()
-    while True:
-        line = sys.stdin.readline()
-        if line == '':
-            break
-        sys.stdout.write(line)
-        sys.stdout.flush() # flush every line to avoid buffering
-        log.write(line)
-    end = time.time()
-
-    # Then, extract information from the environment and post-process the logs.
-    log.seek(0)
-    log = log.read()
-    result = 'pass' if buildPassed(log) else 'fail'
-    resultObject = {
-        'name': '{BUILDKITE_LABEL} ({BUILDKITE_BUILD_URL}#{BUILDKITE_JOB_ID})'.format(**os.environ),
-        'result': result,
-        'duration': end - start,
-        'details': log
-    }
-
-    commitMessage = subprocess.check_output(['git', 'log', '--format=%B' , '-n', '1']).decode()
-    phabricatorID = re.search(r'^Phabricator-ID:\s+(.+)$', commitMessage, flags=re.MULTILINE)
-
-    # If there's a Phabricator ID in the commit, then the build was triggered
-    # by a Phabricator review -- update the results back. Otherwise, don't
-    # do anything.
-    if phabricatorID:
-        phabricatorID = phabricatorID.group(1)
-        token = os.environ['CONDUIT_TOKEN']
-        phab = phabricator.Phabricator(token=token, host=LLVM_REVIEWS_API)
-        exponentialBackoffRetry(
-            lambda: phab.harbormaster.sendmessage(buildTargetPHID=phabricatorID, type=result, unit=[resultObject]),
-            exception=socket.timeout
-        )
-    else:
-        print('The HEAD commit does not appear to be tied to a Phabricator review -- '
-              'not uploading the results to any review.')
-
-if __name__ == '__main__':
-    main(sys.argv[1:])


        


More information about the libcxx-commits mailing list