Compare commits

...

2 Commits

Author SHA1 Message Date
wpetit ebfd504cbd feat: move module to forge.cadoles.com/cadoles.goweb-oidc
Cadoles/goweb-oidc/pipeline/head This commit looks good Details
2023-12-06 16:02:40 +01:00
wpetit d4637b26bc feat: generate and publish artefacts via jenkins
Cadoles/goweb-oidc/pipeline/head This commit looks good Details
2023-12-06 15:53:11 +01:00
14 changed files with 94 additions and 46 deletions

2
.gitignore vendored
View File

@ -4,3 +4,5 @@
/.vscode
/tools
/.mktools
.mktools/
/release

29
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,29 @@
@Library('cadoles') _
// Utilisation du pipeline "standard"
// Voir https://forge.cadoles.com/Cadoles/Jenkins/src/branch/master/doc/tutorials/standard-make-pipeline.md
standardMakePipeline([
'dockerfileExtension': '''
RUN apt-get update \
&& apt-get install -y zip jq
RUN wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz \
&& rm -rf /usr/local/go \
&& tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz
ENV PATH="${PATH}:/usr/local/go/bin"
''',
'hooks': [
'pre-release': {
// Login into docker registry
sh '''
make .mktools
echo "$MKT_GITEA_RELEASE_PASSWORD" | docker login --username "$MKT_GITEA_RELEASE_USERNAME" --password-stdin reg.cadoles.com
'''
}
],
// Use credentials to push images to registry and pubish gitea release
'credentials': [
usernamePassword(credentialsId: 'kipp-credentials', usernameVariable: 'MKT_GITEA_RELEASE_USERNAME', passwordVariable: 'MKT_GITEA_RELEASE_PASSWORD')
]
])

View File

@ -1,7 +1,19 @@
DOKKU_HOST := dokku@dev.lookingfora.name
SHELL := /bin/bash
DOCKER_IMAGE_NAME ?= reg.cadoles.com/cadoles/oidc-test
DOCKER_IMAGE_TAG ?= $(MKT_PROJECT_VERSION)
IMAGE_NAME ?= reg.cadoles.com/cadoles/oidc-test
MKT_GITEA_RELEASE_ORG ?= Cadoles
MKT_GITEA_RELEASE_PROJECT ?= goweb-oidc
MKT_GITEA_RELEASE_VERSION ?= $(MKT_PROJECT_VERSION)
define MKT_GITEA_RELEASE_BODY
## Docker usage
```
docker pull $(IMAGE_NAME):$(MKT_PROJECT_VERSION)
```
endef
export MKT_GITEA_RELEASE_BODY
build:
CGO_ENABLED=0 go build -v -o ./bin/server ./cmd/server
@ -9,9 +21,6 @@ build:
test:
go test -v -race ./...
release:
@$(SHELL) ./misc/script/release.sh
tidy:
go mod tidy
@ -26,32 +35,40 @@ clean:
rm -rf data
rm -rf bin
dokku-build:
build-image:
docker build \
-f ./misc/dokku/Dockerfile \
-t goweb-oidc-dokku:latest \
-t "${IMAGE_NAME}:latest" \
-f ./misc/docker/Dockerfile \
.
dokku-run:
docker run -it --rm -p 3002:3002 goweb-oidc-dokku:latest
scan: build-image tools/trivy/bin/trivy
mkdir -p .trivy
tools/trivy/bin/trivy --cache-dir .trivy/.cache image --ignorefile .trivyignore.yaml $(TRIVY_ARGS) $(IMAGE_NAME):latest
tools/trivy/bin/trivy:
mkdir -p tools/trivy/bin
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b ./tools/trivy/bin v0.47.0
dokku-deploy:
$(if $(shell git config remote.dokku-oidc-test.url),, git remote add dokku-oidc-test $(DOKKU_HOST):oidc-test)
git push -f dokku-oidc-test $(shell git rev-parse HEAD):refs/heads/master
release: release-image release-gitea
docker-build: .mktools
docker build \
-f ./misc/dokku/Dockerfile \
-t $(DOCKER_IMAGE_NAME):latest \
.
release-archive:
@$(SHELL) ./misc/script/release.sh
docker-release: .mktools docker-build
docker image tag $(DOCKER_IMAGE_NAME):latest $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)
docker login
docker push $(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_TAG)
docker push $(DOCKER_IMAGE_NAME):latest
release-gitea: .mktools release-archive
@[ ! -z "$(MKT_PROJECT_VERSION)" ] || ( echo "Just downloaded mktools. Please re-run command."; exit 1 )
$(MAKE) MKT_GITEA_RELEASE_ATTACHMENTS="$$(find release/* -maxdepth 0 -type f -printf '%p ')" mkt-gitea-release
.PHONY: lint watch build vendor tidy release
release-image: .mktools build-image
@[ ! -z "$(MKT_PROJECT_VERSION)" ] || ( echo "Just downloaded mktools. Please re-run command."; exit 1 )
docker tag "${IMAGE_NAME}:latest" "${IMAGE_NAME}:$(MKT_PROJECT_VERSION)"
docker tag "${IMAGE_NAME}:latest" "${IMAGE_NAME}:$(MKT_PROJECT_SHORT_VERSION)"
docker tag "${IMAGE_NAME}:latest" "${IMAGE_NAME}:$(MKT_PROJECT_VERSION_CHANNEL)-latest"
docker push "${IMAGE_NAME}:$(MKT_PROJECT_VERSION)"
docker push "${IMAGE_NAME}:$(MKT_PROJECT_SHORT_VERSION)"
docker push "${IMAGE_NAME}:$(MKT_PROJECT_VERSION_CHANNEL)-latest"
.PHONY: lint watch build tidy release
.PHONY: mktools
mktools:

