feat(ci): split gitlab-ci in mutiple files

This commit is contained in:
Adrien Langou 2023-07-14 01:52:26 +02:00 committed by Pierre-Olivier Mercier
parent 4ef8589330
commit 0200dce71b
3 changed files with 143 additions and 136 deletions

View File

@ -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

75
.gitlab-ci/build.yml Normal file
View File

@ -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

65
.gitlab-ci/image.yml Normal file
View File

@ -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