# Run sent to worker: doanac-reckless == 2023-07-18 22:39:05.951859: Setting up runner on worker == 2023-07-18 22:39:08.368375: Steps to recreate inside simulator wget -O simulate.sh https://api.gavelci.us/projects/jobserv/builds/364/runs/flake8//.simulate.sh # wget'ing the file may require the --header flag if the # jobserv API requires authentication. sh ./simulate.sh == 2023-07-18 22:39:09.691186: Pulling container: python:3.11-alpine 3.11-alpine: Pulling from library/python Digest: sha256:25df32b602118dab046b58f0fe920e3301da0727b5b07430c8bcd4b139627fdc Status: Image is up to date for python:3.11-alpine docker.io/library/python:3.11-alpine == 2023-07-18 22:39:13.449006: Preparing bind mounts 2023-07-18 22:39:13.933463: INFO Creating secret: githubtok 2023-07-18 22:39:14.422115: INFO Creating secret: webhook-key 2023-07-18 22:39:14.904210: INFO Creating secret: milosz == 2023-07-18 22:39:15.926634: Creating container .netrc file 2023-07-18 22:39:16.331484: INFO Creating token for jobserv run access 2023-07-18 22:39:16.740728: INFO Creating a github token entry == 2023-07-18 22:39:17.635464: Preparing script == 2023-07-18 22:39:18.446762: Cloning git repository 2023-07-18 22:39:18.882771: INFO Clone_url: https://github.com/doanac/jobserv.git 2023-07-18 22:39:19.326196: INFO Checking to see if https://github.com/doanac/jobserv.git requires authentication. 2023-07-18 22:39:20.305128: INFO Server does not appear to need credentials for cloning 2023-07-18 22:39:20.771853: INFO Adding githubtok to .gitconfig 2023-07-18 22:39:21.219035: INFO Git install supports submodules Cloning into '/srv/gavelci-worker/runs/tmppt515h7a/repo'... 2023-07-18 22:39:23.550761: INFO Checking out: 988c7bb1da627c559ebbbf2b27e59f4378153c21 Switched to branch 'jobserv-run' == 2023-07-18 22:39:24.924907: Setting up container environment 2023-07-18 22:39:25.356068: INFO Container environment variables: GH_PRNUM=94 GH_OWNER=foundriesio GH_REPO=jobserv GH_STATUS_URL=https://api.github.com/repos/foundriesio/jobserv/statuses/988c7bb1da627c559ebbbf2b27e59f4378153c21 GH_TARGET_REPO=https://github.com/foundriesio/jobserv.git GIT_URL=https://github.com/doanac/jobserv.git GIT_SHA_BASE=52205666ba492d8be4aa4cfe9e3863d02bcfcd93 GIT_OLD_SHA=52205666ba492d8be4aa4cfe9e3863d02bcfcd93 GIT_SHA=988c7bb1da627c559ebbbf2b27e59f4378153c21 H_PROJECT=jobserv H_BUILD=364 H_RUN=flake8 H_RUN_URL=https://api.gavelci.us/projects/jobserv/builds/364/runs/flake8/ H_WORKER=doanac-reckless == 2023-07-18 22:39:26.206517: Running script inside container 2023-07-18 22:39:26.643843: INFO Running with --memory=14639596339 WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. + apk add musl-dev gcc fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/APKINDEX.tar.gz fetch https://dl-cdn.alpinelinux.org/alpine/v3.18/community/x86_64/APKINDEX.tar.gz (1/12) Installing libgcc (12.2.1_git20220924-r10) (2/12) Installing libstdc++ (12.2.1_git20220924-r10) (3/12) Installing zstd-libs (1.5.5-r4) (4/12) Installing binutils (2.40-r7) (5/12) Installing libgomp (12.2.1_git20220924-r10) (6/12) Installing libatomic (12.2.1_git20220924-r10) (7/12) Installing gmp (6.2.1-r3) (8/12) Installing isl26 (0.26-r1) (9/12) Installing mpfr4 (4.2.0-r3) (10/12) Installing mpc1 (1.3.1-r1) (11/12) Installing gcc (12.2.1_git20220924-r10) (12/12) Installing musl-dev (1.2.4-r0) Executing busybox-1.36.1-r0.trigger OK: 159 MiB in 50 packages + pip3 install flake8 'flake8-junit-report==2.1.0' 'black==21.7b0' 'click==7.1.2' Collecting flake8 Downloading flake8-6.0.0-py2.py3-none-any.whl (57 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.8/57.8 kB 615.6 kB/s eta 0:00:00 Collecting flake8-junit-report==2.1.0 Downloading flake8-junit-report-2.1.0.tar.gz (3.1 kB) Preparing metadata (setup.py): started Preparing metadata (setup.py): finished with status 'done' Collecting black==21.7b0 Downloading black-21.7b0-py3-none-any.whl (141 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 141.2/141.2 kB 1.9 MB/s eta 0:00:00 Collecting click==7.1.2 Downloading click-7.1.2-py2.py3-none-any.whl (82 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.8/82.8 kB 1.5 MB/s eta 0:00:00 Collecting appdirs (from black==21.7b0) Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB) Collecting tomli<2.0.0,>=0.2.6 (from black==21.7b0) Downloading tomli-1.2.3-py3-none-any.whl (12 kB) Collecting regex>=2020.1.8 (from black==21.7b0) Downloading regex-2023.6.3-cp311-cp311-musllinux_1_1_x86_64.whl (751 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 751.1/751.1 kB 5.3 MB/s eta 0:00:00 Collecting pathspec<1,>=0.8.1 (from black==21.7b0) Downloading pathspec-0.11.1-py3-none-any.whl (29 kB) Collecting mypy-extensions>=0.4.3 (from black==21.7b0) Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB) Collecting mccabe<0.8.0,>=0.7.0 (from flake8) Downloading mccabe-0.7.0-py2.py3-none-any.whl (7.3 kB) Collecting pycodestyle<2.11.0,>=2.10.0 (from flake8) Downloading pycodestyle-2.10.0-py2.py3-none-any.whl (41 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.3/41.3 kB 731.3 kB/s eta 0:00:00 Collecting pyflakes<3.1.0,>=3.0.0 (from flake8) Downloading pyflakes-3.0.1-py2.py3-none-any.whl (62 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.8/62.8 kB 933.5 kB/s eta 0:00:00 Building wheels for collected packages: flake8-junit-report Building wheel for flake8-junit-report (setup.py): started Building wheel for flake8-junit-report (setup.py): finished with status 'done' Created wheel for flake8-junit-report: filename=flake8_junit_report-2.1.0-py3-none-any.whl size=3739 sha256=238195bdd0720360cb41b7b631dd94eafc6d63eddb77f407f4756f2447119785 Stored in directory: /root/.cache/pip/wheels/61/49/33/d490b7f9a42bd5abfb880d2af6c9e97ab4c0e6eb3441a38c19 Successfully built flake8-junit-report Installing collected packages: flake8-junit-report, appdirs, tomli, regex, pyflakes, pycodestyle, pathspec, mypy-extensions, mccabe, click, flake8, black Successfully installed appdirs-1.4.4 black-21.7b0 click-7.1.2 flake8-6.0.0 flake8-junit-report-2.1.0 mccabe-0.7.0 mypy-extensions-1.0.0 pathspec-0.11.1 pycodestyle-2.10.0 pyflakes-3.0.1 regex-2023.6.3 tomli-1.2.3 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv [notice] A new release of pip is available: 23.1.2 -> 23.2 [notice] To update, run: pip install --upgrade pip + black --check --diff ./jobserv ./runner ./tests ./jobserv_worker.py --- jobserv/api/build.py 2023-07-18 22:39:24.066144 +0000 +++ jobserv/api/build.py 2023-07-18 22:39:57.454589 +0000 @@ -226,12 +226,16 @@ r.status = BuildStatus.PASSED db.session.add(r) links = run.get("artifact-links") if Storage.LINK_FILE and links: - r.build = b # needed because its not committed when we do `create_artifacts_link` + r.build = ( + b # needed because its not committed when we do `create_artifacts_link` + ) s.create_artifacts_link(r, links) elif links: - logging.warning("unable to process artifacts links; storage backend does not support them") + logging.warning( + "unable to process artifacts links; storage backend does not support them" + ) db.session.commit() return jsendify({"build_id": b.build_id}, 201) would reformat jobserv/api/build.py --- tests/test_api_build.py 2023-07-18 22:39:24.070144 +0000 +++ tests/test_api_build.py 2023-07-18 22:39:58.152179 +0000 @@ -249,14 +249,22 @@ url = "/projects/%s/promoted-builds/release-X/" % self.project.name build = self.get_json(url)["build"] self.assertEqual("foo bar", build["annotation"]) # test v2 listing of artifacts - storage().list_artifacts.return_value = [{"name": "console.log", "size_bytes": 10}] + storage().list_artifacts.return_value = [ + {"name": "console.log", "size_bytes": 10} + ] url = "/projects/%s/promoted-builds/release-X/?version=v2" % self.project.name build = self.get_json(url)["build"] - self.assertEqual({"url": "http://localhost/projects/proj-1/builds/1/runs/run0/console.log", "size_bytes": 10}, build["artifacts"][0]) + self.assertEqual( + { + "url": "http://localhost/projects/proj-1/builds/1/runs/run0/console.log", + "size_bytes": 10, + }, + build["artifacts"][0], + ) def test_promote_post(self): b = Build.create(self.project) db.session.add(Run(b, "run0")) db.session.add(Run(b, "run1")) would reformat tests/test_api_build.py Oh no! 💥 💔 💥 2 files would be reformatted, 62 files would be left unchanged. Script completed with error(s) == 2023-07-18 22:40:05.400524: Finding artifacts to upload Uploading 0 items 0 bytes == 2023-07-18 22:40:05.812125: Runner has completed ________ | o o| Thumbs Down |___/\_|________ | _____|__| | | || |______| | | | | | | | | |_| |_|