Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/pr_pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
run: cargo test

- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v4.1.0
uses: gittools/actions/gitversion/setup@v4.2.0

- name: Create GitVersion.yml
run: |
Expand All @@ -40,9 +40,13 @@ jobs:
no-bump-message: '(none|skip|no-release|trivial|docs|documentation|style|refactor|chore|chore\(deps\)|test):'
EOF

- name: Determine Version
- name: Run GitVersion
id: gitversion
uses: gittools/actions/gitversion/[email protected]
uses: gittools/actions/gitversion/[email protected]

- name: Display GitVersion majorMinorPatch
run: |
echo "majorMinorPatch : ${{ env.majorMinorPatch }}"

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
run: cargo test

- name: Install GitVersion
uses: gittools/actions/gitversion/setup@v4.1.0
uses: gittools/actions/gitversion/setup@v4.2.0

- name: Create GitVersion.yml
run: |
Expand All @@ -40,9 +40,13 @@ jobs:
no-bump-message: '(none|skip|no-release|trivial|docs|documentation|style|refactor|chore|chore\(deps\)|test):'
EOF

- name: Determine Version
- name: Run GitVersion
id: gitversion
uses: gittools/actions/gitversion/[email protected]
uses: gittools/actions/gitversion/[email protected]

- name: Display GitVersion majorMinorPatch
run: |
echo "majorMinorPatch : ${{ env.majorMinorPatch }}"

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
Expand Down
30 changes: 15 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "gitlab-tokens-exporter"
version = "2.5.1"
version = "2.5.2"
edition = "2024"
description = "Export gitlab tokens remaining validity days as prometheus metrics"
license = "Apache-2.0 license"
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM rust:1.90.0-alpine3.22 AS builder
FROM rust:1.91.1-alpine3.22 AS builder

RUN apk update && apk add --no-cache musl-dev

Expand Down
9 changes: 0 additions & 9 deletions src/gitlab/token.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ pub enum AccessLevel {
}

impl Display for AccessLevel {
#[expect(clippy::min_ident_chars, reason = "Parameter name from std trait")]
#[expect(clippy::absolute_paths, reason = "Use a specific Result type")]
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
write!(
Expand Down Expand Up @@ -95,10 +94,6 @@ pub enum AccessTokenScope {

#[expect(clippy::absolute_paths, reason = "Specific Trait and Result type")]
impl core::fmt::Display for AccessTokenScope {
#[expect(
clippy::min_ident_chars,
reason = "Using the default function parameter name"
)]
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
match *self {
Self::AiFeatures => write!(f, "ai_features"),
Expand Down Expand Up @@ -187,10 +182,6 @@ pub enum PersonalAccessTokenScope {

#[expect(clippy::absolute_paths, reason = "Specific Trait and Result type")]
impl core::fmt::Display for PersonalAccessTokenScope {
#[expect(
clippy::min_ident_chars,
reason = "Using the default function parameter name"
)]
fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
match *self {
Self::AdminMode => write!(f, "admin_mode"),
Expand Down
73 changes: 36 additions & 37 deletions src/state_actor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -482,47 +482,46 @@ pub async fn gitlab_tokens_actor(

// We now wait for some messages
loop {
let msg = receiver.recv().await;
if let Some(msg_value) = msg {
match msg_value {
Message::Get { respond_to } => {
debug!("received Message::Get");
respond_to.send(state.clone()).unwrap_or_else(|_| {
warn!("Failed to send reponse : oneshot channel was closed");
});
}
Message::Update => {
// We are going to spawn a async task to get the data from gitlab.
// This task will send us Message::Set with the result to
// update our 'state' variable
debug!("received Message::Update");
tokio::spawn(get_gitlab_data(
gitlab_connection.clone(),
owned_entities_only,
sender.clone(),
max_concurrent_requests,
skip_users_tokens,
skip_non_expiring_tokens,
));
}
Message::Set(gitlab_data) => {
debug!("received Message::Set");
match gitlab_data {
Ok(data) => {
if data.is_empty() {
warn!("No token has been found");
state = ActorState::NoToken;
} else {
state = ActorState::Loaded(data);
}
let Some(msg) = receiver.recv().await else {
error!("recv failed");
break;
};

match msg {
Message::Get { respond_to } => {
debug!("received Message::Get");
respond_to.send(state.clone()).unwrap_or_else(|_| {
warn!("Failed to send reponse : oneshot channel was closed");
});
}
Message::Update => {
// We are going to spawn a async task to get the data from gitlab.
// This task will send us Message::Set with the result to
// update our 'state' variable
debug!("received Message::Update");
tokio::spawn(get_gitlab_data(
gitlab_connection.clone(),
owned_entities_only,
sender.clone(),
max_concurrent_requests,
skip_users_tokens,
skip_non_expiring_tokens,
));
}
Message::Set(gitlab_data) => {
debug!("received Message::Set");
match gitlab_data {
Ok(data) => {
if data.is_empty() {
warn!("No token has been found");
state = ActorState::NoToken;
} else {
state = ActorState::Loaded(data);
}
Err(err) => state = ActorState::Error(err),
}
Err(err) => state = ActorState::Error(err),
}
}
} else {
error!("recv failed");
break;
}
}
}