View File

@ -6,6 +6,6 @@ Middleware [`goweb`](https://forge.cadoles.com/wpetit/goweb) pour authentificati
Une application web de test est disponible dans le répertoire [`cmd/server`](./cmd/server). Voici les principaux exemples d'utilisation de la librairie:
- [Initialisation du service `oidc`](https://forge.cadoles.com/wpetit/goweb-oidc/src/branch/master/cmd/server/container.go#L78-L87)
- [Ajout du middleware d'authentification dans les routes HTTP](https://forge.cadoles.com/wpetit/goweb-oidc/src/branch/master/internal/route/mount.go#L12-L19)
- [Récupération de l'`IDToken` dans un handler HTTP](https://forge.cadoles.com/wpetit/goweb-oidc/src/branch/master/internal/route/login.go#L18-L21)
- [Initialisation du service `oidc`](https://forge.cadoles.com/cadoles/goweb-oidc/src/branch/master/cmd/server/container.go#L78-L87)
- [Ajout du middleware d'authentification dans les routes HTTP](https://forge.cadoles.com/cadoles/goweb-oidc/src/branch/master/internal/route/mount.go#L12-L19)
- [Récupération de l'`IDToken` dans un handler HTTP](https://forge.cadoles.com/cadoles/goweb-oidc/src/branch/master/internal/route/login.go#L18-L21)

View File

@ -8,8 +8,8 @@ import (
"gitlab.com/wpetit/goweb/logger"
"gitlab.com/wpetit/goweb/template/html"
oidc "forge.cadoles.com/wpetit/goweb-oidc"
"forge.cadoles.com/wpetit/goweb-oidc/internal/config"
oidc "forge.cadoles.com/cadoles/goweb-oidc"
"forge.cadoles.com/cadoles/goweb-oidc/internal/config"
"github.com/gorilla/sessions"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/service"

View File

@ -8,8 +8,8 @@ import (
"net/http"
"os"
"forge.cadoles.com/wpetit/goweb-oidc/internal/config"
"forge.cadoles.com/wpetit/goweb-oidc/internal/route"
"forge.cadoles.com/cadoles/goweb-oidc/internal/config"
"forge.cadoles.com/cadoles/goweb-oidc/internal/route"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
@ -19,7 +19,7 @@ import (
"gitlab.com/wpetit/goweb/logger"
)
//nolint: gochecknoglobals
// nolint: gochecknoglobals
var (
configFile = ""
workdir = ""
@ -34,7 +34,7 @@ var (
BuildDate = "unknown"
)
//nolint: gochecknoinits
// nolint: gochecknoinits
func init() {
flag.StringVar(&configFile, "config", configFile, "configuration file")
flag.StringVar(&workdir, "workdir", workdir, "working directory")

2
go.mod
View File

@ -1,4 +1,4 @@
module forge.cadoles.com/wpetit/goweb-oidc
module forge.cadoles.com/cadoles/goweb-oidc
go 1.14

View File

@ -3,7 +3,7 @@ package route
import (
"net/http"
"forge.cadoles.com/wpetit/goweb-oidc/internal/config"
"forge.cadoles.com/cadoles/goweb-oidc/internal/config"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/middleware/container"
"gitlab.com/wpetit/goweb/service"

View File

@ -3,8 +3,8 @@ package route
import (
"net/http"
oidc "forge.cadoles.com/wpetit/goweb-oidc"
"forge.cadoles.com/wpetit/goweb-oidc/internal/config"
oidc "forge.cadoles.com/cadoles/goweb-oidc"
"forge.cadoles.com/cadoles/goweb-oidc/internal/config"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/middleware/container"
"gitlab.com/wpetit/goweb/service/template"

View File

@ -3,8 +3,8 @@ package route
import (
"net/http"
oidc "forge.cadoles.com/wpetit/goweb-oidc"
"forge.cadoles.com/wpetit/goweb-oidc/internal/config"
oidc "forge.cadoles.com/cadoles/goweb-oidc"
"forge.cadoles.com/cadoles/goweb-oidc/internal/config"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/logger"
"gitlab.com/wpetit/goweb/middleware/container"

View File

@ -3,8 +3,8 @@ package route
import (
"net/http"
oidc "forge.cadoles.com/wpetit/goweb-oidc"
"forge.cadoles.com/wpetit/goweb-oidc/internal/config"
oidc "forge.cadoles.com/cadoles/goweb-oidc"
"forge.cadoles.com/cadoles/goweb-oidc/internal/config"
"gitlab.com/wpetit/goweb/logger"
"gitlab.com/wpetit/goweb/middleware/container"
)

View File

@ -1,8 +1,8 @@
package route
import (
oidc "forge.cadoles.com/wpetit/goweb-oidc"
"forge.cadoles.com/wpetit/goweb-oidc/internal/config"
oidc "forge.cadoles.com/cadoles/goweb-oidc"
"forge.cadoles.com/cadoles/goweb-oidc/internal/config"
chi "github.com/go-chi/chi/v5"
"gitlab.com/wpetit/goweb/static"

View File

@ -4,7 +4,7 @@ import (
"encoding/json"
"net/http"
oidc "forge.cadoles.com/wpetit/goweb-oidc"
oidc "forge.cadoles.com/cadoles/goweb-oidc"
"github.com/pkg/errors"
"gitlab.com/wpetit/goweb/middleware/container"
"gitlab.com/wpetit/goweb/service/template"

View File

@ -11,7 +11,7 @@ COPY . /src
WORKDIR /src
RUN make ARCH_TARGETS=amd64 release
RUN make ARCH_TARGETS=amd64 release-archive
FROM alpine as certs