Compare commits

...

22 Commits

Author SHA1 Message Date
Unbound Release fce6d63e6d chore(release): prepare for v0.0.15 2025-07-01 14:23:43 +02:00
argoyle 44c05fece4 fix(client): handle error responses with detailed messages
Adds error handling for non-OK HTTP status codes in the client.
Implements custom error messages by reading the response body
when the status code indicates an error, ensuring better
debugging and clarity during failures.
Enhances unit tests to cover unauthorized access and incorrect 
body length scenarios, validating the error handling mechanism.
2025-07-01 08:27:58 +02:00
Renovate a6450faf0b chore(deps): update golang:1.24.4 docker digest to 9f820b6 2025-07-01 05:54:43 +00:00
Renovate a8c79c3337 chore(deps): update pre-commit hook golangci/golangci-lint to v2.2.1 2025-06-29 21:54:10 +00:00
Renovate 58c406980b chore(deps): update pre-commit hook golangci/golangci-lint to v2.2.0 2025-06-28 20:54:27 +00:00
Renovate 30ce3662a2 fix(deps): update module github.com/alecthomas/kong to v1.12.0 2025-06-25 00:55:09 +00:00
argoyle c409daacf7 chore(ci): update CI configuration for pipeline templates
Add additional CI templates for more flexible workflows. 
Include the Defaults.gitlab-ci.yml to standardize 
settings and add another project reference for 
enhanced release management. This improves 
project consistency and maintainability across 
different environments.
2025-06-23 13:44:24 +02:00
Unbound Release 441f70247e chore(release): prepare for v0.0.14 2025-06-20 10:32:59 +00:00
Renovate 8572bff4b2 fix(deps): update kubernetes packages to v0.33.2 2025-06-19 17:53:55 +00:00
Renovate 48e47e7348 chore(deps): update golang:1.24.4 docker digest to 3494bbe 2025-06-11 03:02:10 +00:00
Renovate 616ee972d2 chore(deps): update golang docker tag to v1.24.4 2025-06-05 20:55:02 +00:00
Renovate 944ab85df1 chore(deps): update dependency go to v1.24.4 2025-06-05 18:54:09 +00:00
Renovate ea622f2649 chore(deps): update golang:1.24.3 docker digest to f255a7d 2025-05-22 01:55:00 +00:00
Unbound Release 4afe2fcdd6 chore(release): prepare for v0.0.13 2025-05-16 11:17:27 +02:00
Renovate 35521ccc16 fix(deps): update kubernetes packages to v0.33.1 2025-05-15 23:54:04 +00:00
Renovate 6a9b07be80 fix(deps): update module github.com/alecthomas/kong to v1.11.0 2025-05-15 11:05:04 +00:00
Renovate b8ec89b9b8 chore(deps): update golang docker tag to v1.24.3 2025-05-06 20:55:07 +00:00
Renovate b0ee6645ed chore(deps): update dependency go to v1.24.3 2025-05-06 18:54:42 +00:00
Renovate 5fe751ebdd chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.6 2025-05-04 15:54:03 +00:00
Renovate 48d554cc23 chore(deps): update golang:1.24.2 docker digest to bf7899c 2025-04-29 00:56:11 +00:00
Renovate 617eebef2e chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.5 2025-04-24 19:54:25 +00:00
Renovate 883b5e099d chore(deps): update pre-commit hook golangci/golangci-lint to v2.1.4 2025-04-24 17:56:45 +00:00
8 changed files with 80 additions and 15 deletions
+2
View File
@@ -1,5 +1,7 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
- project: unboundsoftware/ci-templates
file: Defaults.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Release.gitlab-ci.yml
- project: unboundsoftware/ci-templates
+1 -1
View File
@@ -36,6 +36,6 @@ repos:
- id: go-vet
- id: gofumpt
- repo: https://github.com/golangci/golangci-lint
rev: v2.1.2
rev: v2.2.1
hooks:
- id: golangci-lint
+24
View File
@@ -2,6 +2,30 @@
All notable changes to this project will be documented in this file.
## [0.0.15] - 2025-07-01
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.12.0
- *(client)* Handle error responses with detailed messages
### ⚙️ Miscellaneous Tasks
- *(ci)* Update CI configuration for pipeline templates
## [0.0.14] - 2025-06-20
### 🐛 Bug Fixes
- *(deps)* Update kubernetes packages to v0.33.2
## [0.0.13] - 2025-05-16
### 🐛 Bug Fixes
- *(deps)* Update module github.com/alecthomas/kong to v1.11.0
- *(deps)* Update kubernetes packages to v0.33.1
## [0.0.12] - 2025-04-24
### 🐛 Bug Fixes
+1 -1
View File
@@ -1,4 +1,4 @@
FROM amd64/golang:1.24.2@sha256:aebb7dfe0e8da97fd4e22f95d2162cc6948f772fa947a00659634ece26cadb5a as build
FROM amd64/golang:1.24.4@sha256:9f820b68683e8849cf596068952dfa062478c6664e6ae7f2a8888c25e885bce9 as build
WORKDIR /build
ENV CGO_ENABLED=0
ADD . /build
+6
View File
@@ -69,6 +69,12 @@ func (r *RestClient) projectApiCall(method, project string, api string, body io.
if resp.StatusCode == http.StatusOK && response != nil {
decoder := json.NewDecoder(resp.Body)
err = decoder.Decode(response)
} else if resp.StatusCode != http.StatusOK {
buff, err2 := io.ReadAll(resp.Body)
if err2 != nil {
return fmt.Errorf("error reading body: %w", err2)
}
return fmt.Errorf("status %d: %s", resp.StatusCode, string(buff))
}
return err
}
+33
View File
@@ -80,6 +80,39 @@ func TestRestClient_GetTags(t *testing.T) {
return assert.EqualError(t, err, "invalid character 'a' looking for beginning of value")
},
},
{
name: "unauthorized",
args: args{
project: "unboundsoftware/dummy",
},
handler: func(t *testing.T) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
writer.WriteHeader(http.StatusUnauthorized)
_, _ = writer.Write([]byte("token expired"))
}
},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "status 401: token expired")
},
},
{
name: "error body length incorrect",
args: args{
project: "unboundsoftware/dummy",
},
handler: func(t *testing.T) http.HandlerFunc {
return func(writer http.ResponseWriter, request *http.Request) {
writer.Header().Set("Content-Length", "230")
writer.WriteHeader(http.StatusUnauthorized)
_, _ = writer.Write([]byte("token expired"))
}
},
want: nil,
wantErr: func(t assert.TestingT, err error, i ...interface{}) bool {
return assert.EqualError(t, err, "error reading body: unexpected EOF")
},
},
{
name: "success",
args: args{
+5 -5
View File
@@ -2,16 +2,16 @@ module gitlab.com/unboundsoftware/gitlab-cleanup-handler
go 1.24.0
toolchain go1.24.2
toolchain go1.24.4
require (
github.com/alecthomas/kong v1.10.0
github.com/alecthomas/kong v1.12.0
github.com/apex/log v1.9.0
github.com/stretchr/testify v1.10.0
gitlab.com/unboundsoftware/apex-mocks v0.2.0
k8s.io/api v0.33.0
k8s.io/apimachinery v0.33.0
k8s.io/client-go v0.33.0
k8s.io/api v0.33.2
k8s.io/apimachinery v0.33.2
k8s.io/client-go v0.33.2
)
require (
+8 -8
View File
@@ -1,7 +1,7 @@
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/kong v1.10.0 h1:8K4rGDpT7Iu+jEXCIJUeKqvpwZHbsFRoebLbnzlmrpw=
github.com/alecthomas/kong v1.10.0/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
github.com/alecthomas/kong v1.12.0 h1:oKd/0fHSdajj5PfGDd3ScvEvpVJf9mT2mb5r9xYadYM=
github.com/alecthomas/kong v1.12.0/go.mod h1:p2vqieVMeTAnaC83txKtXe8FLke2X07aruPWXyMPQrU=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/apex/log v1.9.0 h1:FHtw/xuaM8AgmvDDTI9fiwoAL25Sq2cxojnZICUU8l0=
@@ -195,12 +195,12 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
k8s.io/api v0.33.0 h1:yTgZVn1XEe6opVpP1FylmNrIFWuDqe2H0V8CT5gxfIU=
k8s.io/api v0.33.0/go.mod h1:CTO61ECK/KU7haa3qq8sarQ0biLq2ju405IZAd9zsiM=
k8s.io/apimachinery v0.33.0 h1:1a6kHrJxb2hs4t8EE5wuR/WxKDwGN1FKH3JvDtA0CIQ=
k8s.io/apimachinery v0.33.0/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
k8s.io/client-go v0.33.0 h1:UASR0sAYVUzs2kYuKn/ZakZlcs2bEHaizrrHUZg0G98=
k8s.io/client-go v0.33.0/go.mod h1:kGkd+l/gNGg8GYWAPr0xF1rRKvVWvzh9vmZAMXtaKOg=
k8s.io/api v0.33.2 h1:YgwIS5jKfA+BZg//OQhkJNIfie/kmRsO0BmNaVSimvY=
k8s.io/api v0.33.2/go.mod h1:fhrbphQJSM2cXzCWgqU29xLDuks4mu7ti9vveEnpSXs=
k8s.io/apimachinery v0.33.2 h1:IHFVhqg59mb8PJWTLi8m1mAoepkUNYmptHsV+Z1m5jY=
k8s.io/apimachinery v0.33.2/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
k8s.io/client-go v0.33.2 h1:z8CIcc0P581x/J1ZYf4CNzRKxRvQAwoAolYPbtQes+E=
k8s.io/client-go v0.33.2/go.mod h1:9mCgT4wROvL948w6f6ArJNb7yQd7QsvqavDeZHvNmHo=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=