Skip to content
Closed
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
14 changes: 8 additions & 6 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,33 @@ on:
pull_request:
workflow_dispatch:
schedule:
- cron: '20 17 * * 1'
- cron: "20 17 * * 1"

jobs:
codeql:
name: codeql
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- uses: actions/setup-go@v5
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version: ^1.25

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
with:
languages: go

- name: golangci-lint
uses: golangci/golangci-lint-action@v6
uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0
with:
version: latest

- name: Build
run: make build

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4.35.1
4 changes: 2 additions & 2 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ jobs:
IMG: skyscanner/kms-issuer:dev
CERT_MANAGER_VERSION: v1.17.2
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

# Build testing docker image
- name: Build the testing kms-issuer docker image
run: docker build -t ${IMG} .

# Setup kind cluster
- name: Create k8s Kind Cluster
uses: helm/kind-action@v1.12.0
uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0
with:
cluster_name: kind
- name: Load test docker image into the kind cluster
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/helm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,25 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- uses: actions/setup-go@v5
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod

- name: Set up Helm
uses: Azure/setup-helm@v4
uses: Azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0

# Python is required because `ct lint` runs Yamale (https://github.com/23andMe/Yamale) and
# yamllint (https://github.com/adrienverge/yamllint) which require Python
- uses: actions/setup-python@v5
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.x'

- name: Set up chart-testing
uses: helm/chart-testing-action@v2.7.0
uses: helm/chart-testing-action@6ec842c01de15ebb84c8627d2744a0c2f2755c9f # v2.8.0

- name: Run chart-testing (list-changed)
id: list-changed
Expand All @@ -50,7 +50,7 @@ jobs:
if: steps.list-changed.outputs.changed == 'true'

- name: Create k8s Kind Cluster
uses: helm/kind-action@v1.12.0
uses: helm/kind-action@ef37e7f390d99f746eb8b610417061a60e82a6cc # v1.14.0
with:
cluster_name: kind
if: steps.list-changed.outputs.changed == 'true'
Expand All @@ -75,9 +75,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-go@v5
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version: stable

Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,29 @@ jobs:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
with:
images: |
ghcr.io/skyscanner/kms-issuer
tags: |
type=semver,pattern={{raw}}

- name: Login to GitHub Packages
uses: docker/login-action@v3
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and publish a docker image
uses: docker/build-push-action@v6
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
platforms: linux/amd64,linux/arm64
push: true
Expand All @@ -46,12 +46,12 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0

- name: Setup Helm
uses: Azure/setup-helm@v4
uses: Azure/setup-helm@dda3372f752e03dde6b3237bc9431cdc2f7a02a2 # v5.0.0

- name: Package Helm chart
run: |
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,11 @@ jobs:
name: test-build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- uses: actions/setup-go@v5
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version: ^1.25
go-version-file: go.mod

- name: Test
run: make test
Expand All @@ -25,11 +25,11 @@ jobs:
run: make build

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0

- name: Docker meta
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
with:
# list of Docker images to use as base name for tags
images: |
Expand All @@ -42,14 +42,14 @@ jobs:

- name: Login to GitHub Packages
if: github.event_name != 'pull_request'
uses: docker/login-action@v2.1.0
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4.1.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and publish a docker image
uses: docker/build-push-action@v4.0.0
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7.1.0
with:
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
Expand Down
23 changes: 12 additions & 11 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ formatters:
- goimports
settings:
goimports:
local-prefixes: github.com/Skyscanner/kms-issuer
local-prefixes:
- github.com/Skyscanner/kms-issuer
linters:
disable-all: true
default: none
enable:
- bodyclose
- dogsled
Expand Down Expand Up @@ -58,12 +59,12 @@ linters:
govet:
enable:
- shadow
issues:
exclude-dirs:
- .git
- deploy
- config
- hack
exclude-rules:
- path: _test\.go
text: "dot-imports"
exclusions:
paths:
- .git
- deploy
- config
- hack
rules:
- path: _test\.go
text: "dot-imports"
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Build the manager binary
FROM golang:1.25 as builder
FROM golang:1.26 AS builder
ARG TARGETARCH

