diff --git a/coveralls/api.py b/coveralls/api.py index f6d54e89..84296eee 100644 --- a/coveralls/api.py +++ b/coveralls/api.py @@ -120,9 +120,19 @@ def load_config_from_travis(): @staticmethod def load_config_from_semaphore(): - job = os.environ.get('SEMAPHORE_BUILD_NUMBER') - pr = os.environ.get('PULL_REQUEST_NUMBER') - return 'semaphore-ci', job, None, pr + job = ( + os.environ.get('SEMAPHORE_JOB_UUID') # Classic + or os.environ.get('SEMAPHORE_JOB_ID') # 2.0 + ) + number = ( + os.environ.get('SEMAPHORE_EXECUTABLE_UUID') # Classic + or os.environ.get('SEMAPHORE_WORKFLOW_ID') # 2.0 + ) + pr = ( + os.environ.get('SEMAPHORE_BRANCH_ID') # Classic + or os.environ.get('SEMAPHORE_GIT_PR_NUMBER') # 2.0 + ) + return 'semaphore-ci', job, number, pr @staticmethod def load_config_from_unknown(): diff --git a/docs/usage/tox.rst b/docs/usage/tox.rst index 14ad07e5..29b7eef0 100644 --- a/docs/usage/tox.rst +++ b/docs/usage/tox.rst @@ -102,15 +102,35 @@ All variables: SemaphoreCI ----------- + +Classic +~~~~~~~ + +:: + + passenv = SEMAPHORE SEMAPHORE_EXECUTABLE_UUID SEMAPHORE_JOB_UUID SEMAPHORE_BRANCH_ID BRANCH_NAME + +All variables: + +- ``SEMAPHORE`` +- ``SEMAPHORE_EXECUTABLE_UUID`` +- ``SEMAPHORE_JOB_UUID`` +- ``SEMAPHORE_BRANCH_ID`` +- ``BRANCH_NAME`` + +2.0 +~~~ + :: - passenv = SEMAPHORE SEMAPHORE_BUILD_NUMBER BRANCH_NAME PULL_REQUEST_NUMBER + passenv = SEMAPHORE SEMAPHORE_WORKFLOW_ID SEMAPHORE_JOB_ID SEMAPHORE_GIT_PR_NUMBER BRANCH_NAME All variables: - ``SEMAPHORE`` -- ``SEMAPHORE_BUILD_NUMBER`` +- ``SEMAPHORE_WORKFLOW_ID`` +- ``SEMAPHORE_JOB_ID`` +- ``SEMAPHORE_GIT_PR_NUMBER`` - ``BRANCH_NAME`` -- ``PULL_REQUEST_NUMBER`` .. _tox: https://tox.readthedocs.io/en/latest/ diff --git a/tests/api/configuration_test.py b/tests/api/configuration_test.py index 985bc925..c2e12acf 100644 --- a/tests/api/configuration_test.py +++ b/tests/api/configuration_test.py @@ -170,15 +170,32 @@ def test_travis_no_config(self): assert cover.config['service_job_id'] == '777' assert 'repo_token' not in cover.config - @mock.patch.dict(os.environ, - {'SEMAPHORE': 'True', - 'SEMAPHORE_BUILD_NUMBER': '888', - 'PULL_REQUEST_NUMBER': '9999'}, - clear=True) - def test_semaphore_no_config(self): + @mock.patch.dict( + os.environ, + {'SEMAPHORE': 'True', + 'SEMAPHORE_EXECUTABLE_UUID': '36980c73', + 'SEMAPHORE_JOB_UUID': 'a26d42cf', + 'SEMAPHORE_BRANCH_ID': '9999'}, + clear=True) + def test_semaphore_classic_no_config(self): cover = Coveralls(repo_token='xxx') assert cover.config['service_name'] == 'semaphore-ci' - assert cover.config['service_job_id'] == '888' + assert cover.config['service_job_id'] == 'a26d42cf' + assert cover.config['service_number'] == '36980c73' + assert cover.config['service_pull_request'] == '9999' + + @mock.patch.dict( + os.environ, + {'SEMAPHORE': 'True', + 'SEMAPHORE_WORKFLOW_ID': 'b86b3adf', + 'SEMAPHORE_JOB_ID': '2b942b49', + 'SEMAPHORE_GIT_PR_NUMBER': '9999'}, + clear=True) + def test_semaphore_20_no_config(self): + cover = Coveralls(repo_token='xxx') + assert cover.config['service_name'] == 'semaphore-ci' + assert cover.config['service_job_id'] == '2b942b49' + assert cover.config['service_number'] == 'b86b3adf' assert cover.config['service_pull_request'] == '9999' @mock.patch.dict(os.environ, {'COVERALLS_SERVICE_NAME': 'xxx'}, clear=True)