Skip to content
This repository has been archived by the owner on Oct 13, 2023. It is now read-only.

art-2519 add check upstreampulls function #488

Merged
merged 11 commits into from
Nov 2, 2021

Conversation

Ximinhan
Copy link
Contributor

@Ximinhan Ximinhan commented Jul 29, 2021

add check imagestreams prs list function in doozer used by image-health check job to collect all opened pr of a target release.

@openshift-ci openshift-ci bot requested a review from sosiouxme July 29, 2021 16:39
from doozerlib import constants
from doozerlib.cli import cli, pass_runtime

github_token = os.getenv(constants.GIT_TOKEN)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Git != GitHub. There is no such thing called GIT_TOKEN. Would like to rename it to something like GITHUB_TOKEN.

repo = github_client.get_repo("openshift/ocp-build-data")


@cli.command("images:upstreampulls", short_help="Check upstream PRs in open status")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't seem to me that the verb name images:upstreampulls or the help message explains well about what it intends to do. Would like to have a better verb name like images:streams prs list for consistency and improved help message.


github_token = os.getenv(constants.GIT_TOKEN)
github_client = Github(github_token)
repo = github_client.get_repo("openshift/ocp-build-data")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

openshift/ocp-build-data shouldn't be hardcoded here. How could I run the doozer with my own fork of ocp-build-data?

Global variables should be avoided as long as you can.

Comment on lines 21 to 35
version = runtime.group.split("-")[-1]
retdata = {}
contents = repo.get_contents("images", ref="openshift-" + version)
for content_file in contents:
ydata = yaml.load(content_file.decoded_content, Loader=yaml.FullLoader)
if 'content' not in ydata:
continue
if 'git' not in ydata['content']['source']:
continue
upstream_project = ydata['content']['source']['git']['url'].split(':')[-1].split('/')[0]
upstream = ydata['content']['source']['git']['url'].split('/')[-1].split('.')[0]
if upstream_project == "openshift-priv":
xrepo = github_client.get_repo("openshift/" + upstream)
else:
xrepo = github_client.get_repo(upstream_project + "/" + upstream)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See https://github.com/openshift/doozer/blob/c7e31761b3ec312d4c3101bd3c93c94fc53c5025/doozerlib/cli/images_streams.py#L650 for how to correctly resolve the upstream repo url and branch for each image.

xrepo = github_client.get_repo(upstream_project + "/" + upstream)
pulls = xrepo.get_pulls(state='open', sort='created')
for pr in pulls:
if pr.user.login == "openshift-bot" and pr.base.ref == "release-" + version:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't hardcode the login name and branch name.
login should be configurable, e.g. via command line option, and the branch name is not always follow release-*. There are exceptions.

Comment on lines 55 to 62
for key, val in retdata.items():
if len(val) == 0:
continue
print(">[{}]".format(key))
for img, prs in val.items():
print(" -[{}]".format(img))
for pr in prs:
print(" {}".format(pr))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use yaml.dump

@Ximinhan Ximinhan requested a review from vfreex September 23, 2021 09:24
upstreams = []
github_client = Github(constants.GTIHUB_TOKEN)
for image_meta in runtime.ordered_image_metas():
time.sleep(1)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... why? with a proper github token the rate limiting should not kick in

runtime.initialize(clone_distgits=False, clone_source=False)
retdata = {}
upstreams = []
github_client = Github(constants.GTIHUB_TOKEN)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
github_client = Github(constants.GTIHUB_TOKEN)
github_client = Github(constants.GITHUB_TOKEN)

also I think you want to pass the contents of the env var, not its name:

Suggested change
github_client = Github(constants.GTIHUB_TOKEN)
github_client = Github(os.environ.get(constants.GITHUB_TOKEN))

doozerlib/constants.py Outdated Show resolved Hide resolved
def images_upstreampulls(runtime):
runtime.initialize(clone_distgits=False, clone_source=False)
retdata = {}
upstreams = []
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

efficiency isn't exactly important here, but just on principle i would not make this a list since order doesn't matter...

Suggested change
upstreams = []
upstreams = set()

Comment on lines 553 to 554
else:
upstreams.append(public_repo_url)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need for else
and if you follow my suggestion and make it a set then it would be

Suggested change
else:
upstreams.append(public_repo_url)
upstreams.add(public_repo_url)