WORKDIR /workspace
Expand Down
15 changes: 8 additions & 7 deletions controllers/certmanager/certificaterequest_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ import (

"encoding/pem"

kmsiapi "github.com/Skyscanner/kms-issuer/v4/apis/certmanager/v1alpha1"
kmsca "github.com/Skyscanner/kms-issuer/v4/pkg/kmsca"
apiutil "github.com/cert-manager/cert-manager/pkg/api/util"
cmapi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
cmmeta "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
Expand All @@ -37,6 +35,9 @@ import (
"k8s.io/utils/clock"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"

kmsiapi "github.com/Skyscanner/kms-issuer/v4/apis/certmanager/v1alpha1"
kmsca "github.com/Skyscanner/kms-issuer/v4/pkg/kmsca"
)

const (
Expand Down Expand Up @@ -69,7 +70,7 @@ func (r *CertificateRequestReconciler) Reconcile(ctx context.Context, req ctrl.R
// Fetch the CertificateRequest resource being reconciled.
// Just ignore the request if the certificate request has been deleted.
cr := new(cmapi.CertificateRequest)
if err := r.Client.Get(ctx, req.NamespacedName, cr); err != nil {
if err := r.Get(ctx, req.NamespacedName, cr); err != nil {
if apierrors.IsNotFound(err) {
return ctrl.Result{}, nil
}
Expand All @@ -81,7 +82,7 @@ func (r *CertificateRequestReconciler) Reconcile(ctx context.Context, req ctrl.R
// Check the CertificateRequest's issuerRef and if it does not match the api
// group name, log a message at a debug level and stop processing.
if cr.Spec.IssuerRef.Group != "" && cr.Spec.IssuerRef.Group != kmsiapi.GroupVersion.Group {
log.V(4).Info("resource does not specify an issuerRef group name that we are responsible for", "group", cr.Spec.IssuerRef.Group) //nolint:gomnd // TODO: fix when refactoring the logger
log.V(4).Info("resource does not specify an issuerRef group name that we are responsible for", "group", cr.Spec.IssuerRef.Group)
return ctrl.Result{}, nil
}

Expand All @@ -93,11 +94,11 @@ func (r *CertificateRequestReconciler) Reconcile(ctx context.Context, req ctrl.R
// If the certificate data is already set then we skip this request as it
// has already been completed in the past.
if len(cr.Status.Certificate) > 0 {
log.V(4).Info("existing certificate data found in status, skipping already completed CertificateRequest") //nolint:gomnd // TODO: fix when refactoring the logger
log.V(4).Info("existing certificate data found in status, skipping already completed CertificateRequest")
return ctrl.Result{}, nil
}

// TODO: Do we allow signing intermidate CAs?
// TODO: Do we allow signing intermediate CAs?
// if cr.Spec.IsCA {
// log.Info("step certificate does not support online signing of CA certificates")
// return ctrl.Result{}, nil
Expand All @@ -109,7 +110,7 @@ func (r *CertificateRequestReconciler) Reconcile(ctx context.Context, req ctrl.R
Namespace: req.Namespace,
Name: cr.Spec.IssuerRef.Name,
}
if err = r.Client.Get(ctx, issNamespaceName, &issuer); err != nil {
if err = r.Get(ctx, issNamespaceName, &issuer); err != nil {
log.Error(err, "failed to retrieve KMSIssuer resource", "namespace", req.Namespace, "name", cr.Spec.IssuerRef.Name)
_ = r.setStatus(ctx, cr, cmmeta.ConditionFalse, cmapi.CertificateRequestReasonPending, "Failed to retrieve KMSIssuer resource %s: %v", issNamespaceName, err)
return ctrl.Result{}, err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@
"testing"
"time"

kmsiapi "github.com/Skyscanner/kms-issuer/v4/apis/certmanager/v1alpha1"
apiutil "github.com/cert-manager/cert-manager/pkg/api/util"
cmapi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
cmmeta "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"

"github.com/Skyscanner/kms-issuer/v4/pkg/kmsca"
kmsiapi "github.com/Skyscanner/kms-issuer/v4/apis/certmanager/v1alpha1"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
apiequality "k8s.io/apimachinery/pkg/api/equality"
Expand All @@ -45,6 +45,8 @@
"sigs.k8s.io/controller-runtime/pkg/client"
fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake"
logf "sigs.k8s.io/controller-runtime/pkg/log"

"github.com/Skyscanner/kms-issuer/v4/pkg/kmsca"
)

var _ = Context("CertificateRequestReconciler", func() {
Expand Down Expand Up @@ -98,7 +100,7 @@
},
exampleDNSNames, exampleIPAddresses, exampleURIs,
)
cr.ObjectMeta.Namespace = crKey.Namespace
cr.Namespace = crKey.Namespace
cr.Spec.IssuerRef.Group = kmsiapi.GroupVersion.Group
Expect(err).To(BeNil())
Expect(k8sClient.Create(context.Background(), cr)).Should(Succeed(), "failed to create test CertificateRequest resource")
Expand Down Expand Up @@ -405,7 +407,7 @@
Spec: cmapi.CertificateRequestSpec{
Request: csrPEM,
Duration: duration,
IssuerRef: cmmeta.ObjectReference{

Check failure on line 410 in controllers/certmanager/certificaterequest_controller_test.go

View workflow job for this annotation

GitHub Actions / codeql

SA1019: cmmeta.ObjectReference is deprecated: Use IssuerReference instead. (staticcheck)
Name: issuerName,
Kind: issuerKind,
},
Expand Down
11 changes: 6 additions & 5 deletions controllers/certmanager/kmsissuer_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ import (
"fmt"
"time"

kmsiapi "github.com/Skyscanner/kms-issuer/v4/apis/certmanager/v1alpha1"
"github.com/Skyscanner/kms-issuer/v4/pkg/kmsca"
"github.com/go-logr/logr"
core "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand All @@ -35,6 +33,9 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/manager"

kmsiapi "github.com/Skyscanner/kms-issuer/v4/apis/certmanager/v1alpha1"
"github.com/Skyscanner/kms-issuer/v4/pkg/kmsca"
)

const (
Expand Down Expand Up @@ -76,7 +77,7 @@ func (r *KMSIssuerReconciler) Reconcile(ctx context.Context, req ctrl.Request) (

// retrieve the KMSIssuer resource to reconcile.
issuer := &kmsiapi.KMSIssuer{}
if err := r.Client.Get(ctx, req.NamespacedName, issuer); err != nil {
if err := r.Get(ctx, req.NamespacedName, issuer); err != nil {
log.Error(err, "failed to retrieve KMSIssuer resource")
return ctrl.Result{}, client.IgnoreNotFound(err)
}
Expand Down Expand Up @@ -115,7 +116,7 @@ func (r *KMSIssuerReconciler) setIssuerDefaultValues(issuer *kmsiapi.KMSIssuer)
log.Info("setting default duration", "duration", defaultCertDuration)
issuer.Spec.Duration = &metav1.Duration{Duration: defaultCertDuration}
}
renewBefore := time.Duration(float64(issuer.Spec.Duration.Duration.Nanoseconds()) * defaultCertRenewalRatio)
renewBefore := time.Duration(float64(issuer.Spec.Duration.Nanoseconds()) * defaultCertRenewalRatio)
if issuer.Spec.RenewBefore == nil {
log.Info("setting default", "RenewBefore", renewBefore)
issuer.Spec.RenewBefore = &metav1.Duration{
Expand All @@ -134,7 +135,7 @@ func (r *KMSIssuerReconciler) setIssuerDefaultValues(issuer *kmsiapi.KMSIssuer)
func (r *KMSIssuerReconciler) patchIssuerStatus(ctx context.Context, issuer *kmsiapi.KMSIssuer) error {
var latest kmsiapi.KMSIssuer

if err := r.Client.Get(ctx, client.ObjectKeyFromObject(issuer), &latest); err != nil {
if err := r.Get(ctx, client.ObjectKeyFromObject(issuer), &latest); err != nil {
return err
}

Expand Down
Loading
Loading