blob: 79cc3a3dde8f838614fbcaa4e8868105ddbe52c4 [file] [view]
<!--
~ 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.
-->
# Apache Release Verification Checklist
This markdown file serves as a local checklist for verifying the authenticity and integrity of Apache Software Foundation releases.
## 1. Source & Infrastructure
- [ ] **Official Download Domain**: Verify the file was downloaded from `*.apache.org` (e.g., `downloads.apache.org` or `archive.apache.org`) and not a third-party mirror.
- [ ] **Secure Protocol**: Ensure the download URL uses HTTPS (`https://`).
## 2. Cryptographic Key Import
- [ ] **Fetch KEYS File**: Download the official `KEYS` file from the main Apache project site.
- [ ] **Import to GPG keyring**: Run the command:
```bash
gpg --import KEYS
```
- [ ] **Verify Key Fingerprint**: (Optional but recommended) Cross-reference the key's fingerprint with known release managers listed on the official project page.
## 3. Cryptographic Signature Verification
- [ ] **Fetch ASC File**: Download the detached signature file (`.asc`) for your exact release version.
- [ ] **Execute Signature Check**: Run the verification command:
```bash
curl https://dist.apache.org/repos/dist/release/incubator/openserverless/KEYS -o KEYS
gpg --import KEYS
gpg --verify <filename>.<extension>.asc <filename>.<extension>
```
- [ ] **Confirm 'Good Signature'**: Ensure the output states `"Good signature from..."`. (Ignore the "not certified with a trusted signature" warning if you haven't explicitly set trust levels, provided the name matches the release manager).
## 4. Checksum Integrity Validation
- [ ] **Fetch Checksum File**: Download the `.sha512` or `.sha256` file corresponding to the release.
- [ ] **Generate Local Hash**: Compute the hash locally based on your OS:
- Linux: `sha512sum <filename>.<extension>`
- macOS: `shasum -a 512 <filename>.<extension>`
- Windows: `CertUtil -hashfile <filename>.<extension> SHA512`
- [ ] **Match Checksums**: Verify that your locally generated string matches the content of the downloaded checksum file exactly.
## 5. Archive Content & Compliance Auditing
- [ ] **Mandatory Root Files**: Unpack the archive and verify the root contains the required metadata files:
- `LICENSE`
- `NOTICE`
- [ ] **Informational Files**: Verify the presence of setup and project notes:
- `README` or `README.md`
- `RELEASE_NOTES` or `CHANGES`
- [ ] **Source Cleanliness**: For source distributions, check that no compiled binaries (`.jar`, `.class`, `.so`, `.dll`, or target/build folders) are accidentally bundled inside the package.
## 6.Build and Test the Sources
Execute:
- Linux: `./build-and-test-ubuntu.sh`
- macOS: `./build-and-test-mac.sh` (you need [Lima](https://lima-vm.io/))
- Windows: `.\build-and-test-windows.ps1` (you need a recent WSL )
Ensure it builds cleanly and all the test passes.