Skip to content

feat: initial CI/CD workflow for uds2sovd-proxy#3

Open
arvindr19 wants to merge 5 commits intoeclipse-opensovd:mainfrom
arvindr19:feature/initial-implementation
Open

feat: initial CI/CD workflow for uds2sovd-proxy#3
arvindr19 wants to merge 5 commits intoeclipse-opensovd:mainfrom
arvindr19:feature/initial-implementation

Conversation

@arvindr19
Copy link

@arvindr19 arvindr19 commented Feb 25, 2026

Summary

initial CI/CD workflow for uds2sovd-proxy

Checklist

  • I have tested my changes locally
  • I have added or updated documentation
  • I have linked related issues or discussions
  • I have added or updated tests

@arvindr19 arvindr19 force-pushed the feature/initial-implementation branch from 79ffa38 to 04dfc15 Compare February 25, 2026 06:25
@arvindr19 arvindr19 marked this pull request as draft February 25, 2026 06:28
@arvindr19 arvindr19 changed the title feat: initial uds2sovd-proxy implementation with CI/CD feat: initial CI/CD workflow for uds2sovd-proxy Feb 25, 2026
needs: format_and_clippy_nightly_toolchain_pinned
concurrency:
group: format_and_clippy_nightly_toolchain_latest-${{ github.ref }}
runs-on: ubuntu-latest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good for now but we should create a github issue to follow-up on this topic. since CI workflows should never depend on a latest image. imagine someone updating this and potentially breaking all CI workflow due to some potential incompatibility

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. we're using ubuntu-latest and windows-latest which can introduce breaking changes. I'll create a follow-up issue.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#5

concurrency:
group: format_and_clippy_nightly_toolchain_latest-${{ github.ref }}
runs-on: ubuntu-latest
continue-on-error: true
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

really? why not fail fast? that would save resources (which are expensive)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addressed, used fast-fail

deny.toml Outdated
[graph]
targets = [
"aarch64-unknown-linux-gnu",
"aarch64-apple-darwin",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

really required?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added TODO, BTW which platform we support officially?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for OpenSOVD, I must admit I cannot say. For S-CORE, however, we actually need aarch64-qnx-nto-gnu

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept targets and Added TODO, will update once we know which platforms are supported.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would disagree here. Please remove especially such one until we know exactly that we really need to support it.

deny.toml Outdated
# List of explicitly allowed licenses
# See https://spdx.org/licenses/ for list of possible licenses
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
allow = ["Apache-2.0", "BSD-3-Clause", "ISC", "MIT", "Unicode-3.0", "Zlib"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is unexpected. we should doublecheck. I though that that only "Apache-2.0" as well as "MIT" would be allowed

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As of now, we don’t need any licenses other than Apache-2.0 and MIT. However, if we use crates in the future that are licensed under something else, we’ll need to add those licenses here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but then we must also only add such new allowed licenses here exactly at that point. So for now, let's just stick to these two ones.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kept only 2 licenses Apache-2.0 and MIT

deny.toml Outdated
Comment on lines 66 to 67
unknown-registry = "warn"
unknown-git = "warn"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not deny?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to know, Updated to deny

Comment on lines +71 to +72
"https://github.com/alexmohr/aide.git",
"https://github.com/alexmohr/flatbuffers.git",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add comments that these are subject to be clarified and/or removed

Copy link
Author

@arvindr19 arvindr19 Feb 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added TODO as comment

]
```

## Imports
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add newline after for consistency

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.88.0
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please also create a follow-up issue that this property/setting must get consumed via cicd-workflows repo

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

created issue #6

- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: false
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so clippy really does not need any deps of the code it checks?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No separate dependency fetch step is needed: cargo clippy is a semantic linter that requires compiled dependencies.
Cargo automatically resolves, downloads, and compiles all crates from the registry as part of the clippy invocation, no explicit cargo fetch step is require

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks for clarifying :)

Comment on lines +42 to +49
- name: Format and Clippy - Nightly toolchain latest
uses: eclipse-opensovd/cicd-workflows/rust-lint-and-format-action@f829f9a9b93129170b25ae6769985ddff14fd252
with:
toolchain: nightly
github-token: ${{ secrets.GITHUB_TOKEN }}
fail-on-format-error: "false"
fail-on-clippy-error: "false"
clippy-deny-warnings: "false"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why this duplicated workflow?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This step is intentionally non-blocking (all fail-on-* are "false") it provides early visibility into upcoming nightly breakage so issues can be fixed before the pinned toolchain is updated.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So what would be the benefit for devs' PRs? So what would they do? Fix stuff proactively, is that the rationale?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO Yes, proactive fixing is exactly the rationale. The non-blocking nightly step acts as an early warning system. When a developer opens a PR, they immediately see without any extra effort, whether their code is on a collision course with an upcoming nightly toolchain change. They can choose to fix it then and there, while the context is fresh, rather than being surprised later

deny.toml Outdated
[graph]
targets = [
"aarch64-unknown-linux-gnu",
"aarch64-apple-darwin",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would disagree here. Please remove especially such one until we know exactly that we really need to support it.

deny.toml Outdated
# [possible values: any SPDX 3.11 short identifier (+ optional exception)].
allow = ["Apache-2.0", "MIT"]

confidence-threshold = 0.8
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is this property about?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minimum confidence score (0.0-1.0) for license detection heuristics.
cargo-deny uses text similarity to detect licenses when an SPDX identifier is absent. 0.8 means the detected license must match the known template at 80% similarity before it is accepted. Values below this threshold are treated as unknown and denied.

Copy link
Contributor

@stmuench stmuench Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, then let's maybe start with 0.9 instead and lower the value if really required at some point?

@arvindr19 arvindr19 force-pushed the feature/initial-implementation branch from b088bea to 832c05f Compare February 27, 2026 10:26
Copy link
Contributor

@stmuench stmuench left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we somehow invoke these new workflow manually for this PR? To be sure that they are actually working here in github?

@arvindr19
Copy link
Author

Can we somehow invoke these new workflow manually for this PR? To be sure that they are actually working here in github?
Explored couple of options, nothing worked.
workflow_dispatch requires the workflow file to exist on the repo's default branch (main). Both the upstream and fork have an empty main, the workflows only exist on fork repo's feature/initial-implementation.
The only fix I think is to merge this PR first. Once these files land on main, every subsequent PR will automatically trigger them.

@arvindr19 arvindr19 marked this pull request as ready for review February 27, 2026 13:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants