diff --git a/.github/workflows/README.md b/.github/workflows/README.md index d445d1a..6fc1d0a 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -8,9 +8,9 @@ At this time, there are three events that will initiate a workflow run: ## PRs and merges to main -We want a comprehensive but also quick check&test workflow. This should be testing all relevant/obvious feature sets, run on all major OSes, and of course include all the Rust goodness around cargo check, fmt, clippy and so on. +We want a comprehensive but also quick check & test workflow. This should be testing all relevant/obvious feature sets, run on all major OSes, and of course include all the Rust goodness around cargo check, fmt, clippy and so on. -This is implemented in [`check.yaml`](check.yaml) +This is implemented in [`check.yaml`](check.yaml) and [`check-dependencies.yaml`](check-dependencies.yaml) ## Release publication @@ -24,17 +24,12 @@ All the tests we can think of, however long they might take. For instance, we ca This is implemented in [`nightly.yaml`](nightly.yaml) +## uProtocol specification compatibility + +The uProtocol specification is evolving over time. In order to discover any discrepancies between the currently implemented version and the changes being introduced to the specification, we perform a nightly check that verifies if the current up-rust code base on the main branch can be compiled and test can be run successfully using the most recent revision of the uProtocol specification. + +This is implemented in [`latest-up-spec-compatibility.yaml`](latest-up-spec-compatibility.yaml) + ## Further workflow modules -In addition to the main workflows described above, there exist a number of modules that are used by these main workflows. They can also be run standalone, and are intendet to make composing the capabilities of our main workflows simpler. These are: - -- [`check-up-spec-compatibility.yaml`](check-up-spec-compatibility.yaml) - checks if the current main branch can be built against up-spec's main branch instead of its latest tag/release -- [`coverage.yaml`](coverage.yaml) - collects test code coverage, and can optionally upload the results to codecov.io - - Will publish coverage data to CodeCov if `${{ secrets.CODECOV_TOKEN }}` is set - - outputs: download URL for the workflow-generated coverage info file -- [`license-report.yaml`](license-report.yaml) - create a license report for `up-rust` and all its dependencies in html format - - outputs: download URL for the workflow-generated license report -- [`requirements-tracing.yaml`](requirements-tracing.yaml) - Run OpenFastTrace to verify that all requirements from uProtocol Specification are met -- [`test-featurematrix.yaml`](test-featurematrix.yaml) - Test all feature combinations on a range of OS platforms -- [`verify-msrv.yaml`](verify-msrv.yaml) - checks if the MSRV ('Minimum Supported Rust Version) declared in Cargo.toml is correct -- [`x-build.yaml`](x-build.yaml) - Run release builds on multiple architecture targets +In addition to the main workflows described above, there exist a number of modules that are used by these main workflows. These live in the [uProtocol CI/CD repository](https://github.com/eclipse-uprotocol/ci-cd) diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml index 72f4b86..6dfc413 100644 --- a/.github/workflows/check.yaml +++ b/.github/workflows/check.yaml @@ -118,6 +118,25 @@ jobs: run: | cargo doc --no-deps --all-features + check-links: + # check links contained in markdown, asciidoc and source code files + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: "recursive" + - name: Restore lychee cache + uses: actions/cache@v4 + with: + path: .lycheecache + key: cache-lychee-${{ github.sha }} + restore-keys: cache-lychee- + + - name: Run lychee + uses: lycheeverse/lychee-action@v2 + with: + args: "--cache --max-cache-age 1d --verbose --no-progress --exclude-path './target/' --exclude-path './up-spec/' -- './**/*.md' './**/*.rs' './**/*.adoc'" + feature-check: # Comprehensive check on dependencies for all feature flag combinations, excluding development dependencies needs: check diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 22bf608..ee5a04a 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -162,8 +162,6 @@ jobs: with: release_url: ${{ steps.latest_release_info.outputs.html_url }} artifacts_documentation: ${{ steps.upload_up_spec.outputs.browser_download_url }} - artifacts_coding_guidelines: https://github.com/AnotherDaniel/up-rust/blob/3a3ddcc2ee49ca6d33bd15577f769575718c22e5/.github/workflows/check.yaml#L85 - artifacts_release_process: https://github.com/AnotherDaniel/up-rust/blob/3a3ddcc2ee49ca6d33bd15577f769575718c22e5/.github/workflows/release.yaml artifacts_readme: ${{ steps.upload_readme.outputs.browser_download_url }} artifacts_requirements: ${{ steps.upload_up_spec.outputs.browser_download_url }} artifacts_testing: ${{ steps.upload_test_report.outputs.browser_download_url }},${{ steps.upload_test_coverage.outputs.browser_download_url }},${{ steps.upload_requirements_tracing_report.outputs.browser_download_url }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fdb2955..47b0b9e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -16,9 +16,7 @@ The project maintains the following source code repositories ## Eclipse Contributor Agreement Before your contribution can be accepted by the project team contributors must -electronically sign the Eclipse Contributor Agreement (ECA). - - +electronically sign the [Eclipse Contributor Agreement](https://www.eclipse.org/legal/ECA.php) (ECA). Commits that are provided by non-committers must have a Signed-off-by field in the footer indicating that the author is aware of the terms by which the @@ -26,8 +24,7 @@ contribution has been provided to the project. The non-committer must additionally have an Eclipse Foundation account and must have a signed Eclipse Contributor Agreement (ECA) on file. -For more information, please see the Eclipse Committer Handbook: - +For more information, please see the [Eclipse Committer Handbook](https://www.eclipse.org/projects/handbook/#resources-commit). ## Setting up a development environment diff --git a/Cargo.lock b/Cargo.lock index e079c53..8a9b947 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1526,7 +1526,7 @@ checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "up-rust" -version = "0.5.0" +version = "0.6.0" dependencies = [ "async-trait", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 3610ce1..b696368 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ name = "up-rust" readme = "README.md" repository = "https://github.com/eclipse-uprotocol/up-rust" rust-version = "1.82" -version = "0.5.0" +version = "0.6.0" [features] default = ["communication"] diff --git a/LICENSE b/LICENSE index 261eeb9..b447376 100644 --- a/LICENSE +++ b/LICENSE @@ -192,7 +192,7 @@ 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 + https://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, diff --git a/src/cloudevents.rs b/src/cloudevents.rs index c0d770c..36585d5 100644 --- a/src/cloudevents.rs +++ b/src/cloudevents.rs @@ -7,7 +7,7 @@ // 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 +// https://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, diff --git a/src/ustatus.rs b/src/ustatus.rs index 6814322..acb1e3d 100644 --- a/src/ustatus.rs +++ b/src/ustatus.rs @@ -164,7 +164,7 @@ mod tests { // [utest->req~ustatus-data-model-impl~1] fn test_ustatus_fail_with_code() { let details = vec![Any { - type_url: "https://google.com/timestamp".to_string(), + type_url: "type.googleapis.com/google.protobuf.Timestamp".to_string(), ..Default::default() }]; UCode::VALUES.iter().for_each(|code| { @@ -185,7 +185,7 @@ mod tests { code: UCode::CANCELLED.into(), message: Some("the message".to_string()), details: vec![Any { - type_url: "https://google.com/timestamp".to_string(), + type_url: "type.googleapis.com/google.protobuf.Timestamp".to_string(), ..Default::default() }], ..Default::default()