checkout_project_ref.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env python
  2. # internal use only
  3. # called by CI jobs when it uses a project related to IDF
  4. import os
  5. import json
  6. import argparse
  7. import subprocess
  8. def checkout_branch(proj_name, customized_revision, default_ref_name):
  9. try:
  10. ref_to_use = customized_revision[proj_name.lower()]
  11. except (KeyError, TypeError):
  12. ref_to_use = default_ref_name
  13. try:
  14. subprocess.check_call(["git", "checkout", ref_to_use])
  15. print("CI using ref {} for project {}".format(ref_to_use, proj_name))
  16. except subprocess.CalledProcessError:
  17. print("using default branch")
  18. if __name__ == "__main__":
  19. parser = argparse.ArgumentParser()
  20. parser.add_argument("project",
  21. help="the name of project")
  22. args = parser.parse_args()
  23. project_name = args.project
  24. customized_project_revisions = os.getenv("BOT_CUSTOMIZED_REVISION")
  25. if customized_project_revisions:
  26. customized_project_revisions = json.loads(customized_project_revisions)
  27. ci_ref_name = os.getenv("CI_COMMIT_REF_NAME")
  28. checkout_branch(project_name, customized_project_revisions, ci_ref_name)