# Run sent to worker: doanac-reckless == 2023-07-18 22:43:57.999337: Setting up runner on worker == 2023-07-18 22:44:00.206566: Steps to recreate inside simulator wget -O simulate.sh https://api.gavelci.us/projects/jobserv/builds/365/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:44:01.246096: 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:44:04.789512: Preparing bind mounts 2023-07-18 22:44:05.161221: INFO Creating secret: githubtok 2023-07-18 22:44:05.540041: INFO Creating secret: webhook-key 2023-07-18 22:44:05.939100: INFO Creating secret: milosz == 2023-07-18 22:44:06.658943: Creating container .netrc file 2023-07-18 22:44:07.063972: INFO Creating token for jobserv run access 2023-07-18 22:44:07.483443: INFO Creating a github token entry == 2023-07-18 22:44:08.305494: Preparing script == 2023-07-18 22:44:09.216483: Cloning git repository 2023-07-18 22:44:09.601446: INFO Clone_url: https://github.com/doanac/jobserv.git 2023-07-18 22:44:10.412162: INFO Checking to see if https://github.com/doanac/jobserv.git requires authentication. 2023-07-18 22:44:11.707550: INFO Server does not appear to need credentials for cloning 2023-07-18 22:44:12.137460: INFO Adding githubtok to .gitconfig 2023-07-18 22:44:12.551023: INFO Git install supports submodules Cloning into '/srv/gavelci-worker/runs/tmpl3rxjksb/repo'... 2023-07-18 22:44:14.658030: INFO Checking out: 78a856931bb629e2234dfe94e80b6ef6a61c8e8c Switched to branch 'jobserv-run' == 2023-07-18 22:44:15.787597: Setting up container environment 2023-07-18 22:44:16.165160: INFO Container environment variables: GH_PRNUM=94 GH_OWNER=foundriesio GH_REPO=jobserv GH_STATUS_URL=https://api.github.com/repos/foundriesio/jobserv/statuses/78a856931bb629e2234dfe94e80b6ef6a61c8e8c 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=78a856931bb629e2234dfe94e80b6ef6a61c8e8c H_PROJECT=jobserv H_BUILD=365 H_RUN=flake8 H_RUN_URL=https://api.gavelci.us/projects/jobserv/builds/365/runs/flake8/ H_WORKER=doanac-reckless == 2023-07-18 22:44:17.361022: Running script inside container 2023-07-18 22:44:17.832683: 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 835.1 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 2.0 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.7 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.4 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 741.5 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 1.2 MB/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=acabd24c12a1cc0b5845245c1ec8583dd4ca80c412fdd6989062869b6d75dab0 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:44:15.013155 +0000 +++ jobserv/api/build.py 2023-07-18 22:44:53.888043 +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": 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:44:15.017155 +0000 +++ tests/test_api_build.py 2023-07-18 22:44:54.681119 +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:45:01.507925: Finding artifacts to upload Uploading 0 items 0 bytes == 2023-07-18 22:45:01.927204: Runner has completed ________ | o o| Thumbs Down |___/\_|________ | _____|__| | | || |______| | | | | | | | | |_| |_|