public_source_repo = github_client.get_repo(f'{org}/{repo_name}')
pulls = public_source_repo.get_pulls(state='open', sort='created')
for pr in pulls:
time.sleep(1)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should go a lot faster without this

Suggested change
time.sleep(1)

for pr in pulls:
time.sleep(1)
if pr.user.login == github_client.get_user().login and pr.base.ref == source_repo_branch:
if pr.assignee is not None:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so... PRs with no assignee are just ignored?
e.g. openshift/kubernetes#934
I don't think the approach of looking at assignees is actually what we want. i know the original card says to nag people by slack, but i'm not sure we can accomplish that since we don't have a mapping of slack handles. what we can easily do is look up the owners email(s) in the metadata entries. i think that is the place to start.

Comment on lines 576 to 583
for key, val in retdata.items():
if len(val) == 0:
continue
print(">[{}]".format(key))
for img, prs in val.items():
print(" -[{}]".format(img))
for pr in prs:
print(" {}".format(pr))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

formatting yaml yourself is a recipe for disaster, how about just using the yaml module...

Copy link
Contributor

@sosiouxme sosiouxme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Works fine the way it is, just would like a few tweaks.

@@ -530,6 +532,40 @@ def prs():
pass


@prs.command('list', short_help='List all open prs for upstream repo')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i think the description here should note that the token env var is required

doozerlib/cli/images_streams.py Outdated Show resolved Hide resolved
Comment on lines 560 to 565
if owners_email not in retdata.keys():
retdata[owners_email] = {}
if public_repo_url not in retdata[owners_email].keys():
retdata[owners_email][public_repo_url] = []
retdata[owners_email][public_repo_url].append("[{} ][created_at:{}]".format(
pr.html_url, pr.created_at))
Copy link
Contributor

@sosiouxme sosiouxme Oct 28, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a bit more concise, and also frankly i don't see a reason to format this data at all:

Suggested change
if owners_email not in retdata.keys():
retdata[owners_email] = {}
if public_repo_url not in retdata[owners_email].keys():
retdata[owners_email][public_repo_url] = []
retdata[owners_email][public_repo_url].append("[{} ][created_at:{}]".format(
pr.html_url, pr.created_at))
retdata.setdefault(owners_email, {}).setdefault(public_repo_url, []).append(
dict(pr_url=pr.html_url, created_at=pr.created_at)
)

pulls = public_source_repo.get_pulls(state='open', sort='created')
for pr in pulls:
if pr.user.login == github_client.get_user().login and pr.base.ref == source_repo_branch:
owners_email = image_meta.config['owners'][0]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why only the first? why not spam them all?

Suggested change
owners_email = image_meta.config['owners'][0]
for owners_email in image_meta.config['owners']:

@openshift-bot
Copy link

Build #9

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-488/setup.py
py3 create: /mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3
py3 installdeps: -rrequirements-dev.txt
ERROR: invocation failed (exit code 1), logfile: /mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3/log/py3-1.log
================================== log start ===================================
Ignoring pygit2: markers 'python_version <= "3.4"' don't match your environment
Collecting autopep8
  Downloading autopep8-1.6.0-py2.py3-none-any.whl (45 kB)
Collecting coverage
  Downloading coverage-6.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (211 kB)
Collecting flake8
  Downloading flake8-4.0.1-py2.py3-none-any.whl (64 kB)
Collecting flexmock
  Downloading flexmock-0.10.10.tar.gz (49 kB)
Collecting mock
  Downloading mock-4.0.3-py3-none-any.whl (28 kB)
