saltext.github 1.0.0__tar.gz → 1.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. saltext_github-1.1.0/.codecov.yml +25 -0
  2. {saltext_github-1.0.0 → saltext_github-1.1.0}/.copier-answers.yml +17 -5
  3. saltext_github-1.1.0/.envrc.example +31 -0
  4. {saltext_github-1.0.0 → saltext_github-1.1.0}/.github/ISSUE_TEMPLATE/config.yml +2 -2
  5. {saltext_github-1.0.0 → saltext_github-1.1.0}/.github/PULL_REQUEST_TEMPLATE.md +3 -3
  6. saltext_github-1.1.0/.github/actions/upload-exitstatus/action.yml +33 -0
  7. saltext_github-1.1.0/.github/workflows/ci.yml +64 -0
  8. saltext_github-1.1.0/.github/workflows/clear-caches.yml +36 -0
  9. saltext_github-1.1.0/.github/workflows/deploy-docs-action.yml +85 -0
  10. saltext_github-1.1.0/.github/workflows/deploy-package-action.yml +211 -0
  11. saltext_github-1.1.0/.github/workflows/docs-action.yml +103 -0
  12. saltext_github-1.1.0/.github/workflows/finalize-release.yml +278 -0
  13. saltext_github-1.1.0/.github/workflows/get-changed-files.yml +64 -0
  14. saltext_github-1.1.0/.github/workflows/initiate-release.yml +319 -0
  15. saltext_github-1.1.0/.github/workflows/package-action.yml +59 -0
  16. saltext_github-1.1.0/.github/workflows/pr.yml +32 -0
  17. saltext_github-1.1.0/.github/workflows/pre-commit-action.yml +82 -0
  18. saltext_github-1.1.0/.github/workflows/prepare-release-action.yml +81 -0
  19. saltext_github-1.1.0/.github/workflows/push.yml +127 -0
  20. saltext_github-1.1.0/.github/workflows/set-resolution-action.yml +46 -0
  21. saltext_github-1.1.0/.github/workflows/tag-auto.yml +120 -0
  22. saltext_github-1.1.0/.github/workflows/tag.yml +87 -0
  23. saltext_github-1.1.0/.github/workflows/test-action.yml +401 -0
  24. {saltext_github-1.0.0 → saltext_github-1.1.0}/.gitignore +2 -0
  25. saltext_github-1.1.0/.pre-commit-config.yaml +247 -0
  26. {saltext_github-1.0.0 → saltext_github-1.1.0}/.pre-commit-hooks/check-cli-examples.py +21 -9
  27. saltext_github-1.1.0/.pre-commit-hooks/make-autodocs.py +308 -0
  28. saltext_github-1.1.0/CHANGELOG.md +80 -0
  29. saltext_github-1.1.0/CODE-OF-CONDUCT.md +135 -0
  30. saltext_github-1.1.0/CONTRIBUTING.md +17 -0
  31. saltext_github-1.1.0/Makefile +85 -0
  32. saltext_github-1.1.0/PKG-INFO +151 -0
  33. saltext_github-1.1.0/README.md +118 -0
  34. saltext_github-1.1.0/docs/_ext/ghdomain.py +12 -0
  35. saltext_github-1.1.0/docs/changelog.md +14 -0
  36. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/conf.py +5 -18
  37. saltext_github-1.1.0/docs/index.rst +60 -0
  38. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/ref/modules/index.rst +3 -0
  39. saltext_github-1.1.0/docs/ref/modules/saltext.github.modules.github_org.rst +5 -0
  40. saltext_github-1.1.0/docs/ref/modules/saltext.github.modules.github_repo.rst +5 -0
  41. saltext_github-1.1.0/docs/ref/modules/saltext.github.modules.github_user.rst +5 -0
  42. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.actions.rst +5 -0
  43. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.config.rst +5 -0
  44. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.deploy_key.rst +5 -0
  45. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.environment.rst +5 -0
  46. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.grains.rst +5 -0
  47. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.issue.rst +5 -0
  48. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.label.rst +5 -0
  49. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.milestone.rst +5 -0
  50. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.pages.rst +5 -0
  51. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.pull.rst +5 -0
  52. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.repo.rst +5 -0
  53. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.rst +23 -0
  54. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.ruleset.rst +5 -0
  55. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.saltutil.rst +5 -0
  56. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.state.rst +5 -0
  57. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.modules.test.rst +5 -0
  58. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.actions.rst +5 -0
  59. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.deploy_key.rst +5 -0
  60. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.environment.rst +5 -0
  61. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.label.rst +5 -0
  62. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.pages.rst +5 -0
  63. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.repo.rst +5 -0
  64. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.rst +15 -0
  65. saltext_github-1.1.0/docs/ref/resources/github/saltext.github.resources.github.states.ruleset.rst +5 -0
  66. saltext_github-1.1.0/docs/ref/resources/saltext.github.resources.github.rst +14 -0
  67. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/ref/states/index.rst +2 -0
  68. saltext_github-1.1.0/docs/ref/states/saltext.github.states.github_org.rst +5 -0
  69. saltext_github-1.1.0/docs/ref/states/saltext.github.states.github_repo.rst +5 -0
  70. saltext_github-1.1.0/docs/ref/utils/index.rst +40 -0
  71. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.actions.rst +5 -0
  72. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.cache.rst +5 -0
  73. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.client.rst +5 -0
  74. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.deploy_keys.rst +5 -0
  75. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.environments.rst +5 -0
  76. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.exceptions.rst +5 -0
  77. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.grains_files.rst +5 -0
  78. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.issues.rst +5 -0
  79. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.labels.rst +5 -0
  80. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.members.rst +5 -0
  81. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.milestones.rst +5 -0
  82. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.pages.rst +5 -0
  83. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.profile.rst +5 -0
  84. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.pulls.rst +5 -0
  85. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.repos.rst +5 -0
  86. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.resource.rst +5 -0
  87. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.rst +5 -0
  88. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.rulesets.rst +5 -0
  89. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.actions.rst +5 -0
  90. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.deploy_keys.rst +5 -0
  91. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.environments.rst +5 -0
  92. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.labels.rst +5 -0
  93. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.pages.rst +5 -0
  94. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.repo.rst +5 -0
  95. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.rst +5 -0
  96. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.statecores.rulesets.rst +5 -0
  97. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.teams.rst +5 -0
  98. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.gh.users.rst +5 -0
  99. saltext_github-1.1.0/docs/ref/utils/saltext.github.utils.rst +5 -0
  100. saltext_github-1.1.0/docs/topics/configuration.md +568 -0
  101. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/topics/installation.md +12 -3
  102. saltext_github-1.1.0/docs/topics/repo_resources.md +178 -0
  103. saltext_github-1.1.0/noxfile.py +509 -0
  104. saltext_github-1.1.0/pyproject.toml +350 -0
  105. {saltext_github-1.0.0 → saltext_github-1.1.0}/src/saltext/github/__init__.py +5 -2
  106. saltext_github-1.1.0/src/saltext/github/modules/github.py +1873 -0
  107. saltext_github-1.1.0/src/saltext/github/modules/github_org.py +667 -0
  108. saltext_github-1.1.0/src/saltext/github/modules/github_repo.py +1658 -0
  109. saltext_github-1.1.0/src/saltext/github/modules/github_user.py +75 -0
  110. saltext_github-1.1.0/src/saltext/github/resources/github/__init__.py +251 -0
  111. saltext_github-1.1.0/src/saltext/github/resources/github/modules/actions.py +175 -0
  112. saltext_github-1.1.0/src/saltext/github/resources/github/modules/config.py +69 -0
  113. saltext_github-1.1.0/src/saltext/github/resources/github/modules/deploy_key.py +122 -0
  114. saltext_github-1.1.0/src/saltext/github/resources/github/modules/environment.py +241 -0
  115. saltext_github-1.1.0/src/saltext/github/resources/github/modules/grains.py +18 -0
  116. saltext_github-1.1.0/src/saltext/github/resources/github/modules/issue.py +157 -0
  117. saltext_github-1.1.0/src/saltext/github/resources/github/modules/label.py +161 -0
  118. saltext_github-1.1.0/src/saltext/github/resources/github/modules/milestone.py +103 -0
  119. saltext_github-1.1.0/src/saltext/github/resources/github/modules/pages.py +149 -0
  120. saltext_github-1.1.0/src/saltext/github/resources/github/modules/pull.py +90 -0
  121. saltext_github-1.1.0/src/saltext/github/resources/github/modules/repo.py +155 -0
  122. saltext_github-1.1.0/src/saltext/github/resources/github/modules/ruleset.py +144 -0
  123. saltext_github-1.1.0/src/saltext/github/resources/github/modules/saltutil.py +24 -0
  124. saltext_github-1.1.0/src/saltext/github/resources/github/modules/state.py +116 -0
  125. saltext_github-1.1.0/src/saltext/github/resources/github/modules/test.py +29 -0
  126. saltext_github-1.1.0/src/saltext/github/resources/github/states/actions.py +117 -0
  127. saltext_github-1.1.0/src/saltext/github/resources/github/states/deploy_key.py +130 -0
  128. saltext_github-1.1.0/src/saltext/github/resources/github/states/environment.py +99 -0
  129. saltext_github-1.1.0/src/saltext/github/resources/github/states/label.py +71 -0
  130. saltext_github-1.1.0/src/saltext/github/resources/github/states/pages.py +92 -0
  131. saltext_github-1.1.0/src/saltext/github/resources/github/states/repo.py +108 -0
  132. saltext_github-1.1.0/src/saltext/github/resources/github/states/ruleset.py +81 -0
  133. {saltext_github-1.0.0 → saltext_github-1.1.0}/src/saltext/github/states/github.py +262 -226
  134. saltext_github-1.1.0/src/saltext/github/states/github_org.py +369 -0
  135. saltext_github-1.1.0/src/saltext/github/states/github_repo.py +722 -0
  136. saltext_github-1.1.0/src/saltext/github/utils/__init__.py +72 -0
  137. saltext_github-1.1.0/src/saltext/github/utils/gh/__init__.py +14 -0
  138. saltext_github-1.1.0/src/saltext/github/utils/gh/actions.py +195 -0
  139. saltext_github-1.1.0/src/saltext/github/utils/gh/cache.py +126 -0
  140. saltext_github-1.1.0/src/saltext/github/utils/gh/client.py +534 -0
  141. saltext_github-1.1.0/src/saltext/github/utils/gh/deploy_keys.py +121 -0
  142. saltext_github-1.1.0/src/saltext/github/utils/gh/environments.py +271 -0
  143. saltext_github-1.1.0/src/saltext/github/utils/gh/exceptions.py +28 -0
  144. saltext_github-1.1.0/src/saltext/github/utils/gh/grains_files.py +366 -0
  145. saltext_github-1.1.0/src/saltext/github/utils/gh/issues.py +193 -0
  146. saltext_github-1.1.0/src/saltext/github/utils/gh/labels.py +142 -0
  147. saltext_github-1.1.0/src/saltext/github/utils/gh/members.py +157 -0
  148. saltext_github-1.1.0/src/saltext/github/utils/gh/milestones.py +122 -0
  149. saltext_github-1.1.0/src/saltext/github/utils/gh/pages.py +128 -0
  150. saltext_github-1.1.0/src/saltext/github/utils/gh/profile.py +458 -0
  151. saltext_github-1.1.0/src/saltext/github/utils/gh/pulls.py +99 -0
  152. saltext_github-1.1.0/src/saltext/github/utils/gh/repos.py +465 -0
  153. saltext_github-1.1.0/src/saltext/github/utils/gh/resource.py +35 -0
  154. saltext_github-1.1.0/src/saltext/github/utils/gh/rulesets.py +191 -0
  155. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/__init__.py +70 -0
  156. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/actions.py +180 -0
  157. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/deploy_keys.py +241 -0
  158. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/environments.py +212 -0
  159. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/labels.py +116 -0
  160. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/pages.py +177 -0
  161. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/repo.py +249 -0
  162. saltext_github-1.1.0/src/saltext/github/utils/gh/statecores/rulesets.py +115 -0
  163. saltext_github-1.1.0/src/saltext/github/utils/gh/teams.py +375 -0
  164. saltext_github-1.1.0/src/saltext/github/utils/gh/users.py +87 -0
  165. saltext_github-1.1.0/src/saltext/github/version.py +1 -0
  166. saltext_github-1.1.0/src/saltext.github.egg-info/PKG-INFO +151 -0
  167. saltext_github-1.1.0/src/saltext.github.egg-info/SOURCES.txt +351 -0
  168. saltext_github-1.1.0/src/saltext.github.egg-info/requires.txt +5 -0
  169. saltext_github-1.1.0/src/saltext.github.egg-info/scm_file_list.json +346 -0
  170. saltext_github-1.1.0/src/saltext.github.egg-info/scm_version.json +8 -0
  171. {saltext_github-1.0.0 → saltext_github-1.1.0}/tests/conftest.py +22 -6
  172. saltext_github-1.1.0/tests/functional/conftest.py +297 -0
  173. saltext_github-1.1.0/tests/functional/modules/github/conftest.py +6 -0
  174. saltext_github-1.1.0/tests/functional/modules/github/test_accounts.py +41 -0
  175. saltext_github-1.1.0/tests/functional/modules/github/test_issues.py +127 -0
  176. saltext_github-1.1.0/tests/functional/modules/github/test_meta.py +9 -0
  177. saltext_github-1.1.0/tests/functional/modules/github/test_milestones.py +71 -0
  178. saltext_github-1.1.0/tests/functional/modules/github/test_profiles.py +88 -0
  179. saltext_github-1.1.0/tests/functional/modules/github/test_prs.py +60 -0
  180. saltext_github-1.1.0/tests/functional/modules/github/test_query.py +36 -0
  181. saltext_github-1.1.0/tests/functional/modules/github/test_repos.py +105 -0
  182. saltext_github-1.1.0/tests/functional/modules/github/test_rulesets.py +146 -0
  183. saltext_github-1.1.0/tests/functional/modules/github/test_sdb_profiles.py +34 -0
  184. saltext_github-1.1.0/tests/functional/modules/github/test_teams.py +233 -0
  185. saltext_github-1.1.0/tests/functional/modules/github/test_users.py +59 -0
  186. saltext_github-1.1.0/tests/functional/modules/github_org/conftest.py +6 -0
  187. saltext_github-1.1.0/tests/functional/modules/github_org/test_members.py +62 -0
  188. saltext_github-1.1.0/tests/functional/modules/github_org/test_org.py +22 -0
  189. saltext_github-1.1.0/tests/functional/modules/github_org/test_owner.py +70 -0
  190. saltext_github-1.1.0/tests/functional/modules/github_org/test_rulesets.py +49 -0
  191. saltext_github-1.1.0/tests/functional/modules/github_org/test_teams.py +189 -0
  192. saltext_github-1.1.0/tests/functional/modules/github_repo/conftest.py +6 -0
  193. saltext_github-1.1.0/tests/functional/modules/github_repo/test_actions_secrets.py +50 -0
  194. saltext_github-1.1.0/tests/functional/modules/github_repo/test_app_auth.py +241 -0
  195. saltext_github-1.1.0/tests/functional/modules/github_repo/test_app_token.py +49 -0
  196. saltext_github-1.1.0/tests/functional/modules/github_repo/test_deploy_keys.py +55 -0
  197. saltext_github-1.1.0/tests/functional/modules/github_repo/test_environments.py +71 -0
  198. saltext_github-1.1.0/tests/functional/modules/github_repo/test_issues.py +53 -0
  199. saltext_github-1.1.0/tests/functional/modules/github_repo/test_labels.py +63 -0
  200. saltext_github-1.1.0/tests/functional/modules/github_repo/test_milestones.py +33 -0
  201. saltext_github-1.1.0/tests/functional/modules/github_repo/test_owner.py +190 -0
  202. saltext_github-1.1.0/tests/functional/modules/github_repo/test_pages.py +63 -0
  203. saltext_github-1.1.0/tests/functional/modules/github_repo/test_pulls.py +6 -0
  204. saltext_github-1.1.0/tests/functional/modules/github_repo/test_repo.py +123 -0
  205. saltext_github-1.1.0/tests/functional/modules/github_repo/test_rulesets.py +50 -0
  206. saltext_github-1.1.0/tests/functional/modules/github_repo/test_workflow_permissions.py +26 -0
  207. saltext_github-1.1.0/tests/functional/modules/github_user/conftest.py +6 -0
  208. saltext_github-1.1.0/tests/functional/modules/github_user/test_info.py +26 -0
  209. saltext_github-1.1.0/tests/functional/modules/github_user/test_keys.py +25 -0
  210. saltext_github-1.1.0/tests/functional/resources/conftest.py +134 -0
  211. saltext_github-1.1.0/tests/functional/resources/modules/__init__.py +0 -0
  212. saltext_github-1.1.0/tests/functional/resources/modules/test_actions.py +31 -0
  213. saltext_github-1.1.0/tests/functional/resources/modules/test_deploy_key.py +16 -0
  214. saltext_github-1.1.0/tests/functional/resources/modules/test_environment.py +28 -0
  215. saltext_github-1.1.0/tests/functional/resources/modules/test_grains.py +69 -0
  216. saltext_github-1.1.0/tests/functional/resources/modules/test_issue.py +13 -0
  217. saltext_github-1.1.0/tests/functional/resources/modules/test_label.py +14 -0
  218. saltext_github-1.1.0/tests/functional/resources/modules/test_milestone.py +38 -0
  219. saltext_github-1.1.0/tests/functional/resources/modules/test_pages.py +21 -0
  220. saltext_github-1.1.0/tests/functional/resources/modules/test_pull.py +4 -0
  221. saltext_github-1.1.0/tests/functional/resources/modules/test_repo.py +42 -0
  222. saltext_github-1.1.0/tests/functional/resources/modules/test_ruleset.py +16 -0
  223. saltext_github-1.1.0/tests/functional/resources/modules/test_state.py +126 -0
  224. saltext_github-1.1.0/tests/functional/resources/modules/test_test.py +5 -0
  225. saltext_github-1.1.0/tests/functional/resources/states/__init__.py +0 -0
  226. saltext_github-1.1.0/tests/functional/resources/states/conftest.py +54 -0
  227. saltext_github-1.1.0/tests/functional/resources/states/test_actions.py +47 -0
  228. saltext_github-1.1.0/tests/functional/resources/states/test_deploy_key.py +97 -0
  229. saltext_github-1.1.0/tests/functional/resources/states/test_environment.py +33 -0
  230. saltext_github-1.1.0/tests/functional/resources/states/test_label.py +53 -0
  231. saltext_github-1.1.0/tests/functional/resources/states/test_pages.py +35 -0
  232. saltext_github-1.1.0/tests/functional/resources/states/test_repo.py +44 -0
  233. saltext_github-1.1.0/tests/functional/resources/states/test_ruleset.py +34 -0
  234. saltext_github-1.1.0/tests/functional/resources/test_connection.py +339 -0
  235. saltext_github-1.1.0/tests/functional/resources/test_grains_files.py +191 -0
  236. saltext_github-1.1.0/tests/functional/resources/test_multi_profile.py +113 -0
  237. saltext_github-1.1.0/tests/functional/resources/test_persistent_cache.py +191 -0
  238. saltext_github-1.1.0/tests/functional/states/__init__.py +0 -0
  239. saltext_github-1.1.0/tests/functional/states/github/__init__.py +0 -0
  240. saltext_github-1.1.0/tests/functional/states/github/conftest.py +11 -0
  241. saltext_github-1.1.0/tests/functional/states/github/test_repo.py +127 -0
  242. saltext_github-1.1.0/tests/functional/states/github/test_ruleset.py +157 -0
  243. saltext_github-1.1.0/tests/functional/states/github/test_team.py +217 -0
  244. saltext_github-1.1.0/tests/functional/states/github/test_user.py +66 -0
  245. saltext_github-1.1.0/tests/functional/states/github_org/__init__.py +0 -0
  246. saltext_github-1.1.0/tests/functional/states/github_org/conftest.py +11 -0
  247. saltext_github-1.1.0/tests/functional/states/github_org/test_member.py +70 -0
  248. saltext_github-1.1.0/tests/functional/states/github_org/test_ruleset.py +97 -0
  249. saltext_github-1.1.0/tests/functional/states/github_org/test_team.py +167 -0
  250. saltext_github-1.1.0/tests/functional/states/github_repo/__init__.py +0 -0
  251. saltext_github-1.1.0/tests/functional/states/github_repo/conftest.py +11 -0
  252. saltext_github-1.1.0/tests/functional/states/github_repo/test_actions_secret.py +75 -0
  253. saltext_github-1.1.0/tests/functional/states/github_repo/test_deploy_key.py +222 -0
  254. saltext_github-1.1.0/tests/functional/states/github_repo/test_environment.py +150 -0
  255. saltext_github-1.1.0/tests/functional/states/github_repo/test_label.py +91 -0
  256. saltext_github-1.1.0/tests/functional/states/github_repo/test_owner.py +91 -0
  257. saltext_github-1.1.0/tests/functional/states/github_repo/test_pages.py +96 -0
  258. saltext_github-1.1.0/tests/functional/states/github_repo/test_repo.py +155 -0
  259. saltext_github-1.1.0/tests/functional/states/github_repo/test_ruleset.py +102 -0
  260. saltext_github-1.1.0/tests/functional/states/github_repo/test_workflow_permissions.py +76 -0
  261. saltext_github-1.1.0/tests/integration/__init__.py +0 -0
  262. {saltext_github-1.0.0 → saltext_github-1.1.0}/tests/integration/conftest.py +5 -5
  263. saltext_github-1.1.0/tests/integration/modules/__init__.py +0 -0
  264. saltext_github-1.1.0/tests/integration/resources/__init__.py +0 -0
  265. saltext_github-1.1.0/tests/integration/states/__init__.py +0 -0
  266. saltext_github-1.1.0/tests/support/__init__.py +0 -0
  267. saltext_github-1.1.0/tests/support/github/__init__.py +132 -0
  268. saltext_github-1.1.0/tests/support/github/base.py +369 -0
  269. saltext_github-1.1.0/tests/support/github/entities.py +1403 -0
  270. saltext_github-1.1.0/tests/support/github/routes/__init__.py +35 -0
  271. saltext_github-1.1.0/tests/support/github/routes/actions.py +79 -0
  272. saltext_github-1.1.0/tests/support/github/routes/app.py +57 -0
  273. saltext_github-1.1.0/tests/support/github/routes/contents.py +15 -0
  274. saltext_github-1.1.0/tests/support/github/routes/deploy_keys.py +32 -0
  275. saltext_github-1.1.0/tests/support/github/routes/environments.py +70 -0
  276. saltext_github-1.1.0/tests/support/github/routes/issues.py +56 -0
  277. saltext_github-1.1.0/tests/support/github/routes/labels.py +44 -0
  278. saltext_github-1.1.0/tests/support/github/routes/meta.py +22 -0
  279. saltext_github-1.1.0/tests/support/github/routes/milestones.py +19 -0
  280. saltext_github-1.1.0/tests/support/github/routes/orgs.py +63 -0
  281. saltext_github-1.1.0/tests/support/github/routes/pages.py +47 -0
  282. saltext_github-1.1.0/tests/support/github/routes/repos.py +86 -0
  283. saltext_github-1.1.0/tests/support/github/routes/rulesets.py +75 -0
  284. saltext_github-1.1.0/tests/support/github/routes/teams.py +147 -0
  285. saltext_github-1.1.0/tests/support/github/routing.py +73 -0
  286. saltext_github-1.1.0/tests/support/github/state.py +233 -0
  287. saltext_github-1.1.0/tests/unit/__init__.py +0 -0
  288. {saltext_github-1.0.0 → saltext_github-1.1.0}/tests/unit/conftest.py +3 -3
  289. saltext_github-1.1.0/tests/unit/modules/__init__.py +0 -0
  290. saltext_github-1.1.0/tests/unit/modules/test_github.py +169 -0
  291. saltext_github-1.1.0/tests/unit/modules/test_github_org.py +42 -0
  292. saltext_github-1.1.0/tests/unit/resources/__init__.py +0 -0
  293. saltext_github-1.1.0/tests/unit/states/__init__.py +0 -0
  294. saltext_github-1.1.0/tests/unit/states/test_error_handling.py +138 -0
  295. saltext_github-1.1.0/tests/unit/states/test_github.py +123 -0
  296. saltext_github-1.1.0/tests/unit/states/test_github_failures.py +225 -0
  297. saltext_github-1.1.0/tests/unit/states/test_github_org.py +30 -0
  298. saltext_github-1.1.0/tests/unit/utils/__init__.py +0 -0
  299. saltext_github-1.1.0/tests/unit/utils/conftest.py +19 -0
  300. saltext_github-1.1.0/tests/unit/utils/test_cache.py +113 -0
  301. saltext_github-1.1.0/tests/unit/utils/test_client.py +267 -0
  302. saltext_github-1.1.0/tests/unit/utils/test_grains_files.py +411 -0
  303. saltext_github-1.1.0/tests/unit/utils/test_profile.py +129 -0
  304. saltext_github-1.1.0/tests/unit/utils/test_repos.py +60 -0
  305. saltext_github-1.1.0/tests/unit/utils/test_rulesets.py +23 -0
  306. saltext_github-1.1.0/tests/unit/utils/test_statecores.py +40 -0
  307. saltext_github-1.1.0/tests/unit/utils/test_statecores_environments.py +44 -0
  308. saltext_github-1.1.0/tests/unit/utils/test_statecores_repo.py +71 -0
  309. saltext_github-1.1.0/tests/unit/utils/test_teams.py +16 -0
  310. saltext_github-1.1.0/tools/coverage_dev.py +87 -0
  311. saltext_github-1.1.0/tools/helpers/__init__.py +0 -0
  312. saltext_github-1.1.0/tools/helpers/cmd.py +334 -0
  313. saltext_github-1.1.0/tools/helpers/copier.py +128 -0
  314. saltext_github-1.1.0/tools/helpers/git.py +30 -0
  315. saltext_github-1.1.0/tools/helpers/pre_commit.py +276 -0
  316. saltext_github-1.1.0/tools/helpers/prompt.py +54 -0
  317. saltext_github-1.1.0/tools/helpers/venv.py +302 -0
  318. saltext_github-1.1.0/tools/hook_group.py +26 -0
  319. saltext_github-1.1.0/tools/initialize.py +54 -0
  320. saltext_github-1.1.0/tools/pre_commit_quiet.py +23 -0
  321. saltext_github-1.1.0/tools/version.py +94 -0
  322. saltext_github-1.0.0/.coveragerc +0 -42
  323. saltext_github-1.0.0/.github/ISSUE_TEMPLATE.md +0 -11
  324. saltext_github-1.0.0/.github/workflows/pr.yml +0 -21
  325. saltext_github-1.0.0/.github/workflows/tag.yml +0 -33
  326. saltext_github-1.0.0/.pre-commit-config.yaml +0 -139
  327. saltext_github-1.0.0/.pre-commit-hooks/make-autodocs.py +0 -118
  328. saltext_github-1.0.0/.pylintrc +0 -681
  329. saltext_github-1.0.0/CHANGELOG.md +0 -13
  330. saltext_github-1.0.0/CODE-OF-CONDUCT.md +0 -127
  331. saltext_github-1.0.0/CONTRIBUTING.md +0 -14
  332. saltext_github-1.0.0/PKG-INFO +0 -142
  333. saltext_github-1.0.0/README.md +0 -87
  334. saltext_github-1.0.0/docs/changelog.md +0 -12
  335. saltext_github-1.0.0/docs/index.rst +0 -35
  336. saltext_github-1.0.0/docs/ref/utils/index.rst +0 -12
  337. saltext_github-1.0.0/docs/ref/utils/saltext.github.utils.github.rst +0 -5
  338. saltext_github-1.0.0/noxfile.py +0 -525
  339. saltext_github-1.0.0/pyproject.toml +0 -153
  340. saltext_github-1.0.0/setup.py +0 -5
  341. saltext_github-1.0.0/src/saltext/github/modules/github.py +0 -2195
  342. saltext_github-1.0.0/src/saltext/github/utils/github.py +0 -64
  343. saltext_github-1.0.0/src/saltext/github/version.py +0 -1
  344. saltext_github-1.0.0/src/saltext.github.egg-info/PKG-INFO +0 -142
  345. saltext_github-1.0.0/src/saltext.github.egg-info/SOURCES.txt +0 -73
  346. saltext_github-1.0.0/src/saltext.github.egg-info/not-zip-safe +0 -1
  347. saltext_github-1.0.0/src/saltext.github.egg-info/requires.txt +0 -32
  348. saltext_github-1.0.0/tests/functional/conftest.py +0 -150
  349. saltext_github-1.0.0/tests/unit/modules/test_github.py +0 -204
  350. saltext_github-1.0.0/tests/unit/states/test_github.py +0 -286
  351. {saltext_github-1.0.0 → saltext_github-1.1.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  352. {saltext_github-1.0.0 → saltext_github-1.1.0}/.github/ISSUE_TEMPLATE/docs.md +0 -0
  353. {saltext_github-1.0.0 → saltext_github-1.1.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  354. {saltext_github-1.0.0 → saltext_github-1.1.0}/.github/ISSUE_TEMPLATE/tech-debt.md +0 -0
  355. {saltext_github-1.0.0 → saltext_github-1.1.0}/LICENSE +0 -0
  356. {saltext_github-1.0.0 → saltext_github-1.1.0}/NOTICE +0 -0
  357. {saltext_github-1.0.0 → saltext_github-1.1.0}/changelog/.template.jinja +0 -0
  358. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/Makefile +0 -0
  359. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/_ext/saltdomain.py +0 -0
  360. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/_static/.gitkeep +0 -0
  361. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/make.bat +0 -0
  362. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/ref/.gitkeep +0 -0
  363. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/ref/modules/saltext.github.modules.github.rst +0 -0
  364. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/ref/states/saltext.github.states.github.rst +0 -0
  365. {saltext_github-1.0.0 → saltext_github-1.1.0}/docs/sitevars.rst +0 -0
  366. {saltext_github-1.0.0 → saltext_github-1.1.0}/setup.cfg +0 -0
  367. {saltext_github-1.0.0 → saltext_github-1.1.0}/src/saltext/github/modules/__init__.py +0 -0
  368. {saltext_github-1.0.0/src/saltext/github/states → saltext_github-1.1.0/src/saltext/github/resources}/__init__.py +0 -0
  369. {saltext_github-1.0.0/src/saltext/github/utils → saltext_github-1.1.0/src/saltext/github/resources/github/modules}/__init__.py +0 -0
  370. {saltext_github-1.0.0/tests → saltext_github-1.1.0/src/saltext/github/resources/github/states}/__init__.py +0 -0
  371. {saltext_github-1.0.0/tests/functional → saltext_github-1.1.0/src/saltext/github/states}/__init__.py +0 -0
  372. {saltext_github-1.0.0 → saltext_github-1.1.0}/src/saltext.github.egg-info/dependency_links.txt +0 -0
  373. {saltext_github-1.0.0 → saltext_github-1.1.0}/src/saltext.github.egg-info/entry_points.txt +0 -0
  374. {saltext_github-1.0.0 → saltext_github-1.1.0}/src/saltext.github.egg-info/top_level.txt +0 -0
  375. {saltext_github-1.0.0/tests/functional/modules → saltext_github-1.1.0/tests}/__init__.py +0 -0
  376. {saltext_github-1.0.0/tests/functional/states → saltext_github-1.1.0/tests/functional}/__init__.py +0 -0
  377. {saltext_github-1.0.0/tests/integration → saltext_github-1.1.0/tests/functional/modules}/__init__.py +0 -0
  378. {saltext_github-1.0.0/tests/integration/modules → saltext_github-1.1.0/tests/functional/modules/github}/__init__.py +0 -0
  379. {saltext_github-1.0.0/tests/integration/states → saltext_github-1.1.0/tests/functional/modules/github_org}/__init__.py +0 -0
  380. {saltext_github-1.0.0/tests/unit → saltext_github-1.1.0/tests/functional/modules/github_repo}/__init__.py +0 -0
  381. {saltext_github-1.0.0/tests/unit/modules → saltext_github-1.1.0/tests/functional/modules/github_user}/__init__.py +0 -0
  382. {saltext_github-1.0.0/tests/unit/states → saltext_github-1.1.0/tests/functional/resources}/__init__.py +0 -0
@@ -0,0 +1,25 @@
1
+ ---
2
+ coverage:
3
+ status:
4
+ project:
5
+ default: false
6
+ app:
7
+ informational: true
8
+ paths:
9
+ - src/
10
+ tests:
11
+ informational: true
12
+ paths:
13
+ - tests/
14
+ patch:
15
+ default: false
16
+ app:
17
+ informational: true
18
+ paths:
19
+ - src/
20
+ tests:
21
+ informational: true
22
+ paths:
23
+ - tests/
24
+ github_checks:
25
+ annotations: false
@@ -1,6 +1,6 @@
1
1
  # Autogenerated. Do not edit this by hand, use `copier update`.
2
2
  ---
3
- _commit: 0.3.7
3
+ _commit: 0.11.0
4
4
  _src_path: https://github.com/lkubb/salt-extension-copier
5
5
  author: EITR Technologies, LLC
6
6
  author_email: devops@eitr.tech
@@ -10,19 +10,31 @@ deploy_docs: rolling
10
10
  docs_url: https://salt-extensions.github.io/saltext-github/
11
11
  integration_name: GitHub
12
12
  license: apache
13
+ linux_test_distros:
14
+ - Ubuntu
13
15
  loaders:
14
16
  - module
17
+ - resource
15
18
  - state
16
- max_salt_version: 3007
19
+ max_salt_version: '3008'
17
20
  no_saltext_namespace: false
21
+ os_support:
22
+ - Linux
23
+ - macOS
24
+ - Windows
18
25
  package_name: github
19
26
  project_name: github
20
- python_requires: '3.8'
21
- salt_version: '3005'
27
+ push_secret: ''
28
+ python_requires: '3.11'
29
+ relax_pylint: false
30
+ salt_version: '3006'
22
31
  source_url: https://github.com/salt-extensions/saltext-github
23
32
  ssh_fixtures: false
24
33
  summary: Salt Extension for interacting with GitHub
25
34
  test_containers: false
26
35
  tracker_url: https://github.com/salt-extensions/saltext-github/issues
36
+ typing: false
37
+ ubuntu_releases:
38
+ - '26.04'
27
39
  url: https://github.com/salt-extensions/saltext-github
28
- workflows: org
40
+ venv_python: '3.14'
@@ -0,0 +1,31 @@
1
+ layout_saltext() {
2
+ # --skip-install only installs the project when the venv is freshly
3
+ # created or pyproject.toml changed since the last install.
4
+ # Run `make dev` to force a full synchronization.
5
+ VIRTUAL_ENV="$(python3 tools/initialize.py --skip-install --print-venv)"
6
+ PATH_add "$VIRTUAL_ENV/bin"
7
+ export VIRTUAL_ENV
8
+ }
9
+
10
+ # Uncomment to override the Python version for the development venv,
11
+ # e.g. when the configured `venv_python` is hard to come by locally:
12
+ # export VENV_PYTHON=3.13
13
+
14
+ # Uncomment to inherit system-wide packages in the development venvs,
15
+ # e.g. when dependencies are only available as system packages:
16
+ # export VENV_SYSTEM_SITE_PACKAGES=1
17
+
18
+ # Uncomment to skip the actionlint hook locally when it cannot be built,
19
+ # e.g. for lack of a Go toolchain. It still runs in CI. Multiple hooks
20
+ # can be specified as a comma-separated list. Other candidates for skipping
21
+ # on specific platforms are:
22
+ # * ty: Only auto-installed on Windows/Linux/macOS. On other platforms,
23
+ # requires a locally installed `uv` binary and Rust toolchain since
24
+ # no binary wheels are available for them.
25
+ # * zizmor: Only required on Windows/Linux/macOS, other platforms skip it
26
+ # automatically when not installed via external means.
27
+ # Requires a Rust toolchain in case no binary wheels are available for
28
+ # the architecture an otherwise supported OS runs on.
29
+ # export SKIP=actionlint
30
+
31
+ layout_saltext
@@ -10,5 +10,5 @@ contact_links:
10
10
  url: https://web.libera.chat/#salt
11
11
  about: Please ask and answer questions here.
12
12
  - name: Security vulnerabilities
13
- email: saltproject-security.pdl@broadcom.com
14
- about: Please report security vulnerabilities here.
13
+ url: https://github.com/saltstack/salt/blob/master/SECURITY.md
14
+ about: Please report security vulnerabilities to saltproject-security.pdl@broadcom.com.
@@ -10,10 +10,10 @@ Remove this section if not relevant
10
10
  Remove this section if not relevant
11
11
 
12
12
  ### Merge requirements satisfied?
13
- **[NOTICE] Bug fixes or features added to Salt require tests.**
14
- <!-- Please review the [test documentation](https://docs.saltproject.io/en/master/topics/tutorials/writing_tests.html) for details on how to implement tests into Salt's test suite. -->
13
+ **[NOTICE] Bug fixes or new features require tests.**
14
+ <!-- Please review the [salt-extensions](https://salt-extensions.github.io/salt-extension-copier/topics/testing/writing.html) and [Salt test documentation](https://docs.saltproject.io/en/master/topics/tutorials/writing_tests.html) for details on how to implement tests for your changes. -->
15
15
  - [ ] Docs
16
- - [ ] Changelog - https://docs.saltproject.io/en/master/topics/development/changelog.html
16
+ - [ ] Changelog - https://salt-extensions.github.io/salt-extension-copier/topics/documenting/changelog.html#procedure
17
17
  - [ ] Tests written/updated
18
18
 
19
19
  ### Commits signed with GPG?
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: upload-exitstatus
3
+ description: Upload a job's status as an artifact
4
+ inputs:
5
+ artifact_prefix:
6
+ required: false
7
+ default: exitstatus-
8
+ name:
9
+ required: false
10
+ default: ''
11
+
12
+ runs:
13
+ using: composite
14
+
15
+ steps:
16
+
17
+ - name: Set Exit Status
18
+ if: ${{ !cancelled() }}
19
+ env:
20
+ JOB_STATUS: ${{ job.status }}
21
+ OUTFILE: exitstatus/${{ inputs.name == '' && github.job || inputs.name }}
22
+ shell: bash
23
+ run: |
24
+ mkdir exitstatus
25
+ echo "${JOB_STATUS}" > "$OUTFILE"
26
+
27
+ - name: Upload Exit Status
28
+ if: ${{ !cancelled() }}
29
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
30
+ with:
31
+ name: ${{ inputs.artifact_prefix }}${{ inputs.name == '' && github.job || inputs.name }}
32
+ path: exitstatus
33
+ if-no-files-found: error
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: CI
3
+
4
+ on:
5
+ workflow_call:
6
+ inputs:
7
+ checkout-ref:
8
+ required: false
9
+ type: string
10
+ default: ''
11
+
12
+ permissions: {}
13
+
14
+ jobs:
15
+ get-changed-files:
16
+ name: Get Changed Files
17
+ uses: $/.github/workflows/get-changed-files.yml
18
+ with:
19
+ checkout-ref: ${{ inputs.checkout-ref || github.sha }}
20
+ permissions:
21
+ contents: read
22
+ pull-requests: read # for dorny/paths-filter to read pull requests
23
+
24
+ pre-commit:
25
+ name: Pre-Commit
26
+ needs:
27
+ - get-changed-files
28
+ uses: $/.github/workflows/pre-commit-action.yml
29
+ with:
30
+ changed-files: ${{ needs.get-changed-files.outputs.changed-files }}
31
+ checkout-ref: ${{ inputs.checkout-ref || github.sha }}
32
+ permissions:
33
+ contents: read
34
+
35
+ test:
36
+ name: Test
37
+ needs:
38
+ - pre-commit
39
+ uses: $/.github/workflows/test-action.yml
40
+ with:
41
+ checkout-ref: ${{ inputs.checkout-ref || github.sha }}
42
+ permissions:
43
+ contents: read
44
+ id-token: write # codecov uploads
45
+
46
+ docs:
47
+ name: Docs
48
+ needs:
49
+ - pre-commit
50
+ uses: $/.github/workflows/docs-action.yml
51
+ with:
52
+ checkout-ref: ${{ inputs.checkout-ref || github.sha }}
53
+ permissions:
54
+ contents: read
55
+
56
+ build-python-package:
57
+ name: Python Package
58
+ needs:
59
+ - pre-commit
60
+ uses: $/.github/workflows/package-action.yml
61
+ with:
62
+ checkout-ref: ${{ inputs.checkout-ref || github.sha }}
63
+ permissions:
64
+ contents: read
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: Clear Actions Caches
3
+
4
+ on:
5
+ workflow_dispatch:
6
+ inputs:
7
+ key:
8
+ description: Only delete the cache with this key. Deletes all caches when empty.
9
+ required: false
10
+ type: string
11
+ default: ""
12
+
13
+ concurrency:
14
+ group: ${{ github.workflow }}-${{ github.ref }}
15
+ cancel-in-progress: true
16
+
17
+ permissions: {}
18
+
19
+ jobs:
20
+ clear-caches:
21
+ name: Clear Actions Caches
22
+ runs-on: ubuntu-26.04
23
+ permissions:
24
+ actions: write # Delete caches
25
+
26
+ steps:
27
+ - name: Clear caches
28
+ env:
29
+ GH_TOKEN: ${{ github.token }}
30
+ KEY: ${{ inputs.key }}
31
+ run: |
32
+ if [ -n "$KEY" ]; then
33
+ gh cache delete --repo "$GITHUB_REPOSITORY" -- "$KEY"
34
+ else
35
+ gh cache delete --repo "$GITHUB_REPOSITORY" --all --succeed-on-no-caches
36
+ fi
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: Publish Documentation
3
+
4
+ on:
5
+ workflow_call:
6
+ inputs:
7
+ # This is the name of the regular artifact that should
8
+ # be transformed into a GitHub Pages deployment.
9
+ artifact-name:
10
+ type: string
11
+ required: false
12
+ default: html-docs
13
+ # The workflow run that hosts the docs artifact. Defaults to
14
+ # the triggering run (`workflow_run` trigger) or the current one.
15
+ run-id:
16
+ type: string
17
+ required: false
18
+ default: ''
19
+
20
+
21
+ permissions: {}
22
+
23
+ jobs:
24
+
25
+ # The released docs are not versioned currently, only the latest ones are deployed.
26
+ #
27
+ # Versioning support would require either (better):
28
+ # * Rebuilding docs for all versions when a new release is made
29
+ # * Version selector support in `furo`: https://github.com/pradyunsg/furo/pull/500
30
+ #
31
+ # or (more basic):
32
+ # * using the `gh-pages` branch and peaceiris/actions-gh-pages
33
+ # to be able to deploy to subdirectories. The implementation via
34
+ # actions/deploy-pages always replaces the directory root.
35
+
36
+ Deploy-Docs-GH-Pages:
37
+ name: Publish Docs to GitHub Pages
38
+
39
+ environment:
40
+ name: github-pages
41
+ url: ${{ steps.deployment.outputs.page_url }}
42
+
43
+ permissions:
44
+ actions: read # Download artifacts of other runs when called via workflow_run trigger
45
+ id-token: write # Pages deployment
46
+ pages: write # Pages deployment
47
+
48
+ runs-on: ubuntu-26.04
49
+
50
+ steps:
51
+
52
+ - name: Download built docs
53
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
54
+ with:
55
+ name: ${{ inputs.artifact-name }}
56
+ path: html-docs
57
+ github-token: ${{ github.token }}
58
+ run-id: ${{ inputs.run-id || github.event_name == 'workflow_run' && github.event.workflow_run.id || github.run_id }}
59
+
60
+ - name: Upload GitHub Pages artifact
61
+ uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
62
+ with:
63
+ name: html-docs-pages
64
+ path: html-docs
65
+
66
+ - name: Deploy to GitHub Pages
67
+ id: deployment
68
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5.0.1
69
+ with:
70
+ artifact_name: html-docs-pages
71
+
72
+ - name: Delete GitHub Pages artifact
73
+ if: ${{ !cancelled() }}
74
+ uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0
75
+ with:
76
+ name: html-docs-pages
77
+ failOnError: false
78
+
79
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
80
+ with:
81
+ persist-credentials: false
82
+
83
+ - name: Upload Exit Status
84
+ if: ${{ !cancelled() }}
85
+ uses: $/.github/actions/upload-exitstatus
@@ -0,0 +1,211 @@
1
+ # Publishes verified Python distributions to PyPI.
2
+ #
3
+ # This workflow is registered as the PyPI Trusted Publisher.
4
+ # Any job in this file with `id-token: write` and the configured
5
+ # environment can potentially obtain PyPI publishing credentials.
6
+ #
7
+ # Only the publish job receives OIDC permissions.
8
+ # No repository code is executed in the publishing job.
9
+ #
10
+ # The triggering workflow must be initiate-release.yml, which
11
+ # independently authorizes releases and builds the artifacts.
12
+ # `workflow_run` workflows always execute the default branch's
13
+ # definition and artifacts can only be uploaded by a run itself,
14
+ # so verifying the triggering run's identity (path + event) makes
15
+ # its artifacts trustworthy.
16
+ ---
17
+ name: Release Salt Extension Python Package
18
+
19
+ on:
20
+ # zizmor: ignore[dangerous-triggers]
21
+ # `workflow_run` selects triggering runs by display name only, which a pull
22
+ # request can claim by adding a `pull_request`-triggered workflow of the same
23
+ # name. The trigger alone therefore grants no trust - the `verify` job below
24
+ # verifies the triggering run's provenance before anything is touched.
25
+ workflow_run:
26
+ types:
27
+ - completed
28
+ workflows:
29
+ - Initiate Release
30
+
31
+ concurrency:
32
+ group: ${{ github.workflow }}
33
+ cancel-in-progress: false
34
+ queue: max
35
+
36
+ cache-mode: none
37
+ permissions: {}
38
+
39
+ jobs:
40
+ verify:
41
+ name: Verify release
42
+ runs-on: ubuntu-26.04
43
+
44
+ # Only accept successful runs of the actual release initiation workflow,
45
+ # identified by its file path and trigger, never by name alone. A pull
46
+ # request cannot forge the `workflow_run` event: such workflows only ever
47
+ # execute the default branch's definition.
48
+ if: >-
49
+ github.event.workflow_run.conclusion == 'success' &&
50
+ github.event.workflow_run.repository.full_name == github.repository &&
51
+ github.event.workflow_run.head_repository.full_name == github.repository &&
52
+ github.event.workflow_run.event == 'workflow_run' &&
53
+ github.event.workflow_run.path == '.github/workflows/initiate-release.yml' &&
54
+ github.event.workflow_run.head_branch == github.event.repository.default_branch
55
+
56
+ permissions:
57
+ actions: read # List release artifacts and download them from different run
58
+ contents: read # Resolve the release tag via the API
59
+
60
+ env:
61
+ GH_TOKEN: ${{ github.token }}
62
+ GH_REPO: ${{ github.repository }}
63
+ INITIATE_RUN_ID: ${{ github.event.workflow_run.id }}
64
+
65
+ outputs:
66
+ version: ${{ steps.manifest.outputs.version }}
67
+ commit: ${{ steps.manifest.outputs.commit }}
68
+ tag: ${{ steps.manifest.outputs.tag }}
69
+
70
+ steps:
71
+ # The triggering workflow also completes successfully when all its
72
+ # jobs were skipped, e.g. because it was triggered by an unrelated
73
+ # or unauthorized workflow run. In that case, there is no release.
74
+ - name: Check triggering workflow for release manifest
75
+ id: check
76
+ run: |
77
+ set -euo pipefail
78
+
79
+ artifacts="$(gh api --paginate \
80
+ "repos/${GH_REPO}/actions/runs/${INITIATE_RUN_ID}/artifacts?per_page=100" \
81
+ --jq '.artifacts[] | select(.expired == false).name')"
82
+
83
+ if grep -qx 'release-manifest' <<< "$artifacts"; then
84
+ echo "available=1" >> "$GITHUB_OUTPUT"
85
+ else
86
+ echo "available=0" >> "$GITHUB_OUTPUT"
87
+ echo "::notice::No release manifest found, assuming the triggering run did not initiate a release."
88
+ fi
89
+
90
+ - name: Download release manifest
91
+ if: steps.check.outputs.available == '1'
92
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
93
+ with:
94
+ name: release-manifest
95
+ run-id: ${{ github.event.workflow_run.id }}
96
+ github-token: ${{ github.token }}
97
+ path: ${{ runner.temp }}/release
98
+
99
+ - name: Verify release manifest
100
+ if: steps.check.outputs.available == '1'
101
+ id: manifest
102
+ env:
103
+ MANIFEST: ${{ runner.temp }}/release/manifest.json
104
+ run: |
105
+ set -euo pipefail
106
+
107
+ # The manifest must describe a release initiated by the exact
108
+ # triggering run.
109
+ jq -e \
110
+ --arg repo "$GH_REPO" \
111
+ --argjson run_id "$INITIATE_RUN_ID" '
112
+ .schema_version == 1
113
+ and .repository == $repo
114
+ and .initiate_run_id == $run_id
115
+ and (.version | type == "string")
116
+ and (.tag | type == "string")
117
+ and (.commit | type == "string")
118
+ ' "$MANIFEST" > /dev/null
119
+
120
+ version="$(jq -er '.version' "$MANIFEST")"
121
+ tag="$(jq -er '.tag' "$MANIFEST")"
122
+ commit="$(jq -er '.commit' "$MANIFEST")"
123
+
124
+ # Validate release naming.
125
+ [[ "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || exit 1
126
+ [[ "$tag" == "v${version}" ]] || exit 1
127
+
128
+ # Require a complete commit SHA.
129
+ [[ "$commit" =~ ^[0-9a-f]{40}$ ]] || exit 1
130
+
131
+ # Retrieve the exact Git reference.
132
+ ref="$(gh api "repos/${GH_REPO}/git/ref/tags/${tag}")"
133
+
134
+ [[ "$(jq -r '.ref' <<< "$ref")" == "refs/tags/${tag}" ]] || {
135
+ echo "::error::Unexpected Git reference"
136
+ exit 1
137
+ }
138
+
139
+ sha="$(jq -er '.object.sha' <<< "$ref")"
140
+ type="$(jq -er '.object.type' <<< "$ref")"
141
+
142
+ # Dereference annotated tags.
143
+ for _ in 1 2 3 4; do
144
+ [[ "$type" == "tag" ]] || break
145
+
146
+ object="$(gh api "repos/${GH_REPO}/git/tags/${sha}")"
147
+ sha="$(jq -er '.object.sha' <<< "$object")"
148
+ type="$(jq -er '.object.type' <<< "$object")"
149
+ done
150
+
151
+ [[ "$type" == "commit" ]] || {
152
+ echo "::error::Release tag does not resolve to a commit"
153
+ exit 1
154
+ }
155
+
156
+ # The release tag must still reference the authorized commit.
157
+ [[ "$sha" == "$commit" ]] || {
158
+ echo "::error::Release tag has changed since initiation"
159
+ exit 1
160
+ }
161
+
162
+ echo "Verified release: $tag ($commit)"
163
+
164
+ {
165
+ echo "version=$version"
166
+ echo "tag=$tag"
167
+ echo "commit=$commit"
168
+ } >> "$GITHUB_OUTPUT"
169
+
170
+ - name: Upload release handoff
171
+ # Consumed by finalize-release.yml, which handles the
172
+ # remaining release steps after the packages were published.
173
+ if: steps.check.outputs.available == '1'
174
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
175
+ with:
176
+ name: release-handoff
177
+ path: ${{ runner.temp }}/release/manifest.json
178
+ if-no-files-found: error
179
+
180
+ publish:
181
+ name: Publish to PyPI
182
+ needs: verify
183
+ runs-on: ubuntu-26.04
184
+ # Skip when the triggering workflow did not initiate a release.
185
+ if: needs.verify.outputs.version != ''
186
+
187
+ environment:
188
+ name: release
189
+ url: https://pypi.org/p/saltext.github
190
+
191
+ permissions:
192
+ actions: read # Download artifact from the triggering run
193
+ id-token: write # Trusted Publishing
194
+
195
+ steps:
196
+ - name: Download verified distributions
197
+ uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
198
+ with:
199
+ name: salt-extension-packages
200
+ run-id: ${{ github.event.workflow_run.id }}
201
+ github-token: ${{ github.token }}
202
+ path: dist/
203
+
204
+ - name: Publish distributions to PyPI
205
+ uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
206
+ with:
207
+ attestations: true
208
+ verbose: ${{ runner.debug == '1' }}
209
+
210
+ # The GitHub release and the docs deployment run separately on
211
+ # `workflow_run` in finalize-release.yml.
@@ -0,0 +1,103 @@
1
+ ---
2
+ name: Build Documentation
3
+
4
+ on:
5
+ workflow_call:
6
+ inputs:
7
+ checkout-ref:
8
+ required: false
9
+ type: string
10
+ default: ''
11
+ pages-artifact:
12
+ required: false
13
+ type: boolean
14
+ default: false
15
+ require-in-branch:
16
+ required: false
17
+ type: string
18
+ default: ''
19
+
20
+ permissions:
21
+ contents: read
22
+
23
+ jobs:
24
+ Docs:
25
+ name: Build Docs and Upload Artifact
26
+ runs-on: ubuntu-26.04
27
+ timeout-minutes: 10
28
+
29
+ steps:
30
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
31
+ with:
32
+ ref: ${{ inputs.checkout-ref || github.sha }}
33
+ fetch-depth: 0
34
+ persist-credentials: false
35
+
36
+ - name: Enforce ref being in branch
37
+ if: ${{ inputs.require-in-branch != '' }}
38
+ env:
39
+ BRANCH_NAME: ${{ inputs.require-in-branch }}
40
+ CHECK_REF: ${{ inputs.checkout-ref || github.sha }}
41
+ run: git merge-base --is-ancestor "$CHECK_REF" "origin/$BRANCH_NAME"
42
+
43
+ - name: Set up Python 3.14 For Nox
44
+ uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
45
+ with:
46
+ python-version: "3.14"
47
+
48
+ - name: Install Nox
49
+ run: |
50
+ pip install "nox==${NOX_VERSION}" "uv==${UV_VERSION}"
51
+ env:
52
+ NOX_VERSION: '2026.10.20'
53
+ UV_VERSION: '0.13.5'
54
+
55
+ - name: Install Doc Requirements
56
+ run: |
57
+ nox --force-color -e docs --install-only
58
+
59
+ - name: Build Docs
60
+ env:
61
+ SKIP_REQUIREMENTS_INSTALL: '1'
62
+ run: |
63
+ nox --force-color -e docs
64
+
65
+ # Create a Pages-compatible artifact if we're going to deploy it
66
+ - name: Package documentation
67
+ if: inputs.pages-artifact
68
+ env:
69
+ DOCS_DIR: ${{ github.workspace }}/docs/_build/html
70
+ run: |
71
+ set -euo pipefail
72
+
73
+ test -f "$DOCS_DIR/index.html"
74
+ mkdir -p "$RUNNER_TEMP/docs"
75
+ tar \
76
+ --dereference \
77
+ --hard-dereference \
78
+ --directory "$DOCS_DIR" \
79
+ --exclude=.git \
80
+ --exclude=.github \
81
+ --exclude='.[^/]*' \
82
+ -cf "$RUNNER_TEMP/docs/artifact.tar" \
83
+ .
84
+
85
+ - name: Upload built docs as Pages artifact
86
+ if: inputs.pages-artifact
87
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
88
+ with:
89
+ name: html-docs
90
+ path: ${{ runner.temp }}/docs/artifact.tar
91
+ if-no-files-found: error
92
+ retention-days: 7
93
+
94
+ - name: Upload built docs as artifact
95
+ if: ${{ !inputs.pages-artifact }}
96
+ uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
97
+ with:
98
+ name: html-docs
99
+ path: docs/_build/html
100
+
101
+ - name: Upload Exit Status
102
+ if: ${{ !cancelled() }}
103
+ uses: $/.github/actions/upload-exitstatus