From 0200dce71bc469c63637e0a40a874eb2d27f6e63 Mon Sep 17 00:00:00 2001 From: Adrien Langou Date: Fri, 14 Jul 2023 01:52:26 +0200 Subject: [PATCH] feat(ci): split gitlab-ci in mutiple files --- .gitlab-ci.yml | 139 +------------------------------------------ .gitlab-ci/build.yml | 75 +++++++++++++++++++++++ .gitlab-ci/image.yml | 65 ++++++++++++++++++++ 3 files changed, 143 insertions(+), 136 deletions(-) create mode 100644 .gitlab-ci/build.yml create mode 100644 .gitlab-ci/image.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 42f48b4b..89a1e182 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,30 +17,9 @@ cache: - qa/ui/node_modules/ - frontend/ui/node_modules/ -.build: &build-image - stage: build - image: golang:alpine3.18 - variables: - CGO_ENABLED: 0 - -.push: &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_COMMIT_REF_SLUG}/${CI_JOB_NAME}:${CI_COMMIT_SHA}" \ - --destination "${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_SLUG}/${CI_JOB_NAME}:latest" - only: - - master +include: + - '.gitlab-ci/build.yml' + - '.gitlab-ci/image.yml' get-deps: stage: deps @@ -60,19 +39,6 @@ get-deps: - go get -v -d srs.epita.fr/fic-server/repochecker/videos - go get -v -d srs.epita.fr/fic-server/qa -build-qa-ui: - stage: build - image: node:20-alpine3.18 - script: - - cd qa/ui - - npm install --network-timeout=100000 - - sed -i 's!@popperjs/core/dist/esm/popper!@popperjs/core!' node_modules/sveltestrap/src/*.js node_modules/sveltestrap/src/*.svelte - - npm run build - artifacts: - paths: - - qa/ui/build/ - when: on_success - vet: stage: sast needs: ["build-qa-ui"] @@ -99,102 +65,3 @@ 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-image - script: - - go build -v -buildvcs=false -o deploy/backend srs.epita.fr/fic-server/backend - -backend: - variables: - DOCKERFILE: Dockerfile-backend - <<: *push-image - -build-admin: - <<: *build-image - script: - - go build -v -buildvcs=false -tags gitgo -o deploy/admin-gitgo srs.epita.fr/fic-server/admin - - go build -v -buildvcs=false -o deploy/admin srs.epita.fr/fic-server/admin - -admin: - variables: - DOCKERFILE: Dockerfile-admin - <<: *push-image - -build-evdist: - <<: *build-image - script: - - go build -v -buildvcs=false -o deploy/evdist srs.epita.fr/fic-server/evdist - -evdist: - variables: - DOCKERFILE: Dockerfile-evdist - <<: *push-image - -build-frontend: - <<: *build-image - script: - - go build -v -buildvcs=false -o deploy/frontend srs.epita.fr/fic-server/frontend - -frontend: - variables: - DOCKERFILE: Dockerfile-frontend - <<: *push-image - -build-frontend-ui: - stage: build - image: node:20-alpine3.18 - script: - - cd frontend/ui - - npm install --network-timeout=100000 - - sed -i 's!@popperjs/core/dist/esm/popper!@popperjs/core!' node_modules/sveltestrap/src/*.js node_modules/sveltestrap/src/*.svelte - - npm run build - -frontend-ui: - variables: - DOCKERFILE: Dockerfile-frontend-ui - <<: *push-image - -nginx: - variables: - DOCKERFILE: Dockerfile-nginx - <<: *push-image - -build-dashboard: - <<: *build-image - script: - - go build -v -buildvcs=false -o deploy/dashboard srs.epita.fr/fic-server/dashboard - -dashboard: - variables: - DOCKERFILE: Dockerfile-dashboard - <<: *push-image - -build-repochecker: - <<: *build-image - script: - - apk --no-cache add build-base - - go build -buildvcs=false --tags checkupdate -v -o deploy/repochecker srs.epita.fr/fic-server/repochecker - - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-epita-rules.so srs.epita.fr/fic-server/repochecker/epita - - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-file-inspector-rules.so srs.epita.fr/fic-server/repochecker/file-inspector - - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-grammalecte-rules.so srs.epita.fr/fic-server/repochecker/grammalecte - - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-pcap-inspector-rules.so srs.epita.fr/fic-server/repochecker/pcap-inspector - - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-videos-rules.so srs.epita.fr/fic-server/repochecker/videos - - grep "const version" repochecker/update.go | sed -r 's/^.*=\s*(\S.*)$/\1/' > deploy/repochecker.version - -repochecker: - variables: - DOCKERFILE: Dockerfile-repochecker - <<: *push-image - -build-qa: - <<: *build-image - needs: ["build-qa-ui"] - dependencies: - - build-qa-ui - script: - - go build -v -buildvcs=false -o deploy/qa srs.epita.fr/fic-server/qa - -qa: - variables: - DOCKERFILE: Dockerfile-qa - <<: *push-image diff --git a/.gitlab-ci/build.yml b/.gitlab-ci/build.yml new file mode 100644 index 00000000..dbb5d190 --- /dev/null +++ b/.gitlab-ci/build.yml @@ -0,0 +1,75 @@ +--- + +.build: &build-image + stage: build + image: golang:alpine3.18 + variables: + CGO_ENABLED: 0 + +build-qa-ui: + stage: build + image: node:20-alpine3.18 + script: + - cd qa/ui + - npm install --network-timeout=100000 + - sed -i 's!@popperjs/core/dist/esm/popper!@popperjs/core!' node_modules/sveltestrap/src/*.js node_modules/sveltestrap/src/*.svelte + - npm run build + artifacts: + paths: + - qa/ui/build/ + when: on_success + +build-backend: + <<: *build-image + script: + - go build -v -buildvcs=false -o deploy/backend srs.epita.fr/fic-server/backend + +build-admin: + <<: *build-image + script: + - go build -v -buildvcs=false -tags gitgo -o deploy/admin-gitgo srs.epita.fr/fic-server/admin + - go build -v -buildvcs=false -o deploy/admin srs.epita.fr/fic-server/admin + +build-evdist: + <<: *build-image + script: + - go build -v -buildvcs=false -o deploy/evdist srs.epita.fr/fic-server/evdist + +build-frontend: + <<: *build-image + script: + - go build -v -buildvcs=false -o deploy/frontend srs.epita.fr/fic-server/frontend + +build-frontend-ui: + stage: build + image: node:20-alpine3.18 + script: + - cd frontend/ui + - npm install --network-timeout=100000 + - sed -i 's!@popperjs/core/dist/esm/popper!@popperjs/core!' node_modules/sveltestrap/src/*.js node_modules/sveltestrap/src/*.svelte + - npm run build + +build-dashboard: + <<: *build-image + script: + - go build -v -buildvcs=false -o deploy/dashboard srs.epita.fr/fic-server/dashboard + +build-repochecker: + <<: *build-image + script: + - apk --no-cache add build-base + - go build -buildvcs=false --tags checkupdate -v -o deploy/repochecker srs.epita.fr/fic-server/repochecker + - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-epita-rules.so srs.epita.fr/fic-server/repochecker/epita + - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-file-inspector-rules.so srs.epita.fr/fic-server/repochecker/file-inspector + - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-grammalecte-rules.so srs.epita.fr/fic-server/repochecker/grammalecte + - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-pcap-inspector-rules.so srs.epita.fr/fic-server/repochecker/pcap-inspector + - go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-videos-rules.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: + <<: *build-image + needs: ["build-qa-ui"] + dependencies: + - build-qa-ui + script: + - go build -v -buildvcs=false -o deploy/qa srs.epita.fr/fic-server/qa diff --git a/.gitlab-ci/image.yml b/.gitlab-ci/image.yml new file mode 100644 index 00000000..e24a57f6 --- /dev/null +++ b/.gitlab-ci/image.yml @@ -0,0 +1,65 @@ +--- + +.push: &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_COMMIT_REF_SLUG}/${CI_JOB_NAME}:${CI_COMMIT_SHA}" \ + --destination "${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_SLUG}/${CI_JOB_NAME}:latest" + only: + - master + +backend: + variables: + DOCKERFILE: Dockerfile-backend + <<: *push-image + +admin: + variables: + DOCKERFILE: Dockerfile-admin + <<: *push-image + +evdist: + variables: + DOCKERFILE: Dockerfile-evdist + <<: *push-image + +frontend: + variables: + DOCKERFILE: Dockerfile-frontend + <<: *push-image + +frontend-ui: + variables: + DOCKERFILE: Dockerfile-frontend-ui + <<: *push-image + +nginx: + variables: + DOCKERFILE: Dockerfile-nginx + <<: *push-image + +dashboard: + variables: + DOCKERFILE: Dockerfile-dashboard + <<: *push-image + +repochecker: + variables: + DOCKERFILE: Dockerfile-repochecker + <<: *push-image + +qa: + variables: + DOCKERFILE: Dockerfile-qa + <<: *push-image