ci: add weekly dependency check
This commit is contained in:
132
.github/workflows/dependency-check.yml
vendored
Normal file
132
.github/workflows/dependency-check.yml
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
name: Dependency Check
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Run every Monday at 9:00 AM UTC
|
||||
- cron: "0 9 * * 1"
|
||||
workflow_dispatch: # Allow manual triggering
|
||||
|
||||
env:
|
||||
RUST_VERSION: "1.90"
|
||||
|
||||
jobs:
|
||||
check-dependencies:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||
with:
|
||||
toolchain: ${{ env.RUST_VERSION }}
|
||||
cache-workspaces: |
|
||||
dep-check-test
|
||||
dep-check-no-aide
|
||||
|
||||
- name: Install cargo-generate and cargo-edit
|
||||
uses: taiki-e/install-action@v2
|
||||
with:
|
||||
tool: cargo-generate,cargo-edit
|
||||
|
||||
- name: Generate test project from template
|
||||
run: |
|
||||
cargo generate --path . --name dep-check-test \
|
||||
--define project_description="Dependency check test project" \
|
||||
--define env_prefix="APP" \
|
||||
--define default_port="3000" \
|
||||
--define default_log_level="info" \
|
||||
--define include_aide=true
|
||||
working-directory: ${{ github.workspace }}
|
||||
|
||||
- name: Check current dependencies
|
||||
run: cargo check --verbose
|
||||
working-directory: dep-check-test
|
||||
|
||||
# - name: Run tests with current dependencies
|
||||
# run: cargo test --verbose
|
||||
# working-directory: dep-check-test
|
||||
|
||||
- name: Upgrade dependencies
|
||||
run: |
|
||||
cargo upgrade --incompatible
|
||||
cat Cargo.toml
|
||||
working-directory: dep-check-test
|
||||
|
||||
- name: Check with upgraded dependencies
|
||||
run: cargo check --verbose
|
||||
working-directory: dep-check-test
|
||||
|
||||
- name: Build with upgraded dependencies
|
||||
run: cargo build --verbose
|
||||
working-directory: dep-check-test
|
||||
|
||||
# - name: Run tests with upgraded dependencies
|
||||
# run: cargo test --verbose
|
||||
# working-directory: dep-check-test
|
||||
|
||||
- name: Create issue on failure
|
||||
if: failure()
|
||||
run: |
|
||||
ISSUE_TITLE="⚠️ Weekly Dependency Check Failed"
|
||||
ISSUE_BODY="The weekly dependency check has failed. Please review the workflow run for details.
|
||||
|
||||
**Action Required:**
|
||||
- Review the failing dependencies
|
||||
- Update the template if needed
|
||||
- Test locally with \`cargo generate\` and \`cargo upgrade\`
|
||||
|
||||
**Workflow Run:** ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
||||
|
||||
# Create issue via Gitea API
|
||||
curl -X POST \
|
||||
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"${{ github.api_url }}/repos/${{ github.repository }}/issues" \
|
||||
-d "{
|
||||
\"title\": \"$ISSUE_TITLE\",
|
||||
\"body\": \"$ISSUE_BODY\",
|
||||
\"labels\": [\"dependency-bot\"]
|
||||
}"
|
||||
|
||||
- name: Generate test project without aide
|
||||
run: |
|
||||
cargo generate --path . --name dep-check-no-aide \
|
||||
--define project_description="Dependency check test project without aide" \
|
||||
--define env_prefix="APP" \
|
||||
--define default_port="3000" \
|
||||
--define default_log_level="info" \
|
||||
--define include_aide=false
|
||||
working-directory: ${{ github.workspace }}
|
||||
|
||||
- name: Check without aide (current dependencies)
|
||||
run: cargo check --verbose
|
||||
working-directory: dep-check-no-aide
|
||||
|
||||
- name: Upgrade dependencies (no aide)
|
||||
run: cargo upgrade --incompatible
|
||||
working-directory: dep-check-no-aide
|
||||
|
||||
- name: Check without aide (upgraded dependencies)
|
||||
run: cargo check --verbose
|
||||
working-directory: dep-check-no-aide
|
||||
|
||||
- name: Build without aide (upgraded dependencies)
|
||||
run: cargo build --verbose
|
||||
working-directory: dep-check-no-aide
|
||||
|
||||
# - name: Run tests without aide (upgraded dependencies)
|
||||
# run: cargo test --verbose
|
||||
# working-directory: dep-check-no-aide
|
||||
|
||||
- name: Summary
|
||||
if: success()
|
||||
run: |
|
||||
echo "✅ All dependency checks passed!"
|
||||
echo ""
|
||||
echo "Tested configurations:"
|
||||
echo " - With aide: dep-check-test"
|
||||
echo " - Without aide: dep-check-no-aide"
|
||||
echo ""
|
||||
echo "All upgraded dependencies are compatible."
|
||||
Reference in New Issue
Block a user