New features added to each component:
- January 03, 2020 Added a
pr_status_base_urlsoption to the Tide config that allows to specify different tide's URL for each organization or a specific repository. Thepr_status_base_urlwill be deprecated on June 2020 and it will be replaces with the*value inpr_status_base_urls. - November 05, 2019 The
config-updaterplugin supports update configs on build clusters by usingclusters. The fields namespace and additional_namespaces are deprecated. - October 27, 2019 The
trusted_orgfunctionality in trigger is being deprecated in favour of being more explicit in the fact that org members or repo collaborators are the trusted users. This option will be removed completely in January 2020. - October 07, 2019 Added a
default_decoration_configsoption to the Plank config that allows to specify different plank's default configuration for each organization or a specific repository.default_decoration_configwill be deprecated in April 2020 and it will be replaced with the*value indefault_decoration_configs. - August 29, 2019 Added a
batch_size_limitoption to the Tide config that allows the batch size limit to be specified globally, per org, or per repo. Values default to 0 indicating no size limit. A value of -1 disables batches. - July 30, 2019
authorized_usersinrerun_auth_configfor deck will becomegithub_users. - July 19, 2019 deck will soon remove its default value for
--cookie-secret-file. If you set--oauth-urlbut not--cookie-secret-file, add--cookie-secret-file=/etc/cookie-secretto your deck instance. The default value will be removed at the end of October 2019. - July 2, 2019 prow defaults to report status for both presubmit and postsubmit jobs on GitHub now.
- June 17, 2019 It is now possible to configure the channel for the Slack reporter
directly on jobs via the
.reporter_config.slack.channelconfig option - May 13, 2019 New
plankconfigpod_running_timeoutis added and defaulted to two days to allow plank abort pods stuck in running state. - April 25, 2019
--job-configinperiboloshas never been used; it is deprecated and will be removed in July 2019. Remove the flag from any calls to the tool. - April 24, 2019
file_weight_countin blunderbuss is being deprecated in favour of the more currentmax_request_countfunctionality. Please ensure your configuration is up to date before the end of May 2019. - March 12, 2019 tide now records a history of its actions and exposes a
filterable view of these actions at the
/tide-historydeck path. - March 9, 2019 prow components now support reading gzipped config files
- February 13, 2019 prow (both plank and crier) can set status on the commit
for postsubmit jobs on github now!
Type of jobs can be reported to github is gated by a config field like
now and default to report for presubmit only. *** The default will change in April to include postsubmit jobs as well *** You can also add
github_reporter: job_types_to_report: - presubmit - postsubmit
skip_report: trueto your post-submit jobs to skip reporting if you enable postsubmit reporting on. - January 15, 2019
approvenow considers self-approval and github review state by default. Configure withrequire_self_approvalandignore_review_state. Temporarily revert to old defaults withuse_deprecated_2018_implicit_self_approve_default_migrate_before_july_2019anduse_deprecated_2018_review_acts_as_approve_default_migrate_before_july_2019. - January 12, 2019
blunderblussplugin now provides a new command,/auto-cc, that triggers automatic review requests. - January 7, 2019
implicit_self_approvewill becomerequire_self_approvalin the second half of this year. - January 7, 2019
review_acts_as_approvewill becomeignore_review_statein the second half of this year. - October 10, 2018
tidenow supports the-repo:foo/bartag in queries via theexcludedReposYAML field. - October 3, 2018
welcomenow supports a configurable message on a per-org, or per-repo basis. Please note that this includes a config schema change that will break previous deployments of this plugin. - August 22, 2018
spyglassis a pluggable viewing framework for artifacts produced by Prowjobs. See a demo here! - July 13, 2018
blunderblussplugin will now supportrequired_reviewersin OWNERS file to specify a person or github team to be cc'd on every PR that touches the corresponding part of the code. - June 25, 2018
updateconfigplugin will now support update/remove keys from a glob match. - June 05, 2018
blunderbussplugin may now suggest approvers in addition to reviewers. Useexclude_approvers: trueto revert to previous behavior. - April 10, 2018
claplugin now supports/check-clacommand to force rechecking of the CLA status. - February 1, 2018
updateconfigwill now update any configmap on merge - November 14, 2017
jenkins-operator:0.58exposes prometheus metrics. - November 8, 2017
horologium:0.14prow periodic job now support cron triggers. See https://godoc.org/gopkg.in/robfig/cron.v2 for doc to the cron library we are using.
Breaking changes to external APIs (labels, GitHub interactions, configuration or deployment) will be documented in this section. Prow is in a pre-release state and no claims of backwards compatibility are made for any external API. Note: versions specified in these announcements may not include bug fixes made in more recent versions so it is recommended that the most recent versions are used when updating deployments.
- November 21, 2019 The boskos metrics component replaced the existing prometheus
metrics with a single, label-qualified metric. Metrics are now served at
/metricson port 9090. This actually happened August 5th, but is being documented now. Details: kubernetes#13767 - November 18, 2019 The
mkbuild-clustercommand-line utility andbuild-clusterformat is deprecated and will be removed in May 2020. Usegencredand thekubeconfigformat as an alternative. - November 14, 2019 The
slack_reporterconfig field has been deprecated in favor of the newslack_reporter_configsfield which allows configuration on a global, organization or repo level.slack_reporterwill be removed in May 2020. - November 7, 2019 The
plank.allow_cancellationsandjenkins_operators.allow_cancellationssettings are deprecated and will be removed and set to alwaystruein March 2020. - October 7, 2019 Prow will drop support for the deprecated knative-builds in November 2019.
- September 24, 2019 Sending an http
GETrequest to the/hookendpoint now returns a405(Method Not Allowed) instead of a200(OK). - September 8, 2019 The deprecated
job_url_prefixoption has been removed from Plank. - May 2, 2019 All components exposing Prometheus metrics will now either push them
to the Prometheus PushGateway, if configured, or serve them locally on port 9090 at
/metrics, if not configured (the default). - April 26, 2019
blunderbuss,approve, and other plugins that read OWNERS now treatowners_dir_blacklistas a list of regular expressions matched against the entire (repository-relative) directory path of the OWNERS file rather than as a list of strings matched exactly against the basename only of the directory containing the OWNERS file. - April 2, 2019
hook,deck,horologium,tide,plankandsinkerwill no longer provide a default value for the--config-pathflag. It is required to explicitly provide--config-pathwhen upgrading to a new version of these components that were previously relying on the default--config-path=/etc/config/config.yaml. - March 29, 2019 Custom logos should be provided as full paths in the configuration
under
deck.branding.logosand will not implicitly be assumed to be under the static assets directory. - February 26, 2019 The
job_url_prefixoption fromplankhas been deprecated in favor of the newjob_url_prefix_configoption which allows configuration on a global, organization or repo level.job_url_prefixwill be removed in September 2019. - February 13, 2019
horologiumandsinkerdeployments will soon require--dry-run=falsein production, please set this before March 15. At that time flag will default to --dry-run=true instead of --dry-run=false. - February 1, 2019 Now that
hookandtidewill no longer post "Skipped" statuses for jobs that do not need to run, it is not possible to require those statuses with branch protection. Therefore, it is necessary to run thebranchprotectorfrom at least version510db59before upgradingtideto that version. - February 1, 2019
horologiumandsinkernow support the--dry-runflag, so you must pass--dry-run=falseto keep the previous behavior (see Feb 13 update). - January 31, 2019
subno longer supports the--masterurlflag for connecting to the infrastructure cluster. Use--kubeconfigwith--contextfor this. - January 31, 2019
crierno longer supports the--masterurlflag for connecting to the infrastructure cluster. Use--kubeconfigwith--contextfor this. - January 27, 2019 Jobs that do not run will no longer post "Skipped" statuses.
- January 27, 2019 Jobs that do not run always will no longer be required by
branch protection as they will not always produce a status. They will continue
to be required for merge by
tideif they are configured as required. - January 27, 2019 All support for
run_after_successjobs has been removed. Configuration of these jobs will continue to parse but will ignore the field. - January 27, 2019
hookwill now correctly honor therun_alwaysfield on Gerrit presubmits. Previously, if this field was unset it would have defaulted totrue; now, it will correctly default tofalse. - January 22, 2019
sinkerprefers.kube/configinstead of the customClustersfile to specify credentials for external build clusters. The flag name has changed from--build-clusterto--kubeconfig. Migrate before June 2019. - November 29, 2018
plankwill no longer default jobs withdecorate: trueto haveautomountServiceAccountToken: falsein their PodSpec if unset, if the job explicitly setsserviceAccountName - November 26, 2018 job names must now match
^[A-Za-z0-9-._]+$. Jobs that did not match this before were allowed but did not provide a good user experience. - November 15, 2018 the
hookservice account now requires RBAC privileges to createConfigMapsto support new functionality in theupdateconfigplugin. - November 9, 2018 Prow gerrit client label/annotations now have a
prow.k8s.io/namespace prefix, if you have a gerrit deployment, please bump both cmd/gerrit and cmd/crier. - November 8, 2018
planknow defaults jobs withdecorate: trueto haveautomountServiceAccountToken: falsein their PodSpec if unset. Jobs that used the default service account should explicitly set this field to maintain functionality. - October 16, 2018 Prow tls-cert management has been migrated from kube-lego to cert-manager.
- October 12, 2018 Removed deprecated
buildIdenvironment variable from prow jobs. UseBUILD_ID. - October 3, 2018
-github-token-filereplaced with-github-token-pathfor consistency withbranchprotectorandperiboloswhich were already using-github-token-path.-github-token-filewill continue to work through the remainder of 2018, but it will be removed in early 2019. The following commands are affected:cherrypicker,hook,jenkins-operator,needs-rebase,phony,plank,refresh, andtide. - October 1, 2018 bazel is the one official way to build container images. Please use prow/bump.sh and/or bazel run //prow:release-push
- Sep 27, 2018 If you are setting explicit decorate configs, the format has changed from
to
- name: job-foo decorate: true timeout: 1
- name: job-foo decorate: true decoration_config: timeout: 1
- September 24, 2018 the
splicecomponent has been deleted following the deletion of mungegithub. - July 9, 2018
milestoneformat has changed fromtomilestone: maintainers_id: <some_team_id> maintainers_team: <some_team_name>
repo_milestonerepo_milestone: <some_repo_name>: maintainers_id: <some_team_id> maintainers_team: <some_team_name>
- July 2, 2018 the
triggerplugin will now trust PRs from repo collaborators. Useonly_org_members: truein the trigger config to temporarily disable this behavior. - June 14, 2018 the
updateconfigplugin will only add data to yourConfigMapsusing the basename of the updated file, instead of using that and also duplicating the data using the name of theConfigMapas a key - June 1, 2018 all unquoted
booleanfields in config.yaml that were unmarshall into typestringnow need to be quoted to avoid unmarshalling error. - May 9, 2018
decklogs for jobs run asPodswill now return logs for the"test"container only. - April 2, 2018
updateconfigformat has been changed fromtopath/to/some/other/thing: configName
path/to/some/other/thing: Name: configName # If unspecified, Namespace default to the value of ProwJobNamespace. Namespace: myNamespace
- March 15, 2018
jenkins_operatoris removed from the config in favor ofjenkins_operators. - March 1, 2018
MilestoneStatushas been removed from the plugins Configuration in favor of theMilestonewhich is shared between two plugins: 1)milestonestatusand 2)milestone. The milestonestatus plugin now uses theMilestoneobject to get the maintainers team ID - February 27, 2018
jenkins-operatordoes not use$BUILD_IDas a fallback to$PROW_JOB_IDanymore. - February 15, 2018
jenkins-operatorcan now accept the--tot-urlflag and will use the connection tototto vend build identifiers asplankdoes, giving control over where in GCS artifacts land to Prow and away from Jenkins. Furthermore, the$BUILD_IDvariable in Jenkins jobs will now correctly point to the build identifier vended bytotand a new variable,$PROW_JOB_ID, points to the identifier used to link ProwJobs to Jenkins builds.$PROW_JOB_IDfallbacks to$BUILD_IDfor backwards-compatibility, ie. to not break in-flight jobs during the time of the jenkins-operator update. - February 1, 2018 The
config_updatersection inplugins.yamlnow uses amapsobject instead ofconfig_file,plugin_filestrings. Please switch over before July. - November 30, 2017 If you use tide, you'll need to switch your query format and bump all prow component versions to reflect the changes in #5754.
- November 14, 2017
horologium:0.17fixes cron job not being scheduled. - November 10, 2017 If you want to use cron feature in prow, you need to bump to:
hook:0.181,sinker:0.23,deck:0.62,splice:0.32,horologium:0.15plank:0.60,jenkins-operator:0.57andtide:0.12to avoid error spamming from the config parser. - November 7, 2017
plank:0.56fixes bug introduced inplank:0.53that affects controllers using an empty kubernetes selector. - November 7, 2017
jenkins-operator:0.51provides jobs with the$BUILD_IDvariable as well as the$buildIdvariable. The latter is deprecated and will be removed in a future version. - November 6, 2017
plank:0.55providesPodswith the$BUILD_IDvariable as well as the$BUILD_NUMBERvariable. The latter is deprecated and will be removed in a future version. - November 3, 2017 Added
EmptyDirvolume type. To update tohook:0.176+orhorologium:0.11+the following components must have the associated minimum versions:deck:0.58+,plank:0.54+,jenkins-operator:0.50+. - November 2, 2017
plank:0.53changes thetypelabel key toprow.k8s.io/typeand thejobannotation key toprow.k8s.io/jobadded in pods. - October 14, 2017
deck:0:53+needs to be updated in conjunction withjenkins-operator:0:48+since Jenkins logs are now exposed from the operator anddeckneeds to use theexternal_agent_logsoption in order to redirect requests to the locationjenkins-operatorexposes logs. - October 13, 2017
hook:0.174,plank:0.50, andjenkins-operator:0.47drop the deprecatedgithub-bot-nameflag. - October 2, 2017
hook:0.171: The label plugin was split into three plugins (label, sigmention, milestonestatus). Breaking changes:- The configuration key for the milestone maintainer team's ID has been
changed. Previously the team ID was stored in the plugins config at key
label>>milestone_maintainers_id. Now that the milestone status labels are handled in themilestonestatusplugin instead of thelabelplugin, the team ID is stored at keymilestonestatus>>maintainers_id. - The sigmention and milestonestatus plugins must be enabled on any repos that require them since their functionality is no longer included in the label plugin.
- The configuration key for the milestone maintainer team's ID has been
changed. Previously the team ID was stored in the plugins config at key
- September 3, 2017
sinker:0.17now deletes pods labeled byplank:0.42in order to avoid cleaning up unrelated pods that happen to be found in the same namespace prow runs pods. If you run other pods in the same namespace, you will have to manually delete or label the prow-owned pods, otherwise you can bulk-label all of them with the following command and let sinker collect them normally:kubectl label pods --all -n pod_namespace created-by-prow=true - September 1, 2017
deck:0.44andjenkins-operator:0.41controllers no longer provide a default value for the--jenkins-token-fileflag. Cluster administrators should provide--jenkins-token-file=/etc/jenkins/jenkinsexplicitly when upgrading to a new version of these components if they were previously relying on the default. For more context, please see this pull request. - August 29, 2017 Configuration specific to plugins is now held in the
pluginsConfigMapand serialized in this repo in theplugins.yamlfile. Cluster administrators upgrading tohook:0.148or newer should move plugin configuration from the mainConfigMap. For more context, please see this pull request.