From 570c792bf430db168879b7474ff7c1ce172edb25 Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 21 Apr 2025 17:40:06 +0200 Subject: [PATCH 01/18] =?UTF-8?q?=F0=9F=91=B7=20Test=20the=20build=20for?= =?UTF-8?q?=20web=20on=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index feed5aa..b20f266 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -1,28 +1,26 @@ steps: - name: format image: rust:latest - commands: - - rustup component add rustfmt - - cargo fmt --all --check + commands: | + rustup component add rustfmt + cargo fmt --all --check - - name: clippy - image: rust:latest - commands: - - apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev - - rustup component add clippy - - cargo clippy --all --all-features -- -D warnings - # Not ready for clippy validation - failure: ignore - - # - name: build + # - name: clippy # image: rust:latest - # commands: - # - cargo install dioxus-cli --locked -j ${JOBS_NB:-default} - # - rustup target add wasm32-unknown-unknown - # - cargo install -f wasm-bindgen-cli --version 0.2.93 - # - dx build -r --platform web -- -j ${JOBS_NB:-default} + # commands: | + # apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev + # rustup component add clippy + # cargo clippy --all --all-features -- -D warnings + # # Not ready for clippy validation + # failure: ignore + + - name: build-web + # image: rust:latest + image: rg.fr-par.scw.cloud/asr-projects/dioxus-cli:asr-0.6.3 + commands: | + dx build -r --platform web -- -j ${JOBS_NB:-default} when: - event: pull_request - # - event: push - # branch: ${CI_REPO_DEFAULT_BRANCH} + - event: push + branch: ${CI_REPO_DEFAULT_BRANCH} From d29a3a0821fc77ad81d26b4f26591139823c0644 Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 21 Apr 2025 18:20:15 +0200 Subject: [PATCH 02/18] =?UTF-8?q?=F0=9F=91=B7=20Restore=20validation=20tri?= =?UTF-8?q?gger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index b20f266..1f5843c 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -22,5 +22,5 @@ steps: when: - event: pull_request - - event: push - branch: ${CI_REPO_DEFAULT_BRANCH} + # - event: push + # branch: ${CI_REPO_DEFAULT_BRANCH} From 28aa250f58fefbb5c6df95b5a181a051a5fe4ae4 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 03:46:57 +0200 Subject: [PATCH 03/18] =?UTF-8?q?=F0=9F=92=9A=20=20Use=20the=20custom=20di?= =?UTF-8?q?oxus-cli=20image=20to=20build=20the=20webclient=20dockerfile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index c47e365..2fc75c3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,4 @@ -FROM rust:1.86 AS builder - -# Homemade docker image providing the dioxus-cli -COPY --from=rg.fr-par.scw.cloud/asr-projects/dioxus-cli:asr-0.6.3 /usr/local/bin/dx /usr/local/bin/dx +FROM rg.fr-par.scw.cloud/asr-projects/dioxus-cli:asr-0.6.3 AS builder ARG JOBS_NB=${JOBS_NB:-default} # Disable incremental compilation @@ -10,6 +7,11 @@ ARG CARGO_INCREMENTAL=0 WORKDIR /usr/src/beau-gosse-du-92 +# git is required by the git-version crate +RUN apt update \ + && apt install -y --no-install-recommends git \ + && apt clean + COPY . . RUN dx build -r --platform web -- -j ${JOBS_NB} From e2c20e4c6419a1770fa39d13a1b5865f94ba4336 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 04:23:29 +0200 Subject: [PATCH 04/18] =?UTF-8?q?=F0=9F=92=9A=20=20Dry=20run=20to=20ensure?= =?UTF-8?q?=20that=20we're=20able=20to=20build=20the=20web=20Docker=20imag?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 9 ++++----- Dockerfile | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index 1f5843c..2393687 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -14,11 +14,10 @@ steps: # # Not ready for clippy validation # failure: ignore - - name: build-web - # image: rust:latest - image: rg.fr-par.scw.cloud/asr-projects/dioxus-cli:asr-0.6.3 - commands: | - dx build -r --platform web -- -j ${JOBS_NB:-default} + - name: build-web (dockerize) + image: woodpeckerci/plugin-kaniko + settings: + dry-run: true when: - event: pull_request diff --git a/Dockerfile b/Dockerfile index 2fc75c3..843e93d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rg.fr-par.scw.cloud/asr-projects/dioxus-cli:asr-0.6.3 AS builder +FROM rg.fr-par.scw.cloud/asr-projects/dioxus-cli-0.6.3:latest AS builder ARG JOBS_NB=${JOBS_NB:-default} # Disable incremental compilation From 18ee33d51299103370df522c45a3597a4d8dea95 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 04:27:03 +0200 Subject: [PATCH 05/18] =?UTF-8?q?=F0=9F=92=9A=20=20Add=20credential=20to?= =?UTF-8?q?=20pull=20images=20from=20our=20private=20Docker=20registry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index 2393687..5ba5a1e 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -17,6 +17,11 @@ steps: - name: build-web (dockerize) image: woodpeckerci/plugin-kaniko settings: + registry: rg.fr-par.scw.cloud + repo: asr-projects/beau-gosse-du-92-web + username: nologin + password: + from_secret: registry-password dry-run: true when: From 60756b7e72846679be13bae7428c09f65daa1cee Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 11:08:34 +0200 Subject: [PATCH 06/18] =?UTF-8?q?=F0=9F=91=B7=20=20Add=20cargo=20deny=20to?= =?UTF-8?q?ol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index 5ba5a1e..491173f 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -1,6 +1,6 @@ steps: - name: format - image: rust:latest + image: rust:1.86 commands: | rustup component add rustfmt cargo fmt --all --check @@ -14,7 +14,7 @@ steps: # # Not ready for clippy validation # failure: ignore - - name: build-web (dockerize) + - name: build - web (dockerize) image: woodpeckerci/plugin-kaniko settings: registry: rg.fr-par.scw.cloud @@ -24,6 +24,12 @@ steps: from_secret: registry-password dry-run: true + - name: audit - depedencies + image: rust:1.86 + command: | + cargo install --locked cargo-deny + cargo deny check + when: - event: pull_request # - event: push From 6b8cef176f2df4081f7cb755c9fe79c7dee76c25 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 11:35:41 +0200 Subject: [PATCH 07/18] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20=20Fix=20typo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index 491173f..f90e70b 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -14,6 +14,12 @@ steps: # # Not ready for clippy validation # failure: ignore + - name: audit - depedencies + image: rust:1.86 + commands: | + cargo install --locked cargo-deny + cargo deny check + - name: build - web (dockerize) image: woodpeckerci/plugin-kaniko settings: @@ -24,11 +30,6 @@ steps: from_secret: registry-password dry-run: true - - name: audit - depedencies - image: rust:1.86 - command: | - cargo install --locked cargo-deny - cargo deny check when: - event: pull_request From 285d4ba5900704ce52149340e09d1f059e4f15c1 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 11:36:45 +0200 Subject: [PATCH 08/18] =?UTF-8?q?=F0=9F=93=84=20Set=20AGPL-3.0-or-later=20?= =?UTF-8?q?license?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/Cargo.toml b/Cargo.toml index 4a03203..5f03045 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "beau-gosse-du-92" version = "0.1.0" edition = "2021" +license = "AGPL-3.0-or-later" [features] default = [] From d5e92f282a00ab2f680037cb46c09bab4148eaa4 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 11:48:41 +0200 Subject: [PATCH 09/18] =?UTF-8?q?=F0=9F=91=B7=20For=20now,=20Don't=20block?= =?UTF-8?q?=20PRs=20on=20clippy=20or=20cargo=20deny=20errors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index f90e70b..09d80f3 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -5,20 +5,22 @@ steps: rustup component add rustfmt cargo fmt --all --check - # - name: clippy - # image: rust:latest - # commands: | - # apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev - # rustup component add clippy - # cargo clippy --all --all-features -- -D warnings - # # Not ready for clippy validation - # failure: ignore + - name: clippy + image: rust:latest + commands: | + apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev + rustup component add clippy + cargo clippy --all --all-features -- -D warnings + # Not ready to block PR on fail + failure: ignore - name: audit - depedencies image: rust:1.86 commands: | cargo install --locked cargo-deny cargo deny check + # Not ready to block PR on fail + failure: ignore - name: build - web (dockerize) image: woodpeckerci/plugin-kaniko @@ -30,7 +32,6 @@ steps: from_secret: registry-password dry-run: true - when: - event: pull_request # - event: push From a9996d448c748517282d23376ffcbf86e2d17f82 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 11:52:15 +0200 Subject: [PATCH 10/18] =?UTF-8?q?=F0=9F=91=B7=20Run=20cargo=20deny=20only?= =?UTF-8?q?=20if=20we're=20able=20to=20build=20the=20web=20docker=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index 09d80f3..72fa91d 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -14,14 +14,6 @@ steps: # Not ready to block PR on fail failure: ignore - - name: audit - depedencies - image: rust:1.86 - commands: | - cargo install --locked cargo-deny - cargo deny check - # Not ready to block PR on fail - failure: ignore - - name: build - web (dockerize) image: woodpeckerci/plugin-kaniko settings: @@ -32,6 +24,14 @@ steps: from_secret: registry-password dry-run: true + - name: audit - dependencies + image: rust:1.86 + commands: | + cargo install --locked cargo-deny + cargo deny check + # Not ready to block PR on fail + failure: ignore + when: - event: pull_request # - event: push From 2bdd0b6a6d0a45508ad31061b324ba69414a29b4 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 13:27:50 +0200 Subject: [PATCH 11/18] =?UTF-8?q?=F0=9F=91=B7=20Add=20the=20cargo-deny=20c?= =?UTF-8?q?onfiguration=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deny.toml | 298 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 deny.toml diff --git a/deny.toml b/deny.toml new file mode 100644 index 0000000..9db3481 --- /dev/null +++ b/deny.toml @@ -0,0 +1,298 @@ +# This template contains all of the possible sections and their default values + +# Note that all fields that take a lint level have these possible values: +# * deny - An error will be produced and the check will fail +# * warn - A warning will be produced, but the check will not fail +# * allow - No warning or error will be produced, though in some cases a note +# will be + +# The values provided in this template are the default values that will be used +# when any section or field is not specified in your own configuration + +# Root options + +# The graph table configures how the dependency graph is constructed and thus +# which crates the checks are performed against +[graph] +# If 1 or more target triples (and optionally, target_features) are specified, +# only the specified targets will be checked when running `cargo deny check`. +# This means, if a particular package is only ever used as a target specific +# dependency, such as, for example, the `nix` crate only being used via the +# `target_family = "unix"` configuration, that only having windows targets in +# this list would mean the nix crate, as well as any of its exclusive +# dependencies not shared by any other crates, would be ignored, as the target +# list here is effectively saying which targets you are building for. +targets = [ + # The triple can be any string, but only the target triples built in to + # rustc (as of 1.40) can be checked against actual config expressions + #"x86_64-unknown-linux-musl", + # You can also specify which target_features you promise are enabled for a + # particular target. target_features are currently not validated against + # the actual valid features supported by the target architecture. + #{ triple = "wasm32-unknown-unknown", features = ["atomics"] }, +] +# When creating the dependency graph used as the source of truth when checks are +# executed, this field can be used to prune crates from the graph, removing them +# from the view of cargo-deny. This is an extremely heavy hammer, as if a crate +# is pruned from the graph, all of its dependencies will also be pruned unless +# they are connected to another crate in the graph that hasn't been pruned, +# so it should be used with care. The identifiers are [Package ID Specifications] +# (https://doc.rust-lang.org/cargo/reference/pkgid-spec.html) +#exclude = [] +# If true, metadata will be collected with `--all-features`. Note that this can't +# be toggled off if true, if you want to conditionally enable `--all-features` it +# is recommended to pass `--all-features` on the cmd line instead +all-features = false +# If true, metadata will be collected with `--no-default-features`. The same +# caveat with `all-features` applies +no-default-features = false +# If set, these feature will be enabled when collecting metadata. If `--features` +# is specified on the cmd line they will take precedence over this option. +#features = [] + +# The output table provides options for how/if diagnostics are outputted +[output] +# When outputting inclusion graphs in diagnostics that include features, this +# option can be used to specify the depth at which feature edges will be added. +# This option is included since the graphs can be quite large and the addition +# of features from the crate(s) to all of the graph roots can be far too verbose. +# This option can be overridden via `--feature-depth` on the cmd line +feature-depth = 1 + +# This section is considered when running `cargo deny check advisories` +# More documentation for the advisories section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html +[advisories] +# The path where the advisory databases are cloned/fetched into +#db-path = "$CARGO_HOME/advisory-dbs" +# The url(s) of the advisory databases to use +#db-urls = ["https://github.com/rustsec/advisory-db"] +# A list of advisory IDs to ignore. Note that ignored advisories will still +# output a note when they are encountered. +ignore = [ + #"RUSTSEC-0000-0000", + #{ id = "RUSTSEC-0000-0000", reason = "you can specify a reason the advisory is ignored" }, + #"a-crate-that-is-yanked@0.1.1", # you can also ignore yanked crate versions if you wish + #{ crate = "a-crate-that-is-yanked@0.1.1", reason = "you can specify why you are ignoring the yanked crate" }, +] +# If this is true, then cargo deny will use the git executable to fetch advisory database. +# If this is false, then it uses a built-in git library. +# Setting this to true can be helpful if you have special authentication requirements that cargo-deny does not support. +# See Git Authentication for more information about setting up git authentication. +#git-fetch-with-cli = true + +# This section is considered when running `cargo deny check licenses` +# More documentation for the licenses section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html +[licenses] +version = 2 +# 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 = [ + # Free software licenses compatible with (A)GPL. + # List extracted from: https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses + # "GPL-3.0", + # "GPL-2.0", + "LGPL-3.0", + # "LGPL-2.1", + "AGPL-3.0", + # "FSFAP", + "Apache-2.0", + "Apache-2.0 WITH LLVM-exception", + # "Artistic-2.0", + # "ClArtistic", + # "Sleepycat", + "BSL-1.0", + "BSD-3-Clause", + # "CECILL-2.0", + # "BSD-3-Clause-Clear", + # "ECL-2.0", + # "EFL-2.0", + # "EUDatagrid", + "MIT", + "BSD-2-Clause", + # "FTL", + # "HPND", + # "iMatix", + # "Imlib2", + # "IJG", + # "Intel", + "ISC", + "MPL-2.0", + "NCSA", + # "OLDAP-2.7", + # "NIST-PD", + # "CC-PDDC", + "CC0-1.0", + # "Python-2.0", + # "Ruby", + # "SGI-B-2.0", + # "SMLNJ", + # "UPL-1.0", + "Unlicense", + # "Vim", + # "W3C", + # "WTFPL", + # "X11", + # "XFree86-1.1", + "Zlib", + # "zlib-acknowledgement", + # "ZPL-2.0", + # "ZPL-2.1", + # Not expressely listed as (A)GPL compatible in the page above, but + # according to https://opensource.org/licenses/0BSD it is a modification + # of the ISC license, which is compatible. Its text is also extremely + # simple and allows using the code for any purpose + "0BSD", + # Permissive license used by the Unicode consortium, similar in spirit + # to other permissive licenses: + # https://spdx.org/licenses/Unicode-DFS-2016.html + "Unicode-DFS-2016", + # Permissive license used by the Unicode consortium, similar in spirit + # to other permissive licenses: + # https://spdx.org/licenses/Unicode-3.0.html + "Unicode-3.0", +] +# The confidence threshold for detecting a license from license text. +# The higher the value, the more closely the license text must be to the +# canonical license text of a valid SPDX license file. +# [possible values: any between 0.0 and 1.0]. +confidence-threshold = 0.8 +# Allow 1 or more licenses on a per-crate basis, so that particular licenses +# aren't accepted for every possible crate as with the normal allow list +exceptions = [ + # Each entry is the crate and version constraint, and its specific allow + # list + #{ allow = ["Zlib"], crate = "adler32" }, +] + +# Some crates don't have (easily) machine readable licensing information, +# adding a clarification entry for it allows you to manually specify the +# licensing information +# [[licenses.clarify]] +# The package spec the clarification applies to +# crate = "ring" +# The SPDX expression for the license requirements of the crate +# expression = "MIT AND ISC AND OpenSSL" +# One or more files in the crate's source used as the "source of truth" for +# the license expression. If the contents match, the clarification will be used +# when running the license check, otherwise the clarification will be ignored +# and the crate will be checked normally, which may produce warnings or errors +# depending on the rest of your configuration +# license-files = [ +#Each entry is a crate relative path, and the (opaque) hash of its contents +# { path = "LICENSE", hash = 0xbd0eed23 } +# ] + +[licenses.private] +# If true, ignores workspace crates that aren't published, or are only +# published to private registries. +# To see how to mark a crate as unpublished (to the official registry), +# visit https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field. +ignore = false +# One or more private registries that you might publish crates to, if a crate +# is only published to private registries, and ignore is true, the crate will +# not have its license(s) checked +registries = [ + #"https://sekretz.com/registry +] + +# This section is considered when running `cargo deny check bans`. +# More documentation about the 'bans' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html +[bans] +# Lint level for when multiple versions of the same crate are detected +multiple-versions = "warn" +# Lint level for when a crate version requirement is `*` +wildcards = "allow" +# The graph highlighting used when creating dotgraphs for crates +# with multiple versions +# * lowest-version - The path to the lowest versioned duplicate is highlighted +# * simplest-path - The path to the version with the fewest edges is highlighted +# * all - Both lowest-version and simplest-path are used +highlight = "all" +# The default lint level for `default` features for crates that are members of +# the workspace that is being checked. This can be overridden by allowing/denying +# `default` on a crate-by-crate basis if desired. +workspace-default-features = "allow" +# The default lint level for `default` features for external crates that are not +# members of the workspace. This can be overridden by allowing/denying `default` +# on a crate-by-crate basis if desired. +external-default-features = "allow" +# List of crates that are allowed. Use with care! +allow = [ + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is allowed" }, +] +# List of crates to deny +deny = [ + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason it is banned" }, + # Wrapper crates can optionally be specified to allow the crate when it + # is a direct dependency of the otherwise banned crate + #{ crate = "ansi_term@0.11.0", wrappers = ["this-crate-directly-depends-on-ansi_term"] }, +] + +# List of features to allow/deny +# Each entry the name of a crate and a version range. If version is +# not specified, all versions will be matched. +#[[bans.features]] +#crate = "reqwest" +# Features to not allow +#deny = ["json"] +# Features to allow +#allow = [ +# "rustls", +# "__rustls", +# "__tls", +# "hyper-rustls", +# "rustls", +# "rustls-pemfile", +# "rustls-tls-webpki-roots", +# "tokio-rustls", +# "webpki-roots", +#] +# If true, the allowed features must exactly match the enabled feature set. If +# this is set there is no point setting `deny` +#exact = true + +# Certain crates/versions that will be skipped when doing duplicate detection. +skip = [ + #"ansi_term@0.11.0", + #{ crate = "ansi_term@0.11.0", reason = "you can specify a reason why it can't be updated/removed" }, +] +# Similarly to `skip` allows you to skip certain crates during duplicate +# detection. Unlike skip, it also includes the entire tree of transitive +# dependencies starting at the specified crate, up to a certain depth, which is +# by default infinite. +skip-tree = [ + #"ansi_term@0.11.0", # will be skipped along with _all_ of its direct and transitive dependencies + #{ crate = "ansi_term@0.11.0", depth = 20 }, +] + +# This section is considered when running `cargo deny check sources`. +# More documentation about the 'sources' section can be found here: +# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html +[sources] +# Lint level for what to happen when a crate from a crate registry that is not +# in the allow list is encountered +unknown-registry = "warn" +# Lint level for what to happen when a crate from a git repository that is not +# in the allow list is encountered +unknown-git = "warn" +# List of URLs for allowed crate registries. Defaults to the crates.io index +# if not specified. If it is specified but empty, no registries are allowed. +allow-registry = ["https://github.com/rust-lang/crates.io-index"] +# List of URLs for allowed Git repositories +allow-git = [ + "https://github.com/matrix-org/matrix-rust-sdk.git" +] + +[sources.allow-org] +# github.com organizations to allow git sources for +github = [] +# gitlab.com organizations to allow git sources for +gitlab = [] +# bitbucket.org organizations to allow git sources for +bitbucket = [] From 4d6d6d3515354dd110172345beade671170f04a4 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 17:34:34 +0200 Subject: [PATCH 12/18] =?UTF-8?q?=F0=9F=91=B7=20Add=20cargo=20udeps=20tool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 10 ++++++++-- Cargo.toml | 3 --- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index 72fa91d..a627eb2 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -1,11 +1,11 @@ steps: - - name: format + - name: lint - format image: rust:1.86 commands: | rustup component add rustfmt cargo fmt --all --check - - name: clippy + - name: lint - clippy image: rust:latest commands: | apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev @@ -14,6 +14,12 @@ steps: # Not ready to block PR on fail failure: ignore + - name: lint - dependencies + image: rust:latest + commands: | + cargo install --locked cargo-udeps + cargo udeps + - name: build - web (dockerize) image: woodpeckerci/plugin-kaniko settings: diff --git a/Cargo.toml b/Cargo.toml index 5f03045..d00a5be 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,9 +47,6 @@ turf = "0.9.3" dioxus-free-icons = { version = "0.9", features = ["ionicons", "font-awesome-solid"] } modx = "0.1.4" -# Matrix rich text editor -wysiwyg = { git = "https://github.com/matrix-org/matrix-rich-text-editor.git" } - [target.'cfg(target_family = "wasm")'.dependencies] # Logging/tracing tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } From cd0a763c0af9127c0fc6dc1c867048b7204515be Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 20:34:40 +0200 Subject: [PATCH 13/18] =?UTF-8?q?=F0=9F=91=B7=20Fix=20lint=20-=20dependenc?= =?UTF-8?q?ies=20CI=20job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index a627eb2..af6048f 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -6,7 +6,7 @@ steps: cargo fmt --all --check - name: lint - clippy - image: rust:latest + image: rust:1.86 commands: | apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev rustup component add clippy @@ -15,9 +15,11 @@ steps: failure: ignore - name: lint - dependencies - image: rust:latest + image: rust:1.86 commands: | + apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev cargo install --locked cargo-udeps + rustup default nightly cargo udeps - name: build - web (dockerize) From 8684086c745e5eea5022c79ba924d664f28eee84 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 21:12:32 +0200 Subject: [PATCH 14/18] =?UTF-8?q?=F0=9F=91=B7=20Add=20cargo=20spellcheck?= =?UTF-8?q?=20tool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 7 +++++++ Cargo.toml | 3 +++ README.md | 12 ++++++------ spellcheck.dic | 6 ++++++ spellcheck.toml | 10 ++++++++++ 5 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 spellcheck.dic create mode 100644 spellcheck.toml diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index af6048f..d09f847 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -14,6 +14,13 @@ steps: # Not ready to block PR on fail failure: ignore + - name: lint - spellcheck + image: rust:1.86 + commands: | + apt update && apt install -y libclang-dev hunspell + cargo install --locked cargo-spellcheck + cargo spellcheck + - name: lint - dependencies image: rust:1.86 commands: | diff --git a/Cargo.toml b/Cargo.toml index d00a5be..67e44fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,9 @@ license = "AGPL-3.0-or-later" [features] default = [] +[package.metadata.spellcheck] +config = "./spellcheck.toml" + [dependencies] # Errors anyhow = "1.0.75" diff --git a/README.md b/README.md index c9ff9b0..ad23948 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,8 @@ reinvent the wheel. This solution provides: - [Open-source protocol](https://spec.matrix.org/v1.9/). - Features expected for a messaging solution in 2024 (multi-devices management, emojis, integrations, redaction, spaces, ...). -- Multi-platforms clients (Android, iOS and Webclient). -- SDK available for each platform and a new Rust sdk supporting all the previously listed platforms. +- Multi-platforms clients (Android, iOS and web-client). +- SDK available for each platform and a new Rust SDK supporting all the previously listed platforms. - Conference stack ([Element Call](https://github.com/element-hq/element-call)). - End-to-end encryption. - Federation management. @@ -28,16 +28,16 @@ API)](https://spec.matrix.org/v1.9/client-server-api/) protocol. Even if the Rust SDK is still in beta, it seems to be the future one (cf. [Element X - experience the future of Element!](https://element.io/blog/element-x-experience-the-future-of-element/)) and a good choice for someone starting a -new client... from my point of vue. +new client... from my point of view. -The SDK choosen, a Rust (to avoid to use the bindings provided by the matrix-rust-sdk and mostly because I want to +The SDK chosen, a Rust (to avoid to use the bindings provided by the matrix-rust-sdk and mostly because I want to learn Rust) graphical library should be selected. The [Dioxus](https://dioxuslabs.com/) one seems to do the job: - React-inspired library for Rust. -- Multi-platforms (use of Webview or WGPU-enabled renderers). +- Multi-platforms (use of Web-view or WGPU-enabled renderers). # TODO - [ ] Test dioxus-radio. - [ ] Design system ? -- [ ] Implement MSN messenger features using Matrix.org sdk... +- [ ] Implement MSN messenger features using Matrix.org SDK... diff --git a/spellcheck.dic b/spellcheck.dic new file mode 100644 index 0000000..f178181 --- /dev/null +++ b/spellcheck.dic @@ -0,0 +1,6 @@ +5 +Dioxus +MSN +renderers +SDK +TODO \ No newline at end of file diff --git a/spellcheck.toml b/spellcheck.toml new file mode 100644 index 0000000..e4b6e9a --- /dev/null +++ b/spellcheck.toml @@ -0,0 +1,10 @@ +# Also take into account developer comments +dev_comments = false + +# Skip the README.md file as defined in the cargo manifest +skip_readme = false + +[Hunspell] +lang = "en_US" +search_dirs = [ "." ] +extra_dictionaries = [ "./spellcheck.dic" ] From a8a7b16e9f2ee41c1303f385b3863b34d676ca87 Mon Sep 17 00:00:00 2001 From: Adrien Date: Sun, 27 Apr 2025 22:10:27 +0200 Subject: [PATCH 15/18] =?UTF-8?q?=F0=9F=91=B7=20Add=20cargo=20sort-derives?= =?UTF-8?q?=20tool?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 6 ++++++ src/domain/model/room.rs | 2 +- src/infrastructure/messaging/matrix/client.rs | 2 +- src/infrastructure/services/random_svg_generators.rs | 2 +- src/ui/components/button.rs | 6 +++--- src/ui/components/icons.rs | 4 ++-- src/ui/components/modal.rs | 4 ++-- src/ui/components/spinner.rs | 2 +- src/ui/components/text_input.rs | 4 ++-- 9 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index d09f847..38233e5 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -5,6 +5,12 @@ steps: rustup component add rustfmt cargo fmt --all --check + - name: lint - sort derives + image: rust:1.86 + commands: | + cargo install --locked cargo-sort-derives + cargo sort-derives --check + - name: lint - clippy image: rust:1.86 commands: | diff --git a/src/domain/model/room.rs b/src/domain/model/room.rs index 91ce56a..28784b3 100644 --- a/src/domain/model/room.rs +++ b/src/domain/model/room.rs @@ -21,7 +21,7 @@ use crate::infrastructure::services::mozaik_builder::create_mozaik; pub type RoomId = OwnedRoomId; -#[derive(PartialEq, Clone)] +#[derive(Clone, PartialEq)] pub struct Invitation { invitee_id: UserId, sender_id: UserId, diff --git a/src/infrastructure/messaging/matrix/client.rs b/src/infrastructure/messaging/matrix/client.rs index a49a675..b50c2e2 100644 --- a/src/infrastructure/messaging/matrix/client.rs +++ b/src/infrastructure/messaging/matrix/client.rs @@ -43,7 +43,7 @@ use super::{ }; use crate::utils::oneshot; -#[derive(thiserror::Error, Debug)] +#[derive(Debug, thiserror::Error)] pub enum ClientError { #[error("Matrix client error: {0}")] Matrix(#[from] matrix_sdk::Error), diff --git a/src/infrastructure/services/random_svg_generators.rs b/src/infrastructure/services/random_svg_generators.rs index 2ca21e0..97e98d2 100644 --- a/src/infrastructure/services/random_svg_generators.rs +++ b/src/infrastructure/services/random_svg_generators.rs @@ -15,7 +15,7 @@ cfg_if! { } } -#[derive(Eq, PartialEq, Hash)] +#[derive(Eq, Hash, PartialEq)] pub enum AvatarFeeling { Ok, Warning, diff --git a/src/ui/components/button.rs b/src/ui/components/button.rs index d8fd046..5b586c6 100644 --- a/src/ui/components/button.rs +++ b/src/ui/components/button.rs @@ -3,7 +3,7 @@ use dioxus_free_icons::{Icon, IconShape}; turf::style_sheet!("src/ui/components/button.scss"); -#[derive(PartialEq, Clone, Props)] +#[derive(Clone, PartialEq, Props)] struct _ButtonProps { children: Element, #[props(default = false)] @@ -15,7 +15,7 @@ struct _ButtonProps { macro_rules! svg_text_icon { ($name:ident,$text:literal) => { - #[derive(Copy, Clone, PartialEq)] + #[derive(Clone, Copy, PartialEq)] struct $name; impl IconShape for $name { fn view_box(&self) -> &str { @@ -67,7 +67,7 @@ macro_rules! svg_text_button { }; } -#[derive(PartialEq, Clone, Props)] +#[derive(Clone, PartialEq, Props)] pub struct ButtonProps { #[props(default = false)] focus: bool, diff --git a/src/ui/components/icons.rs b/src/ui/components/icons.rs index 7516049..1a125bf 100644 --- a/src/ui/components/icons.rs +++ b/src/ui/components/icons.rs @@ -87,7 +87,7 @@ const _PYRAMID_VIEWBOX_HEIGHT: i64 = (_PYRAMID_CENTRAL_EDGE_E2_Y + _PYRAMID_STRO const _PYRAMID_VIEWBOX_WIDTH: i64 = (_PYRAMID_RIGHT_EDGE_E2_X + _PYRAMID_STROKE_WIDTH) as i64; const _PYRAMID_VIEWBOX: &str = formatcp!("0 0 {_PYRAMID_VIEWBOX_WIDTH} {_PYRAMID_VIEWBOX_HEIGHT}"); -#[derive(PartialEq, Clone)] +#[derive(Clone, PartialEq)] struct PyramidShape { color: String, ratio: f64, @@ -154,7 +154,7 @@ impl IconShape for PyramidShape { } } -#[derive(PartialEq, Clone, Props)] +#[derive(Clone, PartialEq, Props)] pub struct PyramidProps { color: Option, #[props(default = 0.5)] diff --git a/src/ui/components/modal.rs b/src/ui/components/modal.rs index f919c83..01c71b5 100644 --- a/src/ui/components/modal.rs +++ b/src/ui/components/modal.rs @@ -15,7 +15,7 @@ use style::{COLOR_CRITICAL_100, COLOR_SUCCESS_100, COLOR_WARNING_100}; turf::style_sheet!("src/ui/components/modal.scss"); -#[derive(Clone, Copy, Eq, PartialEq, Hash)] +#[derive(Clone, Copy, Eq, Hash, PartialEq)] pub enum Severity { Ok, Warning, @@ -42,7 +42,7 @@ fn avatar_configs() -> &'static HashMap> { }) } -#[derive(Props, Clone, PartialEq)] +#[derive(Clone, PartialEq, Props)] pub struct ModalProps { pub severity: Severity, #[props(optional)] diff --git a/src/ui/components/spinner.rs b/src/ui/components/spinner.rs index a45f2d9..9b8be93 100644 --- a/src/ui/components/spinner.rs +++ b/src/ui/components/spinner.rs @@ -5,7 +5,7 @@ use crate::ui::components::icons::LogoShape; turf::style_sheet!("src/ui/components/spinner.scss"); -#[derive(PartialEq, Clone, Props)] +#[derive(Clone, PartialEq, Props)] pub struct SpinnerProps { #[props(default = true)] animate: bool, diff --git a/src/ui/components/text_input.rs b/src/ui/components/text_input.rs index 8f34dd8..fc6ea75 100644 --- a/src/ui/components/text_input.rs +++ b/src/ui/components/text_input.rs @@ -9,7 +9,7 @@ turf::style_sheet!("src/ui/components/text_input.scss"); pub trait InputPropsData {} -#[derive(Props, Clone, PartialEq)] +#[derive(Clone, PartialEq, Props)] pub struct InputProps { value: Option, placeholder: Option, @@ -97,7 +97,7 @@ pub fn TextInput(props: InputProps) -> Element { } } -#[derive(Props, Clone, PartialEq)] +#[derive(Clone, PartialEq, Props)] pub struct PasswordInputState { text_input_state: TextInputState, #[props(default = 0.0)] From 9e7ba845760816f3670170783a9b5f1eaa2fa372 Mon Sep 17 00:00:00 2001 From: Adrien Date: Mon, 28 Apr 2025 07:25:17 +0200 Subject: [PATCH 16/18] =?UTF-8?q?=F0=9F=91=B7=20Add=20Dockerfile=20for=20t?= =?UTF-8?q?he=20ci-lint-audit=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.lint-audit-image.yaml | 16 ++++++++++++++++ docker/Dockerfile.ci-lint-audit | 10 ++++++++++ 2 files changed, 26 insertions(+) create mode 100644 .woodpecker/.lint-audit-image.yaml create mode 100644 docker/Dockerfile.ci-lint-audit diff --git a/.woodpecker/.lint-audit-image.yaml b/.woodpecker/.lint-audit-image.yaml new file mode 100644 index 0000000..4bcc832 --- /dev/null +++ b/.woodpecker/.lint-audit-image.yaml @@ -0,0 +1,16 @@ +steps: + dockerize: + image: woodpeckerci/plugin-kaniko + settings: + registry: rg.fr-par.scw.cloud + repo: asr-projects/beau-gosse-du-92/ci-lint-audit + dockerfile: ./docker/Dockerfile.ci-lint-audit + tags: latest + auto_tag: false + cache: false + username: nologin + password: + from_secret: registry-password + +when: + - path: ./docker/Dockerfile.ci-lint-audit diff --git a/docker/Dockerfile.ci-lint-audit b/docker/Dockerfile.ci-lint-audit new file mode 100644 index 0000000..e1cbc69 --- /dev/null +++ b/docker/Dockerfile.ci-lint-audit @@ -0,0 +1,10 @@ +FROM rust:1.86 + +RUN apt update \ + && apt install -y --no-install-recommends git libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev libclang-dev hunspell \ + && apt clean + +RUN rustup component add rustfmt clippy \ + && rustup default nightly + +RUN cargo install --locked cargo-sort-derives cargo-spellcheck cargo-udeps cargo-deny From 4671a5ee51409ee2819ae660cbe5043df1ece070 Mon Sep 17 00:00:00 2001 From: Adrien Date: Thu, 1 May 2025 22:32:17 +0200 Subject: [PATCH 17/18] =?UTF-8?q?=F0=9F=91=B7=20Use=20of=20the=20ci-lint-a?= =?UTF-8?q?udit=20docker=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.validate.yaml | 31 +++++++++++++++---------------- docker/Dockerfile.ci-lint-audit | 26 +++++++++++++++++++++----- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml index 38233e5..7da50a4 100644 --- a/.woodpecker/.validate.yaml +++ b/.woodpecker/.validate.yaml @@ -1,38 +1,37 @@ +variables: + - &image rg.fr-par.scw.cloud/asr-projects/beau-gosse-du-92/ci-lint-audit:latest + steps: - name: lint - format - image: rust:1.86 + image: *image + pull: true commands: | - rustup component add rustfmt cargo fmt --all --check - name: lint - sort derives - image: rust:1.86 + image: *image + pull: true commands: | - cargo install --locked cargo-sort-derives cargo sort-derives --check - name: lint - clippy - image: rust:1.86 + image: *image + pull: true commands: | - apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev - rustup component add clippy cargo clippy --all --all-features -- -D warnings # Not ready to block PR on fail failure: ignore - name: lint - spellcheck - image: rust:1.86 + image: *image + pull: true commands: | - apt update && apt install -y libclang-dev hunspell - cargo install --locked cargo-spellcheck cargo spellcheck - name: lint - dependencies - image: rust:1.86 + image: *image + pull: true commands: | - apt update && apt install -y libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev - cargo install --locked cargo-udeps - rustup default nightly cargo udeps - name: build - web (dockerize) @@ -46,9 +45,9 @@ steps: dry-run: true - name: audit - dependencies - image: rust:1.86 + image: *image + pull: true commands: | - cargo install --locked cargo-deny cargo deny check # Not ready to block PR on fail failure: ignore diff --git a/docker/Dockerfile.ci-lint-audit b/docker/Dockerfile.ci-lint-audit index e1cbc69..ef8515e 100644 --- a/docker/Dockerfile.ci-lint-audit +++ b/docker/Dockerfile.ci-lint-audit @@ -1,10 +1,26 @@ -FROM rust:1.86 +FROM rust:1.86 AS builder RUN apt update \ - && apt install -y --no-install-recommends git libgtk-3-dev libjavascriptcoregtk-4.1-dev libwebkit2gtk-4.1-dev libclang-dev hunspell \ + && apt install -y --no-install-recommends libclang-dev hunspell \ && apt clean -RUN rustup component add rustfmt clippy \ - && rustup default nightly +RUN rustup default nightly \ + && rustup component add rustfmt clippy -RUN cargo install --locked cargo-sort-derives cargo-spellcheck cargo-udeps cargo-deny +RUN cargo install cargo-binstall + +RUN cargo binstall cargo-sort-derives cargo-spellcheck cargo-udeps cargo-deny + + +FROM debian:trixie-slim + +RUN apt update \ + && apt install -y --no-install-recommends ca-certificates git rustup build-essential \ + libssl-dev pkg-config libglib2.0-0 libpango-1.0-0 libatk1.0-dev libgdk-pixbuf-2.0-dev \ + libcairo2-dev libgtk-3-dev libsoup-3.0-dev libwebkit2gtk-4.1-dev \ + && apt clean + +COPY --from=builder /usr/local/rustup/toolchains/nightly-x86_64-unknown-linux-gnu/ /root/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/ +COPY --from=builder /usr/local/cargo/bin /root/.cargo/bin/ + +RUN rustup default nightly From acbe15ed69b2c1e22872520dd64bd639718117ed Mon Sep 17 00:00:00 2001 From: Adrien Date: Fri, 2 May 2025 09:00:03 +0200 Subject: [PATCH 18/18] =?UTF-8?q?=F0=9F=91=B7=20Split=20lint=20and=20audit?= =?UTF-8?q?=20jobs=20and=20fix=20woodpecker=20linter=20warns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker/.audit.yaml | 18 ++++++++++ .woodpecker/.dependencies.yaml | 1 - .woodpecker/.lint-audit-image.yaml | 3 +- .woodpecker/.lint.yaml | 45 +++++++++++++++++++++++ .woodpecker/.validate.yaml | 58 ------------------------------ 5 files changed, 65 insertions(+), 60 deletions(-) create mode 100644 .woodpecker/.audit.yaml create mode 100644 .woodpecker/.lint.yaml delete mode 100644 .woodpecker/.validate.yaml diff --git a/.woodpecker/.audit.yaml b/.woodpecker/.audit.yaml new file mode 100644 index 0000000..905f259 --- /dev/null +++ b/.woodpecker/.audit.yaml @@ -0,0 +1,18 @@ +variables: + - shared-config: &shared-config + image: rg.fr-par.scw.cloud/asr-projects/beau-gosse-du-92/ci-lint-audit:latest + pull: true + +steps: + - name: dependencies + <<: *shared-config + commands: | + cargo deny check + # Not ready to block PR on fail + failure: ignore + +when: + - event: pull_request + +depends_on: + - lint diff --git a/.woodpecker/.dependencies.yaml b/.woodpecker/.dependencies.yaml index 9a6d3ce..7028509 100644 --- a/.woodpecker/.dependencies.yaml +++ b/.woodpecker/.dependencies.yaml @@ -2,7 +2,6 @@ steps: - name: renovate image: renovate/renovate pull: true - settings: commands: - renovate $${CI_REPO} environment: diff --git a/.woodpecker/.lint-audit-image.yaml b/.woodpecker/.lint-audit-image.yaml index 4bcc832..c0b02b7 100644 --- a/.woodpecker/.lint-audit-image.yaml +++ b/.woodpecker/.lint-audit-image.yaml @@ -13,4 +13,5 @@ steps: from_secret: registry-password when: - - path: ./docker/Dockerfile.ci-lint-audit + - event: push + path: ./docker/Dockerfile.ci-lint-audit diff --git a/.woodpecker/.lint.yaml b/.woodpecker/.lint.yaml new file mode 100644 index 0000000..6a2568f --- /dev/null +++ b/.woodpecker/.lint.yaml @@ -0,0 +1,45 @@ +variables: + - shared-config: &shared-config + image: rg.fr-par.scw.cloud/asr-projects/beau-gosse-du-92/ci-lint-audit:latest + pull: true + +steps: + - name: format + <<: *shared-config + commands: | + cargo fmt --all --check + + - name: sort derives + <<: *shared-config + commands: | + cargo sort-derives --check + + - name: clippy + <<: *shared-config + commands: | + cargo clippy --all --all-features -- -D warnings + # Not ready to block PR on fail + failure: ignore + + - name: spellcheck + <<: *shared-config + commands: | + cargo spellcheck + + - name: dependencies + <<: *shared-config + commands: | + cargo udeps + + - name: dockerizable (web) + image: woodpeckerci/plugin-kaniko + settings: + registry: rg.fr-par.scw.cloud + repo: asr-projects/beau-gosse-du-92-web + username: nologin + password: + from_secret: registry-password + dry-run: true + +when: + - event: pull_request diff --git a/.woodpecker/.validate.yaml b/.woodpecker/.validate.yaml deleted file mode 100644 index 7da50a4..0000000 --- a/.woodpecker/.validate.yaml +++ /dev/null @@ -1,58 +0,0 @@ -variables: - - &image rg.fr-par.scw.cloud/asr-projects/beau-gosse-du-92/ci-lint-audit:latest - -steps: - - name: lint - format - image: *image - pull: true - commands: | - cargo fmt --all --check - - - name: lint - sort derives - image: *image - pull: true - commands: | - cargo sort-derives --check - - - name: lint - clippy - image: *image - pull: true - commands: | - cargo clippy --all --all-features -- -D warnings - # Not ready to block PR on fail - failure: ignore - - - name: lint - spellcheck - image: *image - pull: true - commands: | - cargo spellcheck - - - name: lint - dependencies - image: *image - pull: true - commands: | - cargo udeps - - - name: build - web (dockerize) - image: woodpeckerci/plugin-kaniko - settings: - registry: rg.fr-par.scw.cloud - repo: asr-projects/beau-gosse-du-92-web - username: nologin - password: - from_secret: registry-password - dry-run: true - - - name: audit - dependencies - image: *image - pull: true - commands: | - cargo deny check - # Not ready to block PR on fail - failure: ignore - -when: - - event: pull_request - # - event: push - # branch: ${CI_REPO_DEFAULT_BRANCH}