diff --git a/.github/workflows/check-test-vectors.yml b/.github/workflows/check-test-vectors.yml new file mode 100644 index 0000000000..ccf7bf5851 --- /dev/null +++ b/.github/workflows/check-test-vectors.yml @@ -0,0 +1,69 @@ +name: Check Test Vectors +on: + schedule: + # Run weekly on Wednesdays at 10 AM PT (6 PM UTC) + - cron: '0 18 * * 3' + workflow_dispatch: # Allow manual triggering + +permissions: + contents: write + pull-requests: write + +jobs: + check-vectors: + if: github.repository_owner == 'aws' + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Rust and Cargo + uses: dtolnay/rust-toolchain@stable + + - name: Install duvet + run: cargo install duvet --locked + + - name: Check test vectors are up-to-date + id: check_vectors + run: | + cd third_party/vectors + if python3 ./sync.py --check; then + echo "vectors_outdated=false" >> $GITHUB_OUTPUT + echo "✅ Test vectors are up-to-date" + else + echo "vectors_outdated=true" >> $GITHUB_OUTPUT + echo "❌ Test vectors are outdated" + fi + + - name: Create Pull Request for outdated vectors + if: steps.check_vectors.outputs.vectors_outdated == 'true' + uses: peter-evans/create-pull-request@v8 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: update-third-party-vectors + delete-branch: true + title: 'Update third-party test vectors' + body: | + ### Issues: + Automated check detected that some third-party test vectors in `third_party/vectors` need to be updated. + + ### Next Steps + - Run `cd third_party/vectors && python3 ./sync.py` locally to update vectors + - Review any new test vectors that are added + - Run `ninja -C build crypto_test` to ensure all tests pass + - Run `python3 util/generate_build_files.py` to update build files + - Verify `cd third_party/vectors && python3 ./sync.py --check` returns success + + By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license. + assignees: sgmenda + draft: false + + - name: Vectors up-to-date summary + if: steps.check_vectors.outputs.vectors_outdated == 'false' + run: | + echo "✅ Test vectors are up-to-date. No action needed."