+1, we also do this in Apache Shiro [1] and the aspectj-maven-plugin (mojohaus) [2].
We don't reuse workflows yet, but what you have is just great! Thanks! - Ben [1]: https://github.com/apache/shiro/blob/df2f5481260bd778226473a658d237c047b7e840/.github/workflows/maven.yml [2]: https://github.com/mojohaus/aspectj-maven-plugin/blob/e19704cc40017ac69408e007c423f4ddbe865bca/.github/workflows/maven.yml Am Fr., 15. Okt. 2021 um 01:45 Uhr schrieb Olivier Lamy <oliver.l...@gmail.com>: > > We had a discussion on slack about having a first build such as only > ubuntu/jdk1,8 before running all the matrix and holding a lot of nodes from > the Apache org.. > This PR definitely does not do this! So I don't understand why this has > been merged! > Remember (as far I understand) nodes are shared between all projects from > Apache org. > There is no need to hold a lot of nodes if we are sure it fail (especially > as Apache have a lot projects using gh-actions) > > On Fri, 15 Oct 2021 at 07:52, <slachiew...@apache.org> wrote: > > > This is an automated email from the ASF dual-hosted git repository. > > > > slachiewicz pushed a commit to branch main > > in repository > > https://gitbox.apache.org/repos/asf/maven-gh-actions-shared.git > > > > > > The following commit(s) were added to refs/heads/main by this push: > > new eee837a first workflow > > eee837a is described below > > > > commit eee837abbc62df4e1097841b7cec8c5db6b30e2a > > Author: Slawomir Jaranowski <s.jaranow...@gmail.com> > > AuthorDate: Thu Oct 14 22:41:33 2021 +0200 > > > > first workflow > > --- > > .github/workflows/maven-verify-with-its.yml | 67 +++++++++ > > .gitignore | 1 + > > LICENSE | 202 > > ++++++++++++++++++++++++++++ > > README.md | 43 +++++- > > 4 files changed, 312 insertions(+), 1 deletion(-) > > > > diff --git a/.github/workflows/maven-verify-with-its.yml > > b/.github/workflows/maven-verify-with-its.yml > > new file mode 100644 > > index 0000000..a24464d > > --- /dev/null > > +++ b/.github/workflows/maven-verify-with-its.yml > > @@ -0,0 +1,67 @@ > > +# Licensed to the Apache Software Foundation (ASF) under one > > +# or more contributor license agreements. See the NOTICE file > > +# distributed with this work for additional information > > +# regarding copyright ownership. The ASF licenses this file > > +# to you 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. > > + > > +name: Verify > > + > > +on: > > + workflow_call: > > + inputs: > > + os-matrix: > > + description: 'os matrix as json array' > > + default: '[ "ubuntu-latest", "windows-latest", "macOS-latest" ]' > > + type: string > > + > > + jdk-matrix: > > + description: 'jdk matrix as json array' > > + default: '[ "8", "11", "17" ]' > > + type: string > > + > > + matrix-exclude: > > + description: 'exclude for matrix as json' > > + default: '[]' > > + type: string > > + > > +jobs: > > + > > + verify: > > + name: ${{ matrix.os }} jdk-${{ matrix.jdk }} > > + > > + runs-on: ${{ matrix.os }} > > + > > + strategy: > > + fail-fast: true > > + matrix: > > + os: ${{ fromJSON( inputs.os-matrix ) }} > > + jdk: ${{ fromJSON( inputs.jdk-matrix ) }} > > + exclude: ${{ fromJSON( inputs.matrix-exclude ) }} > > + > > + steps: > > + - name: Checkout > > + uses: actions/checkout@v2.3.4 > > + > > + - name: Set up JDK > > + uses: actions/setup-java@v2.3.1 > > + with: > > + java-version: ${{ matrix.jdk }} > > + distribution: 'temurin' > > + cache: 'maven' > > + > > + - name: Build with Maven > > + run: mvn --errors --batch-mode --show-version -P run-its > > -D"invoker.streamLogsOnFailures" verify > > + > > + - name: Build Maven Site > > + run: mvn --errors --batch-mode --show-version site > > diff --git a/.gitignore b/.gitignore > > new file mode 100644 > > index 0000000..485dee6 > > --- /dev/null > > +++ b/.gitignore > > @@ -0,0 +1 @@ > > +.idea > > diff --git a/LICENSE b/LICENSE > > new file mode 100644 > > index 0000000..d645695 > > --- /dev/null > > +++ b/LICENSE > > @@ -0,0 +1,202 @@ > > + > > + Apache License > > + Version 2.0, January 2004 > > + http://www.apache.org/licenses/ > > + > > + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION > > + > > + 1. Definitions. > > + > > + "License" shall mean the terms and conditions for use, reproduction, > > + and distribution as defined by Sections 1 through 9 of this > > document. > > + > > + "Licensor" shall mean the copyright owner or entity authorized by > > + the copyright owner that is granting the License. > > + > > + "Legal Entity" shall mean the union of the acting entity and all > > + other entities that control, are controlled by, or are under common > > + control with that entity. For the purposes of this definition, > > + "control" means (i) the power, direct or indirect, to cause the > > + direction or management of such entity, whether by contract or > > + otherwise, or (ii) ownership of fifty percent (50%) or more of the > > + outstanding shares, or (iii) beneficial ownership of such entity. > > + > > + "You" (or "Your") shall mean an individual or Legal Entity > > + exercising permissions granted by this License. > > + > > + "Source" form shall mean the preferred form for making > > modifications, > > + including but not limited to software source code, documentation > > + source, and configuration files. > > + > > + "Object" form shall mean any form resulting from mechanical > > + transformation or translation of a Source form, including but > > + not limited to compiled object code, generated documentation, > > + and conversions to other media types. > > + > > + "Work" shall mean the work of authorship, whether in Source or > > + Object form, made available under the License, as indicated by a > > + copyright notice that is included in or attached to the work > > + (an example is provided in the Appendix below). > > + > > + "Derivative Works" shall mean any work, whether in Source or Object > > + form, that is based on (or derived from) the Work and for which the > > + editorial revisions, annotations, elaborations, or other > > modifications > > + represent, as a whole, an original work of authorship. For the > > purposes > > + of this License, Derivative Works shall not include works that > > remain > > + separable from, or merely link (or bind by name) to the interfaces > > of, > > + the Work and Derivative Works thereof. > > + > > + "Contribution" shall mean any work of authorship, including > > + the original version of the Work and any modifications or additions > > + to that Work or Derivative Works thereof, that is intentionally > > + submitted to Licensor for inclusion in the Work by the copyright > > owner > > + or by an individual or Legal Entity authorized to submit on behalf > > of > > + the copyright owner. For the purposes of this definition, > > "submitted" > > + means any form of electronic, verbal, or written communication sent > > + to the Licensor or its representatives, including but not limited to > > + communication on electronic mailing lists, source code control > > systems, > > + and issue tracking systems that are managed by, or on behalf of, the > > + Licensor for the purpose of discussing and improving the Work, but > > + excluding communication that is conspicuously marked or otherwise > > + designated in writing by the copyright owner as "Not a > > Contribution." > > + > > + "Contributor" shall mean Licensor and any individual or Legal Entity > > + on behalf of whom a Contribution has been received by Licensor and > > + subsequently incorporated within the Work. > > + > > + 2. Grant of Copyright License. Subject to the terms and conditions of > > + this License, each Contributor hereby grants to You a perpetual, > > + worldwide, non-exclusive, no-charge, royalty-free, irrevocable > > + copyright license to reproduce, prepare Derivative Works of, > > + publicly display, publicly perform, sublicense, and distribute the > > + Work and such Derivative Works in Source or Object form. > > + > > + 3. Grant of Patent License. Subject to the terms and conditions of > > + this License, each Contributor hereby grants to You a perpetual, > > + worldwide, non-exclusive, no-charge, royalty-free, irrevocable > > + (except as stated in this section) patent license to make, have > > made, > > + use, offer to sell, sell, import, and otherwise transfer the Work, > > + where such license applies only to those patent claims licensable > > + by such Contributor that are necessarily infringed by their > > + Contribution(s) alone or by combination of their Contribution(s) > > + with the Work to which such Contribution(s) was submitted. If You > > + institute patent litigation against any entity (including a > > + cross-claim or counterclaim in a lawsuit) alleging that the Work > > + or a Contribution incorporated within the Work constitutes direct > > + or contributory patent infringement, then any patent licenses > > + granted to You under this License for that Work shall terminate > > + as of the date such litigation is filed. > > + > > + 4. Redistribution. You may reproduce and distribute copies of the > > + Work or Derivative Works thereof in any medium, with or without > > + modifications, and in Source or Object form, provided that You > > + meet the following conditions: > > + > > + (a) You must give any other recipients of the Work or > > + Derivative Works a copy of this License; and > > + > > + (b) You must cause any modified files to carry prominent notices > > + stating that You changed the files; and > > + > > + (c) You must retain, in the Source form of any Derivative Works > > + that You distribute, all copyright, patent, trademark, and > > + attribution notices from the Source form of the Work, > > + excluding those notices that do not pertain to any part of > > + the Derivative Works; and > > + > > + (d) If the Work includes a "NOTICE" text file as part of its > > + distribution, then any Derivative Works that You distribute must > > + include a readable copy of the attribution notices contained > > + within such NOTICE file, excluding those notices that do not > > + pertain to any part of the Derivative Works, in at least one > > + of the following places: within a NOTICE text file distributed > > + as part of the Derivative Works; within the Source form or > > + documentation, if provided along with the Derivative Works; or, > > + within a display generated by the Derivative Works, if and > > + wherever such third-party notices normally appear. The contents > > + of the NOTICE file are for informational purposes only and > > + do not modify the License. You may add Your own attribution > > + notices within Derivative Works that You distribute, alongside > > + or as an addendum to the NOTICE text from the Work, provided > > + that such additional attribution notices cannot be construed > > + as modifying the License. > > + > > + You may add Your own copyright statement to Your modifications and > > + may provide additional or different license terms and conditions > > + for use, reproduction, or distribution of Your modifications, or > > + for any such Derivative Works as a whole, provided Your use, > > + reproduction, and distribution of the Work otherwise complies with > > + the conditions stated in this License. > > + > > + 5. Submission of Contributions. Unless You explicitly state otherwise, > > + any Contribution intentionally submitted for inclusion in the Work > > + by You to the Licensor shall be under the terms and conditions of > > + this License, without any additional terms or conditions. > > + Notwithstanding the above, nothing herein shall supersede or modify > > + the terms of any separate license agreement you may have executed > > + with Licensor regarding such Contributions. > > + > > + 6. Trademarks. This License does not grant permission to use the trade > > + names, trademarks, service marks, or product names of the Licensor, > > + except as required for reasonable and customary use in describing > > the > > + origin of the Work and reproducing the content of the NOTICE file. > > + > > + 7. Disclaimer of Warranty. Unless required by applicable law or > > + agreed to in writing, Licensor provides the Work (and each > > + Contributor provides its Contributions) on an "AS IS" BASIS, > > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > > + implied, including, without limitation, any warranties or conditions > > + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A > > + PARTICULAR PURPOSE. You are solely responsible for determining the > > + appropriateness of using or redistributing the Work and assume any > > + risks associated with Your exercise of permissions under this > > License. > > + > > + 8. Limitation of Liability. In no event and under no legal theory, > > + whether in tort (including negligence), contract, or otherwise, > > + unless required by applicable law (such as deliberate and grossly > > + negligent acts) or agreed to in writing, shall any Contributor be > > + liable to You for damages, including any direct, indirect, special, > > + incidental, or consequential damages of any character arising as a > > + result of this License or out of the use or inability to use the > > + Work (including but not limited to damages for loss of goodwill, > > + work stoppage, computer failure or malfunction, or any and all > > + other commercial damages or losses), even if such Contributor > > + has been advised of the possibility of such damages. > > + > > + 9. Accepting Warranty or Additional Liability. While redistributing > > + the Work or Derivative Works thereof, You may choose to offer, > > + and charge a fee for, acceptance of support, warranty, indemnity, > > + or other liability obligations and/or rights consistent with this > > + License. However, in accepting such obligations, You may act only > > + on Your own behalf and on Your sole responsibility, not on behalf > > + of any other Contributor, and only if You agree to indemnify, > > + defend, and hold each Contributor harmless for any liability > > + incurred by, or claims asserted against, such Contributor by reason > > + of your accepting any such warranty or additional liability. > > + > > + END OF TERMS AND CONDITIONS > > + > > + APPENDIX: How to apply the Apache License to your work. > > + > > + To apply the Apache License to your work, attach the following > > + boilerplate notice, with the fields enclosed by brackets "[]" > > + replaced with your own identifying information. (Don't include > > + the brackets!) The text should be enclosed in the appropriate > > + comment syntax for the file format. We also recommend that a > > + file or class name and description of purpose be included on the > > + same "printed page" as the copyright notice for easier > > + identification within third-party archives. > > + > > + Copyright [yyyy] [name of copyright owner] > > + > > + 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. > > diff --git a/README.md b/README.md > > index 39fc18c..dd50b5e 100644 > > --- a/README.md > > +++ b/README.md > > @@ -1 +1,42 @@ > > -# maven-gh-actions-shared > > +# Apache Maven shared GitHub Actions > > + > > + > > +# Usage > > + > > +Create GitHub workflow in project with content: > > + > > +```yaml > > +name: Verify > > + > > +on: > > + push: > > + branches-ignore: > > + - dependabot/** > > + > > + pull_request: > > + > > +jobs: > > + build: > > + name: Verify > > + uses: > > apache/maven-gh-actions-shared/.github/workflows/maven-verify-with-its.yml@main > > + > > +``` > > + > > +Excludes from build matrix: > > + > > +```yaml > > +... > > + uses: > > apache/maven-gh-actions-shared/.github/workflows/maven-verify-with-its.yml@main > > + with: > > + matrix-exclude: > > > + [ > > + {"jdk": "8"}, # exclude jdk 8 from all builds > > + {"os": "windows-latest"}, # exclude windows from all builds > > + {"jdk": "8", "os": "windows-latest"} # exclude jkd 8 on windows > > + ] > > +``` > > + > > +# Resources > > + > > +- [Workflow syntax]( > > https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions > > ) > > +- [Reusing workflows]( > > https://docs.github.com/en/actions/learn-github-actions/reusing-workflows) > > > > > -- > Olivier Lamy > http://twitter.com/olamy | http://linkedin.com/in/olamy --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org For additional commands, e-mail: dev-h...@maven.apache.org