diff --git a/build.gradle.kts b/build.gradle.kts index 28472b13..c3f92107 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -54,14 +54,13 @@ repositories { } } mavenCentral() - } val isDevelopmentRelease = !hasProperty("finalRelease") val releaseVersion = releaseVersion() val releaseNotes = releaseNotes() val distributionVersion = distributionVersion() -val buildScanSummaryVersion = "1.0.4-2024.1" +val buildScanSummaryVersion = "1.0.5-2024.1" allprojects { version = releaseVersion.get() diff --git a/components/licenses/NOTICE b/components/licenses/NOTICE index 97a7013b..478424cf 100644 --- a/components/licenses/NOTICE +++ b/components/licenses/NOTICE @@ -12,22 +12,12 @@ associated with each component. **SECTION 1: Apache License, V2.0** - * Google Error Prone Annotations - * com.google.errorprone:error_prone_annotations - * Google Guava - * com.google.guava:guava - * com.google.guava:failureaccess - * com.google.guava:listenablefuture * Google Gson * com.google.code.gson:gson * Gradle Develocity Plugin/Extension Adapters * com.gradle:develocity-maven-extension-adapters * Gradle Common Custom User Data Maven Extension * com.gradle:common-custom-user-data-maven-extension - * Gson on Fire - * io.gsonfire:gson-fire - * JetBrains Annotations - * org.jetbrains:annotations * JetBrains Kotlin * org.jetbrains.kotlin:kotlin-stdlib * org.jetbrains.kotlin:kotlin-stdlib-common @@ -41,23 +31,8 @@ associated with each component. * com.squareup.okhttp3:okhttp-tls * Square Okio * com.squareup.okio:okio-jvm - * Swagger Core - Annotations - * io.swagger:swagger-annotations - -**SECTION 2: Common Development and Distribution License (CDDL) v1.0 and GNU General Public License (GPL) v2 with Classpath Exception** - * JAX-RS - * javax.ws.rs:javax.ws.rs-api - * javax.ws.rs:jsr311-api - * Javax Annotations - * javax.annotation:javax.annotation-api - * Type Tools Checker Framework - * org.checkerframework:checker-qual - -**SECTION 3: New BSD License** - * Findbugs JSR 305 - * com.google.code.findbugs:jsr305 - -**SECTION 4: Gradle License** + +**SECTION 2: Gradle License** * Build Scan Summary * com.gradle:build-scan-summary * Gradle Enterprise Maven Extension @@ -66,38 +41,6 @@ associated with each component. SECTION 1: Apache License, V2.0 ================================ -Google Error Prone Annotations -------------------------------- -Copyright 2023 Google, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -Google Guava ------------- -Copyright 2024 Google, Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - Google Gson ------------ Copyright 2024 Google, Inc. @@ -146,38 +89,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -Gson on Fire -------------- -Copyright 2015 Julio Viera - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -JetBrains Annotations ---------------------- -Copyright 2000-2016 JetBrains s.r.o. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - JetBrains Kotlin --------------------- Copyright 2022 JetBrains s.r.o. @@ -242,479 +153,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -Swagger Core - Annotations ---------------------------- -Copyright 2023 SmartBear Software - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -SECTION 2: Common Development and Distribution License (CDDL) v1.0 and -GNU General Public License (GPL) v2 with Classpath Exception -==================================================================================================================================== - -JAX-RS ------- -Copyright 2009 Oracle, Inc. - -Licensed under the Common Development and Distribution License (CDDL) v1.0 and GNU General Public License (GPL) v2 with Classpath Exception -See https://javaee.github.io/jsr311/LICENSE - -Javax Annotation ----------------- -Copyright 2007 Oracle, Inc. - -Licensed under the Common Development and Distribution License (CDDL) v1.0 and GNU General Public License (GPL) v2 with Classpath Exception -See https://github.com/javaee/javax.annotation/blob/master/LICENSE - -Type Tools Checker Framework ----------------------------- -The Checker Framework -Copyright 2004-present by the Checker Framework developers - - -Most of the Checker Framework is licensed under the GNU General Public -License, version 2 (GPL2), with the classpath exception. The text of this -license appears below. This is the same license used for OpenJDK. - -A few parts of the Checker Framework have more permissive licenses, notably -the parts that you might want to include with your own program. - - * The annotations and utility files are licensed under the MIT License. - (The text of this license also appears below.) This applies to - checker-qual*.jar and checker-util.jar and all the files that appear in - them, which is all files in checker-qual and checker-util directories. - It also applies to the cleanroom implementations of - third-party annotations (in checker/src/testannotations/, - framework/src/main/java/org/jmlspecs/, and - framework/src/main/java/com/google/). - -The Checker Framework includes annotations for some libraries. Those in -.astub files use the MIT License. Those in https://github.com/typetools/jdk -(which appears in the annotated-jdk directory of file checker.jar) use the -GPL2 license. - -Some external libraries that are included with the Checker Framework -distribution have different licenses. Here are some examples. - - * JavaParser is dual licensed under the LGPL or the Apache license -- you - may use it under whichever one you want. (The JavaParser source code - contains a file with the text of the GPL, but it is not clear why, since - JavaParser does not use the GPL.) See - https://github.com/typetools/stubparser . - - * Annotation Tools (https://github.com/typetools/annotation-tools) uses - the MIT license. - - * Libraries in plume-lib (https://github.com/plume-lib/) are licensed - under the MIT License. - -=========================================================================== - -The GNU General Public License (GPL) - -Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Everyone is permitted to copy and distribute verbatim copies of this license -document, but changing it is not allowed. - -Preamble - -The licenses for most software are designed to take away your freedom to share -and change it. By contrast, the GNU General Public License is intended to -guarantee your freedom to share and change free software--to make sure the -software is free for all its users. This General Public License applies to -most of the Free Software Foundation's software and to any other program whose -authors commit to using it. (Some other Free Software Foundation software is -covered by the GNU Library General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom to -distribute copies of free software (and charge for this service if you wish), -that you receive source code or can get it if you want it, that you can change -the software or use pieces of it in new free programs; and that you know you -can do these things. - -To protect your rights, we need to make restrictions that forbid anyone to deny -you these rights or to ask you to surrender the rights. These restrictions -translate to certain responsibilities for you if you distribute copies of the -software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or for -a fee, you must give the recipients all the rights that you have. You must -make sure that they, too, receive or can get the source code. And you must -show them these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) -offer you this license which gives you legal permission to copy, distribute -and/or modify the software. - -Also, for each author's protection and ours, we want to make certain that -everyone understands that there is no warranty for this free software. If the -software is modified by someone else and passed on, we want its recipients to -know that what they have is not the original, so that any problems introduced -by others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We -wish to avoid the danger that redistributors of a free program will -individually obtain patent licenses, in effect making the program proprietary. -To prevent this, we have made it clear that any patent must be licensed for -everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification -follow. - -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains a notice -placed by the copyright holder saying it may be distributed under the terms of -this General Public License. The "Program", below, refers to any such program -or work, and a "work based on the Program" means either the Program or any -derivative work under copyright law: that is to say, a work containing the -Program or a portion of it, either verbatim or with modifications and/or -translated into another language. (Hereinafter, translation is included -without limitation in the term "modification".) Each licensee is addressed as -"you". - -Activities other than copying, distribution and modification are not covered by -this License; they are outside its scope. The act of running the Program is -not restricted, and the output from the Program is covered only if its contents -constitute a work based on the Program (independent of having been made by -running the Program). Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's source code as -you receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice and -disclaimer of warranty; keep intact all the notices that refer to this License -and to the absence of any warranty; and give any other recipients of the -Program a copy of this License along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you may -at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, thus -forming a work based on the Program, and copy and distribute such modifications -or work under the terms of Section 1 above, provided that you also meet all of -these conditions: - - a) You must cause the modified files to carry prominent notices stating - that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in whole or - in part contains or is derived from the Program or any part thereof, to be - licensed as a whole at no charge to all third parties under the terms of - this License. - - c) If the modified program normally reads commands interactively when run, - you must cause it, when started running for such interactive use in the - most ordinary way, to print or display an announcement including an - appropriate copyright notice and a notice that there is no warranty (or - else, saying that you provide a warranty) and that users may redistribute - the program under these conditions, and telling the user how to view a copy - of this License. (Exception: if the Program itself is interactive but does - not normally print such an announcement, your work based on the Program is - not required to print an announcement.) - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Program, and can be reasonably -considered independent and separate works in themselves, then this License, and -its terms, do not apply to those sections when you distribute them as separate -works. But when you distribute the same sections as part of a whole which is a -work based on the Program, the distribution of the whole must be on the terms -of this License, whose permissions for other licensees extend to the entire -whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise the -right to control the distribution of derivative or collective works based on -the Program. - -In addition, mere aggregation of another work not based on the Program with the -Program (or with a work based on the Program) on a volume of a storage or -distribution medium does not bring the other work under the scope of this -License. - -3. You may copy and distribute the Program (or a work based on it, under -Section 2) in object code or executable form under the terms of Sections 1 and -2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable source - code, which must be distributed under the terms of Sections 1 and 2 above - on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three years, to - give any third party, for a charge no more than your cost of physically - performing source distribution, a complete machine-readable copy of the - corresponding source code, to be distributed under the terms of Sections 1 - and 2 above on a medium customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer to - distribute corresponding source code. (This alternative is allowed only - for noncommercial distribution and only if you received the program in - object code or executable form with such an offer, in accord with - Subsection b above.) - -The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all -the source code for all modules it contains, plus any associated interface -definition files, plus the scripts used to control compilation and installation -of the executable. However, as a special exception, the source code -distributed need not include anything that is normally distributed (in either -source or binary form) with the major components (compiler, kernel, and so on) -of the operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the source -code from the same place counts as distribution of the source code, even though -third parties are not compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as -expressly provided under this License. Any attempt otherwise to copy, modify, -sublicense or distribute the Program is void, and will automatically terminate -your rights under this License. However, parties who have received copies, or -rights, from you under this License will not have their licenses terminated so -long as such parties remain in full compliance. - -5. You are not required to accept this License, since you have not signed it. -However, nothing else grants you permission to modify or distribute the Program -or its derivative works. These actions are prohibited by law if you do not -accept this License. Therefore, by modifying or distributing the Program (or -any work based on the Program), you indicate your acceptance of this License to -do so, and all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the Program), -the recipient automatically receives a license from the original licensor to -copy, distribute or modify the Program subject to these terms and conditions. -You may not impose any further restrictions on the recipients' exercise of the -rights granted herein. You are not responsible for enforcing compliance by -third parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), conditions -are imposed on you (whether by court order, agreement or otherwise) that -contradict the conditions of this License, they do not excuse you from the -conditions of this License. If you cannot distribute so as to satisfy -simultaneously your obligations under this License and any other pertinent -obligations, then as a consequence you may not distribute the Program at all. -For example, if a patent license would not permit royalty-free redistribution -of the Program by all those who receive copies directly or indirectly through -you, then the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply and -the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or -other property right claims or to contest validity of any such claims; this -section has the sole purpose of protecting the integrity of the free software -distribution system, which is implemented by public license practices. Many -people have made generous contributions to the wide range of software -distributed through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing to -distribute software through any other system and a licensee cannot impose that -choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain -countries either by patents or by copyrighted interfaces, the original -copyright holder who places the Program under this License may add an explicit -geographical distribution limitation excluding those countries, so that -distribution is permitted only in or among countries not thus excluded. In -such case, this License incorporates the limitation as if written in the body -of this License. - -9. The Free Software Foundation may publish revised and/or new versions of the -General Public License from time to time. Such new versions will be similar in -spirit to the present version, but may differ in detail to address new problems -or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any later -version", you have the option of following the terms and conditions either of -that version or of any later version published by the Free Software Foundation. -If the Program does not specify a version number of this License, you may -choose any version ever published by the Free Software Foundation. - -10. If you wish to incorporate parts of the Program into other free programs -whose distribution conditions are different, write to the author to ask for -permission. For software which is copyrighted by the Free Software Foundation, -write to the Free Software Foundation; we sometimes make exceptions for this. -Our decision will be guided by the two goals of preserving the free status of -all derivatives of our free software and of promoting the sharing and reuse of -software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR -THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE -STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE -PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND -PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, -YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL -ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE -PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR -INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA -BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER -OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible -use to the public, the best way to achieve this is to make it free software -which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach -them to the start of each source file to most effectively convey the exclusion -of warranty; and each file should have at least the "copyright" line and a -pointer to where the full notice is found. - - One line to give the program's name and a brief idea of what it does. - - Copyright (C) - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., 59 - Temple Place, Suite 330, Boston, MA 02111-1307 USA - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this when it -starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author Gnomovision comes - with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free - software, and you are welcome to redistribute it under certain conditions; - type 'show c' for details. - -The hypothetical commands 'show w' and 'show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may be -called something other than 'show w' and 'show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your school, -if any, to sign a "copyright disclaimer" for the program, if necessary. Here -is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - 'Gnomovision' (which makes passes at compilers) written by James Hacker. - - signature of Ty Coon, 1 April 1989 - - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General Public -License instead of this License. - - -"CLASSPATH" EXCEPTION TO THE GPL - -Certain source files distributed by Oracle America and/or its affiliates are -subject to the following clarification and special exception to the GPL, but -only where Oracle has expressly included in the particular source file's header -the words "Oracle designates this particular file as subject to the "Classpath" -exception as provided by Oracle in the LICENSE file that accompanied this code." - - Linking this library statically or dynamically with other modules is making - a combined work based on this library. Thus, the terms and conditions of - the GNU General Public License cover the whole combination. - - As a special exception, the copyright holders of this library give you - permission to link this library with independent modules to produce an - executable, regardless of the license terms of these independent modules, - and to copy and distribute the resulting executable under terms of your - choice, provided that you also meet, for each linked independent module, - the terms and conditions of the license of that module. An independent - module is a module which is not derived from or based on this library. If - you modify this library, you may extend this exception to your version of - the library, but you are not obligated to do so. If you do not wish to do - so, delete this exception statement from your version. - -MIT License: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - -SECTION 3: New BSD License -======================================================= - -Findbugs JSR 305 ----------------- -Copyright 2005 the University of Maryland - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the -following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following - disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -SECTION 4: Gradle License +SECTION 2: Gradle License ======================================================= Build Scan Summary diff --git a/components/scripts/gradle/01-validate-incremental-building.sh b/components/scripts/gradle/01-validate-incremental-building.sh index 71b17065..4ad5a5c1 100755 --- a/components/scripts/gradle/01-validate-incremental-building.sh +++ b/components/scripts/gradle/01-validate-incremental-building.sh @@ -62,7 +62,7 @@ execute() { rename_project_dir "build_${project_name}" "second-build_${project_name}" print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl print_summary @@ -109,7 +109,7 @@ wizard_execute() { print_bl explain_measure_build_results print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl explain_and_print_summary } @@ -139,8 +139,8 @@ print_gradle_command() { info "./gradlew --no-build-cache -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} -Dpts.enabled=false $*$(print_extra_args)" } -fetch_build_cache_metrics() { - process_build_scan_data_online +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_BRIEF" "$RUN_ID" } # Overrides summary.sh#print_performance_characteristics diff --git a/components/scripts/gradle/02-validate-local-build-caching-same-location.sh b/components/scripts/gradle/02-validate-local-build-caching-same-location.sh index 3317a0d5..e26b3922 100755 --- a/components/scripts/gradle/02-validate-local-build-caching-same-location.sh +++ b/components/scripts/gradle/02-validate-local-build-caching-same-location.sh @@ -63,7 +63,7 @@ execute() { rename_project_dir "build_${project_name}" "second-build_${project_name}" print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl print_summary @@ -111,7 +111,7 @@ wizard_execute() { print_bl explain_measure_build_results print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl explain_and_print_summary } @@ -144,8 +144,8 @@ print_gradle_command() { info "./gradlew --build-cache -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} -Dpts.enabled=false clean ${tasks}$(print_extra_args)" } -fetch_build_cache_metrics() { - process_build_scan_data_online +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_BRIEF" "$RUN_ID" } print_introduction() { diff --git a/components/scripts/gradle/03-validate-local-build-caching-different-locations.sh b/components/scripts/gradle/03-validate-local-build-caching-different-locations.sh index c4a5986f..afec3da4 100755 --- a/components/scripts/gradle/03-validate-local-build-caching-different-locations.sh +++ b/components/scripts/gradle/03-validate-local-build-caching-different-locations.sh @@ -64,7 +64,7 @@ execute() { execute_second_build print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl print_summary @@ -115,7 +115,7 @@ wizard_execute() { print_bl explain_measure_build_results print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl explain_and_print_summary } @@ -149,8 +149,8 @@ print_gradle_command() { info "./gradlew --build-cache -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} -Dpts.enabled=false clean ${tasks}$(print_extra_args)" } -fetch_build_cache_metrics() { - process_build_scan_data_online +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_BRIEF" "$RUN_ID" } print_introduction() { diff --git a/components/scripts/gradle/04-validate-remote-build-caching-ci-ci.sh b/components/scripts/gradle/04-validate-remote-build-caching-ci-ci.sh index 2809d891..99644187 100755 --- a/components/scripts/gradle/04-validate-remote-build-caching-ci-ci.sh +++ b/components/scripts/gradle/04-validate-remote-build-caching-ci-ci.sh @@ -52,7 +52,7 @@ main() { } execute() { - fetch_build_scans + process_build_scan_data make_experiment_dir print_bl @@ -91,7 +91,7 @@ wizard_execute() { explain_command_to_repeat_experiment_after_collecting_parameters print_bl - fetch_build_scans + process_build_scan_data make_experiment_dir print_bl @@ -116,8 +116,8 @@ validate_required_args() { fi } -fetch_build_scans() { - fetch_build_scans_and_build_time_metrics 'verbose_logging' "${build_scan_urls[@]}" +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_VERBOSE" "$RUN_ID_NONE" } # Overrides summary.sh#print_experiment_specific_summary_info diff --git a/components/scripts/gradle/05-validate-remote-build-caching-ci-local.sh b/components/scripts/gradle/05-validate-remote-build-caching-ci-local.sh index 95a158a7..b4173452 100755 --- a/components/scripts/gradle/05-validate-remote-build-caching-ci-local.sh +++ b/components/scripts/gradle/05-validate-remote-build-caching-ci-local.sh @@ -66,7 +66,7 @@ execute() { execute_build print_bl - process_build_scan_data_online + process_build_scan_data print_bl print_summary @@ -130,7 +130,7 @@ wizard_execute() { print_bl explain_measure_build_results print_bl - process_build_scan_data_online + process_build_scan_data print_bl explain_and_print_summary } @@ -224,6 +224,10 @@ execute_build() { invoke_gradle 1 "${args[@]}" } +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_BRIEF" "$RUN_ID_NONE" +} + # Overrides summary.sh#print_experiment_specific_summary_info print_experiment_specific_summary_info() { summary_row "Custom value mapping file:" "${mapping_file:-}" diff --git a/components/scripts/lib/build-scan-online.sh b/components/scripts/lib/build-scan-online.sh index a7b21ed3..7b1e424c 100644 --- a/components/scripts/lib/build-scan-online.sh +++ b/components/scripts/lib/build-scan-online.sh @@ -1,11 +1,31 @@ #!/usr/bin/env bash -# This is a helper function for the common pattern of reading Build Scan metadata -# from the build-scans.csv file, then retrieving build metrics using the -# Develocity API. +readonly LOGGING_BRIEF='brief_logging' +readonly LOGGING_VERBOSE='verbose_logging' +readonly RUN_ID_NONE='' + +# Main entrypoint for processing data online using the Build Scan summary tool. +# All scripts should call this function to fetch Build Scan data used in the +# experiment summary. +# +# USAGE: fetch_build_scans_and_build_time_metrics +# EXAMPLE: fetch_build_scans_and_build_time_metrics "$LOGGING_BRIEF" "$RUN_ID" +# +# should be set to the constant LOGGING_BRIEF or LOGGING_VERBOSE +# should be set to the constant RUN_ID or RUN_ID_NONE depending +# on whether the builds being queried for have a common run id, +# which will only be the case when both builds were produced +# during script execution process_build_scan_data_online() { + local logging_level="$1" + local run_id="$2" + + # Always call since it will only read if the metadata file exists read_build_scan_metadata - fetch_build_scans_and_build_time_metrics 'brief_logging' "${build_scan_urls[@]}" + + local build_scan_data + build_scan_data="$(fetch_build_scan_data "$logging_level" "$run_id")" + parse_build_scans_and_build_time_metrics "${build_scan_data}" } read_build_scan_metadata() { @@ -46,38 +66,25 @@ is_build_scan_metadata_missing() { return 0 } +# Used by CI / Local experiments to fetch data for the first CI build. fetch_single_build_scan() { local build_scan_url="$1" local build_scan_data - build_scan_data="$(fetch_build_scan_data 'verbose_logging' "${build_scan_url}")" + build_scan_data="$(fetch_build_scan_data "$LOGGING_VERBOSE" "$RUN_ID_NONE")" parse_single_build_scan "${build_scan_data}" } -# The value of logging_level should be either 'brief_logging' or -# 'verbose_logging' -fetch_build_scans_and_build_time_metrics() { - local logging_level="$1" - shift - local build_scan_urls=("$@") - - if [[ "${logging_level}" == 'verbose_logging' ]]; then - info "Fetching build scan data" - fi - - local build_scan_data - build_scan_data="$(fetch_build_scan_data "${logging_level}" "${build_scan_urls[@]}")" - - parse_build_scans_and_build_time_metrics "${build_scan_data}" -} - -# Note: Callers of this function require stdout to be clean. No logging can be -# done inside this function. +# WARNING: Experiment scripts should not call this function directly and instead +# use the process_build_scan_data_online or fetch_single_build_scan +# function. +# +# WARNING: Callers of this function require stdout to be clean. No logging can +# be done inside this function. fetch_build_scan_data() { local logging_level="$1" - shift - local build_scan_urls=("$@") + local run_id="$2" if [[ "${debug_mode}" == "on" ]]; then args+=("--debug") @@ -91,7 +98,7 @@ fetch_build_scan_data() { args+=("--network-settings-file" "${SCRIPT_DIR}/network.settings") fi - if [[ "${logging_level}" == "brief_logging" ]]; then + if [[ "${logging_level}" == "${LOGGING_BRIEF}" ]]; then args+=("--brief-logging") fi @@ -99,6 +106,10 @@ fetch_build_scan_data() { args+=("--build-scan-availability-wait-timeout" "60") fi + if [[ -n "${run_id}" ]]; then + args+=("--experiment-run-id" "$run_id") + fi + for run_num in "${!build_scan_urls[@]}"; do args+=( "${run_num},${build_scan_urls[run_num]}" ) done diff --git a/components/scripts/maven/01-validate-local-build-caching-same-location.sh b/components/scripts/maven/01-validate-local-build-caching-same-location.sh index 75f142ad..da8d1031 100755 --- a/components/scripts/maven/01-validate-local-build-caching-same-location.sh +++ b/components/scripts/maven/01-validate-local-build-caching-same-location.sh @@ -62,7 +62,7 @@ execute() { rename_project_dir "build_${project_name}" "second-build_${project_name}" print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl print_summary @@ -110,7 +110,7 @@ wizard_execute() { print_bl explain_measure_build_results print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl explain_and_print_summary } @@ -149,8 +149,8 @@ print_maven_command() { info "./mvnw -Dscan -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} -Dpts.enabled=false clean ${tasks}$(print_extra_args)" } -fetch_build_cache_metrics() { - process_build_scan_data_online +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_BRIEF" "$RUN_ID" } print_introduction() { diff --git a/components/scripts/maven/02-validate-local-build-caching-different-locations.sh b/components/scripts/maven/02-validate-local-build-caching-different-locations.sh index e4aabd37..f0a3a0a6 100755 --- a/components/scripts/maven/02-validate-local-build-caching-different-locations.sh +++ b/components/scripts/maven/02-validate-local-build-caching-different-locations.sh @@ -62,7 +62,7 @@ execute() { execute_second_build print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl print_summary @@ -113,7 +113,7 @@ wizard_execute() { print_bl explain_measure_build_results print_bl - fetch_build_cache_metrics + process_build_scan_data print_bl explain_and_print_summary } @@ -153,8 +153,8 @@ print_maven_command() { info "./mvnw -Dscan -Dscan.tag.${EXP_SCAN_TAG} -Dscan.value.runId=${RUN_ID} -Dpts.enabled=false clean ${tasks}$(print_extra_args)" } -fetch_build_cache_metrics() { - process_build_scan_data_online +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_BRIEF" "$RUN_ID" } print_introduction() { diff --git a/components/scripts/maven/03-validate-remote-build-caching-ci-ci.sh b/components/scripts/maven/03-validate-remote-build-caching-ci-ci.sh index a3e5ff0b..16e31a5d 100755 --- a/components/scripts/maven/03-validate-remote-build-caching-ci-ci.sh +++ b/components/scripts/maven/03-validate-remote-build-caching-ci-ci.sh @@ -50,7 +50,7 @@ main() { } execute() { - fetch_build_scans + process_build_scan_data make_experiment_dir print_bl @@ -89,7 +89,7 @@ wizard_execute() { explain_command_to_repeat_experiment_after_collecting_parameters print_bl - fetch_build_scans + process_build_scan_data make_experiment_dir print_bl @@ -114,8 +114,8 @@ validate_required_args() { fi } -fetch_build_scans() { - fetch_build_scans_and_build_time_metrics 'verbose_logging' "${build_scan_urls[@]}" +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_VERBOSE" "$RUN_ID_NONE" } # Overrides summary.sh#print_experiment_specific_summary_info diff --git a/components/scripts/maven/04-validate-remote-build-caching-ci-local.sh b/components/scripts/maven/04-validate-remote-build-caching-ci-local.sh index dac9d8d9..5fb617ba 100755 --- a/components/scripts/maven/04-validate-remote-build-caching-ci-local.sh +++ b/components/scripts/maven/04-validate-remote-build-caching-ci-local.sh @@ -63,7 +63,7 @@ execute() { execute_build print_bl - process_build_scan_data_online + process_build_scan_data print_bl print_summary @@ -127,7 +127,7 @@ wizard_execute() { print_bl explain_measure_build_results print_bl - process_build_scan_data_online + process_build_scan_data print_bl explain_and_print_summary } @@ -219,6 +219,10 @@ execute_build() { invoke_maven 1 "${args[@]}" } +process_build_scan_data() { + process_build_scan_data_online "$LOGGING_BRIEF" "$RUN_ID_NONE" +} + # Overrides summary.sh#print_experiment_specific_summary_info print_experiment_specific_summary_info() { summary_row "Custom value mapping file:" "${mapping_file:-}" diff --git a/release/changes.md b/release/changes.md index d6360b04..9ba750bf 100644 --- a/release/changes.md +++ b/release/changes.md @@ -3,6 +3,7 @@ - [NEW] Support Develocity and Gradle Enterprise remote build cache connectors in the Gradle CI/Local experiment - [NEW] Better handling of remote build cache misconfigurations +- [NEW] Fewer calls are made to the Develocity API when possible, resulting in faster and more stable execution - [FIX] Scripts do not wait long enough for build scans to become available when `--fail-if-not-fully-cacheable` is used - [FIX] Successful exit code returned when performance characteristics are unknown and `--fail-if-not-fully-cacheable` is used - [FIX] Gradle experiments do not disable background Build Scan publication