diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml deleted file mode 100644 index 4353228..0000000 --- a/.forgejo/workflows/release.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: Release Workflow - -on: - push: - tags: - - '*' - branches: - - main - -jobs: - set-release-target: - runs-on: docker - outputs: - release_cible: ${{ steps.setvar.outputs.release_cible }} - steps: - - name: Déterminer la release cible - id: setvar - run: | - if [[ "${GITHUB_REF}" == refs/tags/* ]]; then - TAG="${GITHUB_REF#refs/tags/}" - echo "release_cible=$TAG" >> $GITHUB_OUTPUT - elif [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then - echo "release_cible=latest" >> $GITHUB_OUTPUT - else - echo "release_cible=unknown" >> $GITHUB_OUTPUT - fi - - - name: Afficher la variable - run: echo "Release cible = ${{ steps.setvar.outputs.release_cible }}" - - build: - runs-on: raw - container: - options: --privileged -v /var/run/docker.sock:/var/run/docker.sock - needs: set-release-target - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Install docker-cli - run: | - apt-get update - apt-get install -y ca-certificates curl - install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc - chmod a+r /etc/apt/keyrings/docker.asc - - # Add the repository to Apt sources: - echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ - $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ - tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update - apt-get install -y docker-ce-cli - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login docker registry - uses: docker/login-action@v2 - with: - username: ${{ forge.ACTOR }} - password: ${{ secrets.PACKAGE }} - registry: ${{ forge.SERVER_URL }} - - - name: Build and push - uses: docker/build-push-action@v4 - with: - context: . - push: true - tags: git.g3e.fr/h6n/users:${{ needs.set-release-target.outputs.release_cible }} - target: release \ No newline at end of file diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml deleted file mode 100644 index 80cbd6c..0000000 --- a/.forgejo/workflows/test.yml +++ /dev/null @@ -1,70 +0,0 @@ -name: Test Pipeline - -on: - pull_request: - types: [opened, synchronize] - -jobs: - lint: - runs-on: raw - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Setup golang - uses: actions/setup-go@v5 - with: - go-version: "1.21" - - - name: golangci-lint - uses: https://github.com/golangci/golangci-lint-action@v8 - with: - version: v2.1 - args: --issues-exit-code 0 - - ci-test: - runs-on: raw - container: - options: --privileged -v /var/run/docker.sock:/var/run/docker.sock - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Install docker-cli - run: | - apt-get update - apt-get install -y ca-certificates curl - install -m 0755 -d /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc - chmod a+r /etc/apt/keyrings/docker.asc - - # Add the repository to Apt sources: - echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ - $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ - tee /etc/apt/sources.list.d/docker.list > /dev/null - apt-get update - apt-get install -y docker-ce-cli - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Setup golang - uses: actions/setup-go@v5 - with: - go-version: "1.24" - - - name: Build image - run: | - docker build --pull -t users-release --target release . - - - name: Run Test - run: | - bash -ex ./scripts/prepar_test.sh - . ./config/test.src - go test -v ./cmd/ - go install gotest.tools/gotestsum@latest - gotestsum --junitfile report.xml --format testname \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 68ff1a2..e8ee6d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,11 @@ -FROM golang:1.24-alpine AS develop +FROM golang:1.21-alpine AS develop # Changement du répertoire de travail WORKDIR / RUN apk update && apk add --no-cache curl tar && \ - curl -OJ https://git.g3e.fr/api/packages/H6N/generic/minicurl/1.1.0/minicurl-linux-amd64 && \ - mv minicurl-linux-amd64 minicurl && \ - chmod +x ./minicurl + curl -O https://gitlab.g3e.fr/api/v4/projects/34/packages/generic/minicurl/v1.0.0/minicurl_linux_amd64.tar.gz && \ + tar xzvf minicurl_linux_amd64.tar.gz # Changement du répertoire de travail WORKDIR /app diff --git a/cmd/login.go b/cmd/login.go index 75a645f..97027da 100644 --- a/cmd/login.go +++ b/cmd/login.go @@ -5,7 +5,6 @@ import ( "github.com/labstack/echo/v4" logins "gitlab.g3e.fr/h6n/users/internal" - login_lib "gitlab.g3e.fr/h6n/users/lib/login" ) // Login @@ -17,7 +16,7 @@ import ( // @Param request body logins.RequestLogin true "request body" // @Success 200 {object} logins.ResponseLogin func login(c echo.Context) error { - var request login_lib.RequestLogin + var request logins.RequestLogin if err := c.Bind(&request); err != nil { return c.JSON(http.StatusBadRequest, err) } diff --git a/docs/release.md b/docs/release.md deleted file mode 100644 index 7831a01..0000000 --- a/docs/release.md +++ /dev/null @@ -1,10 +0,0 @@ -# Release - -## Naming policy - -The naming policy is based on the [periodique table](https://fr.wikipedia.org/wiki/Tableau_p%C3%A9riodique_des_%C3%A9l%C3%A9ments#/media/Fichier:Tableau_p%C3%A9riodique_des_%C3%A9l%C3%A9ments.svg) for this project. - -## Release list - -- [v1.0.0 Helixire](./release/v1.0.0_damian.md) -- [v1.1.0 Fer](./release/v1.1.0_fer.md) diff --git a/internal/createLogin.go b/internal/createLogin.go index 8609ae5..7484bf9 100644 --- a/internal/createLogin.go +++ b/internal/createLogin.go @@ -9,7 +9,6 @@ import ( "github.com/biscuit-auth/biscuit-go/v2" "github.com/biscuit-auth/biscuit-go/v2/parser" "gitlab.g3e.fr/h6n/users/lib" - login_lib "gitlab.g3e.fr/h6n/users/lib/login" "golang.org/x/crypto/bcrypt" "gorm.io/gorm" ) @@ -19,8 +18,8 @@ func CheckPasswordHash(password, hash string) bool { return err == nil } -func CreateLogin(db *gorm.DB, request login_lib.RequestLogin) (login_lib.ResponseLogin, error) { - var response login_lib.ResponseLogin +func CreateLogin(db *gorm.DB, request RequestLogin) (ResponseLogin, error) { + var response ResponseLogin var user = Users{Email: request.Username} if err := db.First(&user); err.Error != nil { diff --git a/internal/databases.go b/internal/databases.go index 8eb3d96..97f3be6 100644 --- a/internal/databases.go +++ b/internal/databases.go @@ -15,9 +15,7 @@ func DropUnusedColumns(DB *gorm.DB, values ...interface{}) { for _, dst := range values { stmt := &gorm.Statement{DB: DB} - if stmt.Parse(dst) != nil { - return - } + stmt.Parse(dst) fields := stmt.Schema.Fields columns, _ := DB.Debug().Migrator().ColumnTypes(dst) @@ -30,9 +28,7 @@ func DropUnusedColumns(DB *gorm.DB, values ...interface{}) { } } if !found { - if DB.Migrator().DropColumn(dst, columns[i].Name()) != nil { - return - } + DB.Migrator().DropColumn(dst, columns[i].Name()) } } } @@ -43,7 +39,7 @@ func Init_database(dsn string) (*gorm.DB, error) { if err != nil { return db, err } - _ = db.AutoMigrate(&Users{}) + db.AutoMigrate(&Users{}) DropUnusedColumns(db, &Users{}) return db, nil diff --git a/lib/login/struct.go b/internal/struct.go similarity index 93% rename from lib/login/struct.go rename to internal/struct.go index 1ad7774..a32b8fb 100644 --- a/lib/login/struct.go +++ b/internal/struct.go @@ -1,4 +1,4 @@ -package login_lib +package logins type ( // RequestLogin model info diff --git a/lib/initBiscuit.go b/lib/initBiscuit.go index ed74eaf..0853db2 100644 --- a/lib/initBiscuit.go +++ b/lib/initBiscuit.go @@ -3,7 +3,6 @@ package lib import ( "crypto/ed25519" "crypto/rand" - "fmt" "io" "os" "time" @@ -23,12 +22,7 @@ func InitLoginBiscuit() error { if file, err := os.Create(filePrivateKey); err != nil { return err } else { - defer func() { - if cerr := file.Close(); cerr != nil { - // ici tu peux logger ou faire quelque chose - fmt.Printf("Erreur à la fermeture: %v\n", cerr) - } - }() + defer file.Close() if _, err = io.WriteString(file, string(PrivateKey)); err != nil { return err @@ -40,12 +34,7 @@ func InitLoginBiscuit() error { if file, err := os.Create(filePublicKey); err != nil { return err } else { - defer func() { - if cerr := file.Close(); cerr != nil { - // ici tu peux logger ou faire quelque chose - fmt.Printf("Erreur à la fermeture: %v\n", cerr) - } - }() + defer file.Close() if _, err = io.WriteString(file, string(PublicKey)); err != nil { return err @@ -58,12 +47,7 @@ func InitLoginBiscuit() error { if file, err := os.Open(filePrivateKey); err != nil { return err } else { - defer func() { - if cerr := file.Close(); cerr != nil { - // ici tu peux logger ou faire quelque chose - fmt.Printf("Erreur à la fermeture: %v\n", cerr) - } - }() + defer file.Close() PrivateKey, err = io.ReadAll(file) if err != nil { @@ -73,12 +57,7 @@ func InitLoginBiscuit() error { if file, err := os.Open(filePublicKey); err != nil { return err } else { - defer func() { - if cerr := file.Close(); cerr != nil { - // ici tu peux logger ou faire quelque chose - fmt.Printf("Erreur à la fermeture: %v\n", cerr) - } - }() + defer file.Close() PublicKey, err = io.ReadAll(file) if err != nil { @@ -107,12 +86,7 @@ func InitGlobalBiscuit() error { if file, err := os.Open(filePrivateKey); err != nil { return err } else { - defer func() { - if cerr := file.Close(); cerr != nil { - // ici tu peux logger ou faire quelque chose - fmt.Printf("Erreur à la fermeture: %v\n", cerr) - } - }() + defer file.Close() PrivateKey, err = io.ReadAll(file) if err != nil { @@ -122,12 +96,7 @@ func InitGlobalBiscuit() error { if file, err := os.Open(filePublicKey); err != nil { return err } else { - defer func() { - if cerr := file.Close(); cerr != nil { - // ici tu peux logger ou faire quelque chose - fmt.Printf("Erreur à la fermeture: %v\n", cerr) - } - }() + defer file.Close() PublicKey, err = io.ReadAll(file) if err != nil { diff --git a/scripts/prepar_test.sh b/scripts/prepar_test.sh index 032e9af..2db967f 100644 --- a/scripts/prepar_test.sh +++ b/scripts/prepar_test.sh @@ -1,9 +1,20 @@ #!/bin/bash + +cat <> /etc/apk/repositories +http://ftp.halifax.rwth-aachen.de/alpine/v3.16/main +http://ftp.halifax.rwth-aachen.de/alpine/v3.16/community +ENDFILE +apk update +apk add docker docker-cli-compose docker version docker compose version +docker load --input "$IMAGE_TYPE-$IMAGE_VERSION-release.tar.gz" +docker tag $CI_REGISTRY_IMAGE:$IMAGE_VERSION-release $IMAGE_TYPE:latest + +cat < docker-compose.yml +version: '3.1' -cat < compose.yml services: postgres: image: postgres:15.2-alpine3.17 @@ -18,7 +29,7 @@ services: timeout: 5s retries: 5 users: - image: users-release + image: $IMAGE_TYPE volumes: - ./docker/keys:/keys depends_on: