diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1ac2c031..debfe014 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,6 +4,7 @@ stages: - deps - sast - build + - image before_script: - export GOPATH="$CI_PROJECT_DIR/.go" @@ -16,6 +17,36 @@ cache: - qa/ui/node_modules/ - frontend/ui/node_modules/ +variables: + IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + DOCKER_TLS_CERTDIR: "" + DOCKER_DRIVER: overlay2 + DOCKER_HOST: tcp://dockerdaemon:2375/ + +.build-amd64: &build-amd64 + stage: build + image: golang:alpine3.18 + variables: + CGO_ENABLED: 0 + BUILD_OS: linux + BUILD_ARCH: amd64 + +.build: &push-image + stage: image + interruptible: true + image: + name: gcr.io/kaniko-project/executor:v1.9.0-debug + entrypoint: [""] + before_script: + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"${CI_REGISTRY}\":{\"username\":\"${CI_REGISTRY_USER}\",\"password\":\"${CI_REGISTRY_PASSWORD}\"}}}" > /kaniko/.docker/config.json + script: + - | + /kaniko/executor \ + --context . \ + --dockerfile "${DOCKERFILE}" \ + --destination "${CI_REGISTRY_IMAGE}/${CI_JOB_NAME}/${CI_COMMIT_REF_SLUG}:${CI_COMMIT_SHA}" + get-deps: stage: deps image: golang:alpine3.18 @@ -74,19 +105,17 @@ vet: - go vet -v -buildvcs=false srs.epita.fr/fic-server/qa - go vet -v -buildvcs=false srs.epita.fr/fic-server/settings -.build-backend: &build-amd64 - stage: build - image: golang:alpine3.18 - variables: - CGO_ENABLED: 0 - BUILD_OS: linux - BUILD_ARCH: amd64 - -build-backend: +build-backend-amd64: <<: *build-amd64 script: - go build -v -buildvcs=false -o deploy/backend-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/backend +backend-amd64: + needs: ["build-backend-amd64"] + variables: + DOCKERFILE: Dockerfile-backend + <<: *push-image + build-admin-amd64: <<: *build-amd64 script: @@ -98,16 +127,34 @@ build-admin-amd64: - deploy/htdocs-admin.tar.bz2 when: on_success -build-evdist: +admin-amd64: + needs: ["build-admin-amd64"] + variables: + DOCKERFILE: Dockerfile-admin + <<: *push-image + +build-evdist-amd64: <<: *build-amd64 script: - go build -v -buildvcs=false -o deploy/evdist-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/evdist -build-frontend: +evdist-amd64: + needs: ["build-evdist-amd64"] + variables: + DOCKERFILE: Dockerfile-evdist + <<: *push-image + +build-frontend-amd64: <<: *build-amd64 script: - go build -v -buildvcs=false -o deploy/frontend-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/frontend +frontend-amd64: + needs: ["build-frontend-amd64"] + variables: + DOCKERFILE: Dockerfile-frontend + <<: *push-image + build-frontend-ui: stage: build image: node:20-alpine3.18 @@ -122,7 +169,19 @@ build-frontend-ui: - deploy/htdocs-frontend.tar.bz2 when: on_success -build-dashboard: +frontend-ui: + needs: ["build-frontend-ui"] + variables: + DOCKERFILE: Dockerfile-frontend-ui + <<: *push-image + +nginx: + needs: ["build-frontend-ui"] + variables: + DOCKERFILE: Dockerfile-nginx + <<: *push-image + +build-dashboard-amd64: <<: *build-amd64 script: - go build -v -buildvcs=false -o deploy/dashboard-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/dashboard @@ -132,7 +191,13 @@ build-dashboard: - deploy/htdocs-dashboard.tar.bz2 when: on_success -build-repochecker: +dashboard-amd64: + needs: ["build-dashboard-amd64"] + variables: + DOCKERFILE: Dockerfile-dashboard + <<: *push-image + +build-repochecker-amd64: <<: *build-amd64 script: - apk --no-cache add build-base @@ -144,7 +209,19 @@ build-repochecker: - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-videos-rules-${BUILD_OS}-${BUILD_ARCH}.so srs.epita.fr/fic-server/repochecker/videos - grep "const version" repochecker/update.go | sed -r 's/^.*=\s*(\S.*)$/\1/' > deploy/repochecker.version -build-qa: +repochecker-amd64: + needs: ["build-repochecker-amd64"] + variables: + DOCKERFILE: Dockerfile-repochecker + <<: *push-image + +build-qa-amd64: <<: *build-amd64 script: - go build -v -buildvcs=false -o deploy/qa-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/qa + +qa-amd64: + needs: ["build-qa-amd64"] + variables: + DOCKERFILE: Dockerfile-qa + <<: *push-image