Collecting pygit2
  Downloading pygit2-1.7.0.tar.gz (276 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'done'
  Installing backend dependencies: started
  Installing backend dependencies: finished with status 'done'
    Preparing wheel metadata: started
    Preparing wheel metadata: finished with status 'done'
Collecting pylint
  Downloading pylint-2.11.1-py3-none-any.whl (392 kB)
Collecting pytest
  Downloading pytest-6.2.5-py3-none-any.whl (280 kB)
Collecting tox
  Downloading tox-3.24.4-py2.py3-none-any.whl (85 kB)
Collecting typing
  Downloading typing-3.7.4.3.tar.gz (78 kB)
Collecting typing-extensions
  Downloading typing_extensions-3.10.0.2-py3-none-any.whl (26 kB)
Collecting setuptools~=49.6.0
  Downloading setuptools-49.6.0-py3-none-any.whl (803 kB)
Collecting python-dateutil~=2.8.1
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting six>=1.5
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting toml
  Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting pycodestyle>=2.8.0
  Downloading pycodestyle-2.8.0-py2.py3-none-any.whl (42 kB)
Collecting importlib-metadata<4.3
  Downloading importlib_metadata-4.2.0-py3-none-any.whl (16 kB)
Collecting pyflakes<2.5.0,>=2.4.0
  Downloading pyflakes-2.4.0-py2.py3-none-any.whl (69 kB)
Collecting mccabe<0.7.0,>=0.6.0
  Downloading mccabe-0.6.1-py2.py3-none-any.whl (8.6 kB)
Collecting zipp>=0.5
  Downloading zipp-3.6.0-py3-none-any.whl (5.3 kB)
Collecting cached-property
  Using cached cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)
Collecting cffi>=1.4.0
  Using cached cffi-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (405 kB)
Collecting pycparser
  Using cached pycparser-2.20-py2.py3-none-any.whl (112 kB)
Collecting isort<6,>=4.2.5
  Downloading isort-5.9.3-py3-none-any.whl (106 kB)
Collecting astroid<2.9,>=2.8.0
  Downloading astroid-2.8.4-py3-none-any.whl (246 kB)
Collecting platformdirs>=2.2.0
  Downloading platformdirs-2.4.0-py3-none-any.whl (14 kB)
Collecting typed-ast<1.5,>=1.4.0
  Downloading typed_ast-1.4.3-cp36-cp36m-manylinux1_x86_64.whl (743 kB)
Collecting lazy-object-proxy>=1.4.0
  Downloading lazy_object_proxy-1.6.0-cp36-cp36m-manylinux1_x86_64.whl (55 kB)
Collecting wrapt<1.14,>=1.11
  Downloading wrapt-1.13.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (78 kB)
Collecting iniconfig
  Downloading iniconfig-1.1.1-py2.py3-none-any.whl (5.0 kB)
Collecting py>=1.8.2
  Using cached py-1.10.0-py2.py3-none-any.whl (97 kB)
Collecting pluggy<2.0,>=0.12
  Downloading pluggy-1.0.0-py2.py3-none-any.whl (13 kB)
Collecting packaging
  Downloading packaging-21.2-py3-none-any.whl (40 kB)
Collecting attrs>=19.2.0
  Using cached attrs-21.2.0-py2.py3-none-any.whl (53 kB)
Collecting virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0
  Downloading virtualenv-20.9.0-py2.py3-none-any.whl (5.6 MB)
Collecting filelock>=3.0.0
  Downloading filelock-3.3.2-py3-none-any.whl (9.7 kB)
Collecting pyparsing<3,>=2.0.2
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting distlib<1,>=0.3.1
  Downloading distlib-0.3.3-py2.py3-none-any.whl (496 kB)
Collecting importlib-resources>=1.0
  Downloading importlib_resources-5.4.0-py3-none-any.whl (28 kB)
Collecting backports.entry-points-selectable>=1.0.4
  Downloading backports.entry_points_selectable-1.1.0-py2.py3-none-any.whl (6.2 kB)
