|
| 1 | +# Licensed to the Apache Software Foundation (ASF) under one |
| 2 | +# or more contributor license agreements. See the NOTICE file |
| 3 | +# distributed with this work for additional information |
| 4 | +# regarding copyright ownership. The ASF licenses this file |
| 5 | +# to you under the Apache License, Version 2.0 (the |
| 6 | +# "License"); you may not use this file except in compliance |
| 7 | +# with the License. You may obtain a copy of the License at |
| 8 | +# |
| 9 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | +# |
| 11 | +# Unless required by applicable law or agreed to in writing, |
| 12 | +# software distributed under the License is distributed on an |
| 13 | +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| 14 | +# KIND, either express or implied. See the License for the |
| 15 | +# specific language governing permissions and limitations |
| 16 | +# under the License. |
| 17 | + |
| 18 | +# Run the per-artifact third-party license validation matrix that ASF |
| 19 | +# release policy requires for convenience binaries (Docker images, PyPI |
| 20 | +# wheels). Single source of truth shared by the pre-merge gate |
| 21 | +# (.github/workflows/_common.yml) and the release gate |
| 22 | +# (.github/workflows/publish.yml). Adding a new convenience artifact |
| 23 | +# means adding ONE step here, never two. |
| 24 | + |
| 25 | +name: validate-third-party-licenses |
| 26 | +description: Validate every published artifact's bundled third-party licenses against the ASF accept list. |
| 27 | +inputs: |
| 28 | + node-version: |
| 29 | + description: "Node.js version used by the npm path" |
| 30 | + required: false |
| 31 | + default: "23" |
| 32 | + |
| 33 | +runs: |
| 34 | + using: composite |
| 35 | + steps: |
| 36 | + - name: Setup Node.js |
| 37 | + uses: actions/setup-node@v6 |
| 38 | + with: |
| 39 | + node-version: ${{ inputs.node-version }} |
| 40 | + |
| 41 | + - name: Setup Rust with cache |
| 42 | + uses: ./.github/actions/utils/setup-rust-with-cache |
| 43 | + with: |
| 44 | + read-cache: "false" |
| 45 | + |
| 46 | + - name: Install cargo-about |
| 47 | + shell: bash |
| 48 | + run: | |
| 49 | + TARGET="$(uname -m)-unknown-linux-musl" |
| 50 | + curl -sSfL "https://github.com/EmbarkStudios/cargo-about/releases/download/0.9.0/cargo-about-0.9.0-${TARGET}.tar.gz" \ |
| 51 | + | tar -xz -C "$HOME/.cargo/bin" --strip-components=1 \ |
| 52 | + "cargo-about-0.9.0-${TARGET}/cargo-about" |
| 53 | +
|
| 54 | + - name: Validate apache/iggy bundle (server + CLI + embedded web) |
| 55 | + shell: bash |
| 56 | + run: ./scripts/ci/third-party-licenses.sh --validate |
| 57 | + --manifest core/server/Cargo.toml |
| 58 | + --manifest core/cli/Cargo.toml |
| 59 | + --manifest web |
| 60 | + |
| 61 | + - name: Validate iggy-mcp bundle |
| 62 | + shell: bash |
| 63 | + run: ./scripts/ci/third-party-licenses.sh --validate --manifest core/ai/mcp/Cargo.toml |
| 64 | + |
| 65 | + - name: Validate iggy-bench-dashboard bundle |
| 66 | + shell: bash |
| 67 | + run: ./scripts/ci/third-party-licenses.sh --validate --manifest core/bench/dashboard/server/Cargo.toml |
| 68 | + |
| 69 | + - name: Validate iggy-connect bundle |
| 70 | + shell: bash |
| 71 | + run: ./scripts/ci/third-party-licenses.sh --validate --manifest core/connectors/runtime/Cargo.toml |
| 72 | + |
| 73 | + - name: Validate Python wheel bundle |
| 74 | + shell: bash |
| 75 | + run: ./scripts/ci/third-party-licenses.sh --validate --manifest foreign/python/Cargo.toml |
| 76 | + |
| 77 | + - name: Validate web UI bundle |
| 78 | + shell: bash |
| 79 | + run: ./scripts/ci/third-party-licenses.sh --validate --manifest web |
0 commit comments