- Fix web-login (#597)
- Support for config files written in jsonnet (#542)
- Do not take
in-syncinto account anymore when deciding if a PR can be automerged.
- Correctly handle rulesets with empty
status_checks. (#562)
- Adding "Rust" support for Code Scanning
- Remove the out of sync PR comment
- Code scanning language check for repositories (#507)
- Resolve status checks to their fully-qualified name for
OrgRulesetsas the GH API only returns theintegration_id. (#491) - Fix renaming a repository and modifying settings in a single operation. (#472)
- Fix crashes during webapp startup in multi-worker environments.
- Add Documentation for Otterdog Web App deployment
- Add support for marking organizations as archived and to ignore them. (#463)
- Add new check-status CLI command. This outputs a json file of with sync, validation, and archival status of organizations. (#457)
- Added support for setting
gh_pages_visibilityin repositories. (#474) - Added support for setting
members_can_create_private_pagesin organization settings. (#474)
- Make the
sync-checkalways succeed to not prevent PRs from being merged due to unrelated changes in the live settings. - Contributing documentation to include instructions for Otterdog Web App
- Fixed GitHub Page updates due missing required fields (#450)
- Properly escape string values when passing them to a rich Console. (#440)
- Fixed regression of live settings and expected code scanning default setup (#458)
- Fixed filter invalid codeql lang values returned by gh api (#435)
- Documentation improvement
- Dependencies updates for otterdog
- Dependencies updates for otterdog
- Minor development docs and build updates
- Fixed support for using common DNS in MongoDB URL configuration (#417)
- Fixed support for
actionsas code scanning language (#411) - Fixed coercion of
has_discussionproperty in case the repository is the source of organization discussions. - Fixed importing an organization that has multiple custom properties defined.
- Fixed updating organization teams with
local-applyoperation.
- Changed severity of validation messages wrt to missing 'github-pages' environments from WARNING to INFO.
- Added policy
dependency_track_uploadto upload SBOM data from workflows to a dependency track instance. - Added operations
list-blueprintsandapprove-blueprintsto list and approve remediation PRs created for specific organizations. - Added support for teams.
- Use asyncer to speed up retrieval of live settings. (#209)
- Updated development environment to use
poetryversion2.0.0and changed license classifier toEPL-2.0. (#328) - Changes the
exclude_teamfilter to not consider teams defined in the default config. - Converted workflow related settings into an embedded model object.
- Included option
repo-filterof diff related operations already when getting live data from GitHub to speed up execution.
- Fixed display of forced updates in
planoperations.
- Added support for organization roles.
- Added operation
check-token-permissionsto list all granted and missing scopes for the cli token. - Added option to specify reviewers for blueprint type
append_configuration. - Added view for currently active remediation PRs for configured blueprints.
- Adapted default template for GitHub organizations to take an additional parameter: project_name.
- Changed accessing security managers of an organization using the organization roles api. (#365)
- Disabled adding automatic help comments for bot users creating a pull request in the config repo.
- Disabled checking of team membership for bot users creating a pull request in the config repo.
- Fixed displaying changes when settings
squash_merge_commit_titleandsquash_merge_commit_messagewere changed at the same time. - Prevented setting
private_vulnerability_reporting_enabledfor private repositories. - Prevented wrapping of long texts when importing the configuration.
- Added validation rules for
squashandmergecommit title and message settings of a repository. - Added new blueprint
scorecard_integrationto integrate OSSF Scorecard evaluations. (#345) - Added new blueprint
append_configurationto append configuration snippets depending on certain conditions. - Added support for organization rulesets. (#158)
- Added support for templates in
required-fileblueprints. (#322) - Added support for a
post-add-objectshook in the default configuration that gets executed after resources have been added. (#318) - Added new blueprint
pin_workflowto pin used GitHub actions in workflows. - Added new blueprint
required_fileto create files in repositories. - Added a new operation
list-advisoriesto list GitHub Security Advisories for organizations.
- Added raising an
InsufficientPermissionsExceptionif the token lacks required OAuth scopes for a specific endpoint. (#126) - Improved the check mechanism for blueprints by only checking a certain number each run and by taking the last check time into account.
- Improved the update mechanism when installing a new GitHub organization to only update the newly added organization. (#349)
- Integrated existing logging with standard python logging facility.
- Utilized
richconsole formatting instead of low-level colorama styles. - Improved processing when archiving repositories to process all other requested changes before archiving them. (#134)
- Split up policies into policies and blueprint and added support for them in the UI
- Improved processing of organization settings
web_commit_signoff_requiredandactions_can_approve_pull_request_reviewsto force update the same settings on repo level as changes will be implicitly performed by GitHub.
- Fixed retrieval of setting
two_factor_requirementwhich has been renamed totwo_factor_requiredin the Web UI. (#339) - Fixed exclusion of settings that can only be accessed via the Web UI in the
local-applyoperation. (#330) - Fixed updating or deleting webhooks with wildcard patterns via the
local-applyoperation. (#325) - Fixed importing of
rulesetsdue to missing handling of embedded model objectrequired_status_checks. - Changing setting
squash_merge_commit_messagealso requires that settingsquash_merge_commit_titleis present in the payload sent to GitHub.
- Added validation for setting
gh_pages_source_pathof a repository to check for allowed values. - Added a playground and visualization of the default settings for a project to the dashboard. (#293)
- Added support for overriding default settings in the
otterdog configfrom a file.otterdog-defaults.json. - Added support for setting
required_merge_queuein repository rulesets. (#282) - Added support for setting
targetin repository rulesets. - Added support for parameter
--repo-filterforplanandapplyoperations. (#275) - Added support for tags for deployment policies in
environments. (#268) - Added support for
custom properties. (#256) - Added validation for setting
forked_repositoryof a repository to match the expected format<owner>/<repo>. - Added operation
review-permissionsto review requested permissions updates from GitHub apps for an organization. (#260) - Added operation
uninstall-appto uninstall a GitHub app for an organization. - Added operation
local-applyto apply change based on two local configurations. (#257) - Added policy
macos_large_runnersto control whether MacOS large runners are permitted to use in an organization. (#251) - Added operation
install-appto install a GitHub app for an organization. (#250) - Added option
--no-diffand--forceto thepush-configoperation to disable showing diffs and interactive approvals. (#246)
- Do not include settings whose values is
nullin the plan operation output when a resource is added. - Include
model_onlysettings in the plan operation output when a resource is added. - Converted status check related settings of a Ruleset into an embedded model object similar to merge queue settings.
- Display changes in list properties using sequence comparison.
- Converted pull request related settings of a Ruleset into an embedded model object similar to merge queue settings.
- Use
jsonatainstead ofjqfor querying json objects. - Use
ghproxyby default as transparent cache / proxy when accessing the GitHub API from the webapp. (#274) - Changed parameter
--update-filterfor various operations from a python regular expression to a shell pattern format. - Changed operation
importto mask webhook urls in a similar way as in the previous configuration if present. - Added a retry logic for calls to
https://api.github.comto gracefully handle intermittent connection problems. - Changed
ApplyChangesTaskto use alocal-applyoperation rather than anapplyoperation. (#257) - Changed operation
fetch-configto include 2 additional parameterssuffixandrefto fetch a config from a specific git reference. - Changed operation
push-configto always show a diff of the local changes compared to the current remote configuration prior to execution. (#246)
- Fixed throttling of comments generated when checking if the configuration is in sync with the live settings.
- Fixed creation of a
Rulesetif no merge queue is specified. - Ensured that validation for a
Rulesetfails if any parameter ofrequired_pull_requestis missing as they are required. - Creating a repo with
gh_pages_build_type: "disabled"is now working again after changes on GitHub side. - Avoided unnecessary GitHub API calls when getting the
default_branchoridof a repository. - Detect errors during an automatic
applyoperation and add a corresponding comment to the pull request. - Support showing dialog windows when using operation
web-login. - Fixed showing changes to dummy secret values when performing a
local-planoperation. (#245) - Added proper error handling in case no base_template is defined in the otterdog configuration file. (#247)
- Added support for disabling default code security configurations. (#234)
- Added support for configuring default code scanning setup of a repository. (#198)
- Added operation
open-prto automatically create a PR for local changes. (#230) - Added author information from git when pushing config changes with
push-config. (#228)
- Deprecated organization settings
dependabot_alerts_enabled_for_new_repositories,dependabot_security_updates_enabled_for_new_repositoriesanddependency_graph_enabled_for_new_repositories. - Deprecated organization setting
has_repository_projects.
- Fixed updating the configuration of a project when its base template changed. (#221)
- Fixed updating configuration when the
github_idof a project changed. (#235)
- Added support for oauth authentication using GitHub. (#202)
- Added support for auto-merging of PRs under certain conditions. (#110)
- Added handling for settings that require access to the Web UI. (#208)
- Added support for repository setting
private_vulnerability_reporting_enabled. (#205) - Added a graphql based query interface to the dashboard. (#204)
- Reduced the number of automatic checks that are performed every time a PR gets updated. (#217)
- Support auto-merge also for project leads and admins. (#216)
- Do not enable auto-merge for PRs that also touch files other than the configuration. (#220)
- Use scoped commands for interaction via pull requests. (#211)
- Use pagination when retrieving all branches of a repository.
Note: this version includes lots of additions and changes related to the GitHub App mode which are not covered in the changelog.
- Added automatic handling of configuration changes by acting as a GitHub App.
- Support adding wildcards to
Webhookurls to hide sensitive parts. (#84)
- Removed
jsonnetfile.jsonandjsonnetfile.lock.jsonfiles in the config repo.
- Support running otterdog as a GitHub app. (#16)
- Added operation
install-depsin order to install required runtime dependencies (firefox browser).
- Include changes to secret values in
WebhooksandSecretresources in plan operations. (#168) - Improve coercing of organization-level settings for repository settings. (#161)
- Coerce repository workflow settings from organization workflow settings that are more restrictive. (#135)
- Correctly coerce workflow setting
actions_can_approve_pull_request_reviewsand add a validation rule. (#166)
- Added support for creating new repositories as fork. (#153)
- Added support for action variables on organizational and repository level. (#150)
- Added operation
list-membersto display the amount of members for an organization. - Added support for repository rulesets. (#53)
- Added support for workflow settings of a repository. (#113)
- Added possibility to define custom hooks in the default configuration when adding new resource. (#106)
- Added validation for repos hosting the organization site, i.e. .github.io. (#83)
- Added validation for secrets and webhooks to issue a warning if a value is provided that does not use a credential provider.
- Added operation
delete-fileto delete files in a repo of an organization. - Added support for workflow settings for an organization. (#62)
- Added operation
list-appsto display current app installations for an organization. (#101) - Added validation for secrets to not start with restricted prefix "GITHUB_". (#100)
- Added operation
dispatch-workflowto dispatch a workflow in a specified repository. - Added flag
--update-filterfor plan, local-plan and apply operations to only update matching webhooks / secrets. (#90) - Added support for
github-pagesconfiguration for a repository. (#59) - Added support for
blocks_creationsandrestricts_pushessettings for a branch protection rule. (#87) - Added support for custom validation rules that are retrieved together with the default configuration.
- Added support for
dependabot_security_updates_enabledsetting for a repository. (#69) - Added support for configuring discussions on organization and repository level. (#67)
- Added support for shell autocompletion. (#65)
- Removed organization setting
default_workflow_permissionswhich is now part of the workflow settings. - Removed organization setting
members_can_create_pageswhich is a read-only setting. - Removed organization setting
organization_projects_enabledwhich encodes the same information ashas_organization_projects.
- Updated library
aiohttp-client-cacheto v0.10.0 to support conditional requests natively. (#139) - Support renaming the current
default_branchif the new branch does not exist yet. (#76) - Use async io for to speed up retrieval of current resources from GitHub. (#114)
- Changed Operation
canonical-diffto ignore ordering of keys. - Support setting a non-existing branch as source branch for GitHub Pages deployment. (#96)
- Renamed branch protection rule property
required_approving_reviewstorequires_pull_requestwhich is more consistent with its semantics. - Exclude temporary private fork repositories created for security advisories. (#66)
- Adding a retry mechanism for generating a totp when signing in via the GitHub Web UI due to a recent change that a totp can not be reused anymore.
- Apply repository workflow settings when creating a new repository. (#130)
- Added validation for the maximum number of supported
topicsdefined for a repository. (#129) - Prevent
sync-templateoperation to fail in some cases due to cached responses. (#125) - Made creating of repositories from a template more resilient to errors. (#124)
- Do not take
push_restrictionsinto account for diff calculation whenrestricts_pushesis disabled. (#121) - Made retrieval of organization setting
readers_can_create_discussionsoptional as it's not available for empty organizations. (#116) - Fixed resetting apply operation when running it on multiple organizations at the same time.
- Fixed retrieving repository secrets for temporary private clone repositories.
- Added new operation
web-loginto open a browser window logged in to an organization. - Added support for organization level
secrets. (#52) - Added support for repository level
secrets. (#52) - Added support for repository level
environments. (#58) - Added new operation
show-liveto show the current live resources of an organization. - Added support for changing the webhook url by introducing an additional field
aliases. - Added support for repository webhooks. (#56)
- Added support for
requires_deploymentandrequired_deployment_environmentsettings for branch protection rules. (#29) - Added support for
auto_initsetting for repositories: when enabled, repositories will get initialized with a README.md upon creation. - Added support to post process some content initialized from a template repo using setting
post_process_template_content. - Added support to delete resources that are missing in definition (must be explicitly enabled with flag
--delete-resources). (#49) - Added support for renaming of repositories by introducing an additional field
aliases. (#43) - Added support for overriding the
config_reposetting per organization. (#48) - Added new operation
canonical-diffto show differences of the current configuration compared to a canonical version. (#45) - Added new operation
sync-templateto synchronize the contents of repositories created from a template. (#41) - Added support for
topicssetting for repositories. (#44)
- Changed
importoperation to sync secrets from existing configurations. - Changed format to specify actors in branch protection rules, using a '@' prefix to denote users and teams, and not prefix for apps.
- Deprecated setting
team_discussions_allowedwhich has been removed from the GitHub Web UI. (#54) - Changed indentation for import operation.
- Skipping organization webhooks with a dummy secret during processing.
- Simplified setting
base_templateand support a per-organization override. (#39) - Operation
importwill create a backup of the existing definition for an organization if it already exists. - Non-existing users and teams will now trigger a warning message rather a failure during the execution of an
applyoperation. (#51) - Prevent printing of credential data when trace mode is enabled. (#47)
- Switching to module
clickfor command line parsing. - Updated module
playwrightto version 1.33.0. - Updated module
requeststo version 2.30.0.
- Fixed selector for logging out a user when accessing the GitHub Web UI after some changes to the Web UI.
- Added support for
default_workflow_permissionssetting for organizations. (#36) - Added support for
security_managerssetting for organizations. (#35) - Added support for
is_templateandtemplate_repositorysetting for repository settings. (#34) - Added flag
--update-webhooksfor apply / plan / local-plan operations to force updates of webhooks with secrets. (#21) - Added support for
secret_scanning_push_protectionsetting for repository settings. (#33) - Added support for extending list-based properties, e.g.
required_status_checksfor branch protection rules. - Added operation
local-planto output changes that will be applied by based on another local config. - Added flag
--pull-requestfor fetch-config operation to fetch the config from a specific pull request. - Added support for
required_status_checkssetting for branch protection rules. (#5) - Added flag
--messagefor push-config operation to specify the commit message. - Added support for pre-defined repositories in the default configuration. (#23)
- Added option
--no-web-uifor import operation as well. (#20) - Added request caching for REST api calls. (#18)
- Added support for
bypass_force_push_allowancessetting for branch protection rules. (#5) - Added support for
bypass_pull_request_allowancessetting for branch protection rules. (#5) - Added support for
review_dismissal_allowancessetting for branch protection rules. (#5) - Added support for
push_restrictionssetting for branch protection rules. (#5) - Added option
--no-web-uito skip processing settings accessed via the GitHub Web UI. (#12)
- Changed settings for branch protection rules from camel case to snake case notation. (#37)
- Removed prefix
organization_from settingsorganization_projects_enabledandmembers_can_change_project_visibilityfor organizations. (#38) - Switch to go-jsonnet and use released version
v0.20.0in the container image. (#25) - Use released version
v0.5.1ofjsonnet-bundlerin the container image. (#24) - Update some repo settings after creation as they are not taken correctly into account during creation by GitHub.
- Added special handling for
web_commit_signoff_required: if changed organization wide, it will implicitly change the same setting on repo level. - Removed
restricts_pushessetting from branch protection rules as it is implicitly set based on settingpush_restrictions.