Building wheels for collected packages: flexmock, pygit2, typing
  Building wheel for flexmock (setup.py): started
  Building wheel for flexmock (setup.py): finished with status 'done'
  Created wheel for flexmock: filename=flexmock-0.10.10-py3-none-any.whl size=16353 sha256=d03079e4f99c043156ded4752d13cec5acb9bec9e755a507a08117bc9aaf2d41
  Stored in directory: /home/art/.cache/pip/wheels/43/15/89/a5cf84aecf9d70506737b676dff83a0b01adda7b99dc78888f
  Building wheel for pygit2 (PEP 517): started
  Building wheel for pygit2 (PEP 517): finished with status 'error'
  ERROR: Command errored out with exit status 1:
   command: /mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3/bin/python /mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmp6xzjgtnd
       cwd: /tmp/pip-install-6ewhv16r/pygit2_362d71ae35224d8697cc0c4f0139d45b
  Complete output (64 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.6
  creating build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/__init__.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/_build.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/_run.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/blame.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/callbacks.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/config.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/credentials.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/errors.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/ffi.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/index.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/packbuilder.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/refspec.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/remote.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/repository.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/settings.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/submodule.py -> build/lib.linux-x86_64-3.6/pygit2
  copying pygit2/utils.py -> build/lib.linux-x86_64-3.6/pygit2
  creating build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/attr.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/blame.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/buffer.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/callbacks.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/checkout.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/clone.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/common.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/config.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/describe.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/diff.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/errors.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/graph.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/index.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/indexer.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/merge.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/net.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/oid.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/pack.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/proxy.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/refspec.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/remote.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/repository.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/revert.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/stash.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/strarray.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/submodule.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/transport.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  copying pygit2/decl/types.h -> build/lib.linux-x86_64-3.6/pygit2/decl
  running build_ext
  generating cffi module 'build/temp.linux-x86_64-3.6/pygit2._libgit2.c'
  creating build/temp.linux-x86_64-3.6
  building 'pygit2._pygit2' extension
  creating build/temp.linux-x86_64-3.6/src
  gcc -pthread -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/local/include -I/mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3/include -I/usr/include/python3.6m -c src/blob.c -o build/temp.linux-x86_64-3.6/src/blob.o
  In file included from src/blob.c:30:
  src/blob.h:33:10: fatal error: git2.h: No such file or directory
   #include <git2.h>
            ^~~~~~~~
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
  ERROR: Failed building wheel for pygit2
  Building wheel for typing (setup.py): started
  Building wheel for typing (setup.py): finished with status 'done'
  Created wheel for typing: filename=typing-3.7.4.3-py3-none-any.whl size=26324 sha256=5f2dd4a204b21be5e6c82acfaf208b1db5979d2231c22c346a1d727c8e244c53
  Stored in directory: /home/art/.cache/pip/wheels/5f/63/c2/b85489bbea28cb5d36cfe197244f898428004fa3caa7a23116
Successfully built flexmock typing
Failed to build pygit2
ERROR: Could not build wheels for pygit2 which use PEP 517 and cannot be installed directly
WARNING: You are using pip version 21.1.2; however, version 21.3.1 is available.
You should consider upgrading via the '/mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3/bin/python -m pip install --upgrade pip' command.

=================================== log end ====================================
ERROR: could not install deps [-rrequirements-dev.txt]; v = InvocationError('/mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3/bin/python -m pip install -rrequirements-dev.txt', 1)
___________________________________ summary ____________________________________
ERROR:   py3: could not install deps [-rrequirements-dev.txt]; v = InvocationError('/mnt/workspace/jenkins/working/art-tools_doozer_PR-488/.tox/py3/bin/python -m pip install -rrequirements-dev.txt', 1)

@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@openshift-eng openshift-eng deleted a comment from openshift-bot Nov 2, 2021
@sosiouxme
Copy link
Contributor

Build #9

Failed to build pygit2
ERROR: Could not build wheels for pygit2 which use PEP 517 and cannot be installed directly

git fetch && git rebase origin/master should fix that up.

Copy link
Contributor

@sosiouxme sosiouxme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good, will merge with one little change

doozerlib/cli/images_streams.py Outdated Show resolved Hide resolved
@sosiouxme sosiouxme merged commit 4107d82 into openshift-eng:master Nov 2, 2021
vfreex added a commit to vfreex/doozer that referenced this pull request Nov 19, 2021
e810dcb Permit assemblies to use custom rhcos builds The RHCOS pipeline, when configured for a custom build, will bucket the resulting metadata files in s3 in a directory suffixed with `-custom`. In order to for assemblies to use custom RHCOS builds, we must try to find metadata in either the standard location or `-custom` location.
0a4d5ca [ART-3109] Use container.yaml to apply floating tags (openshift-eng#524)
e3e6315 ART-3437: Make bundle tag names configurable
36b3291 Prevent leading zero in semver (openshift-eng#527)
57af5c8 Revert "make bundle tag names configurable (openshift-eng#532)" (openshift-eng#533)
3a14f91 make bundle tag names configurable (openshift-eng#532)
3c16d82 Allow olm-bundle:print to skip when builds are missing
b3cc4c3 We are in the future
69e613e Update code to work with flexmock 0.11
4107d82 ART-2519 add check upstreampulls function (openshift-eng#488)
56325c6 bump-doozer: add annotated tag
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants