server/.gitlab-ci.yml

228 lines
7.4 KiB
YAML
Raw Normal View History

2023-06-09 21:16:05 +00:00
---
stages:
- deps
- sast
2023-06-10 00:13:23 +00:00
- build
2023-06-10 01:36:49 +00:00
- image
2023-06-09 21:16:05 +00:00
before_script:
- export GOPATH="$CI_PROJECT_DIR/.go"
- mkdir -p .go
- mkdir -p deploy
cache:
paths:
- .go/pkg/mod/
- qa/ui/node_modules/
- frontend/ui/node_modules/
2023-06-10 01:36:49 +00:00
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}"
2023-06-09 21:16:05 +00:00
get-deps:
stage: deps
image: golang:alpine3.18
script:
- apk --no-cache add git
- go get -v -d srs.epita.fr/fic-server/admin
- go get -v -d srs.epita.fr/fic-server/backend
- go get -v -d srs.epita.fr/fic-server/evdist
- go get -v -d srs.epita.fr/fic-server/frontend
- go get -v -d srs.epita.fr/fic-server/dashboard
- go get -v -d srs.epita.fr/fic-server/repochecker
- go get -v -d srs.epita.fr/fic-server/repochecker/epita
- go get -v -d srs.epita.fr/fic-server/repochecker/file-inspector
- go get -v -d srs.epita.fr/fic-server/repochecker/grammalecte
- go get -v -d srs.epita.fr/fic-server/repochecker/pcap-inspector
- 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: deps
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
- tar chjf ../../deploy/htdocs-qa.tar.bz2 build
artifacts:
paths:
- qa/ui/build/
- deploy/htdocs-qa.tar.bz2
when: on_success
vet:
stage: sast
dependencies:
- build-qa-ui
image: golang:alpine3.18
script:
- apk --no-cache add build-base
- go vet -v -buildvcs=false -tags gitgo srs.epita.fr/fic-server/admin
- go vet -v -buildvcs=false srs.epita.fr/fic-server/libfic
- go vet -v -buildvcs=false srs.epita.fr/fic-server/admin/sync
- go vet -v -buildvcs=false srs.epita.fr/fic-server/admin/pki
- go vet -v -buildvcs=false srs.epita.fr/fic-server/admin
- go vet -v -buildvcs=false srs.epita.fr/fic-server/backend
- go vet -v -buildvcs=false srs.epita.fr/fic-server/evdist
- go vet -v -buildvcs=false srs.epita.fr/fic-server/frontend
- go vet -v -buildvcs=false srs.epita.fr/fic-server/dashboard
- go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker
- go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/epita
- go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/file-inspector
- go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/grammalecte
- go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/pcap-inspector
- go vet -v -buildvcs=false srs.epita.fr/fic-server/repochecker/videos
- go vet -v -buildvcs=false srs.epita.fr/fic-server/qa
- go vet -v -buildvcs=false srs.epita.fr/fic-server/settings
2023-06-10 00:13:23 +00:00
2023-06-10 01:36:49 +00:00
build-backend-amd64:
2023-06-10 00:13:23 +00:00
<<: *build-amd64
script:
- go build -v -buildvcs=false -o deploy/backend-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/backend
2023-06-10 01:36:49 +00:00
backend-amd64:
needs: ["build-backend-amd64"]
variables:
DOCKERFILE: Dockerfile-backend
<<: *push-image
2023-06-10 00:13:23 +00:00
build-admin-amd64:
<<: *build-amd64
script:
- go build -v -buildvcs=false -tags gitgo -o deploy/admin-gitgo-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/admin
- go build -v -buildvcs=false -o deploy/admin-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/admin
- tar chjf deploy/htdocs-admin.tar.bz2 htdocs-admin
artifacts:
paths:
- deploy/htdocs-admin.tar.bz2
when: on_success
2023-06-10 01:36:49 +00:00
admin-amd64:
needs: ["build-admin-amd64"]
variables:
DOCKERFILE: Dockerfile-admin
<<: *push-image
build-evdist-amd64:
2023-06-10 00:13:23 +00:00
<<: *build-amd64
script:
- go build -v -buildvcs=false -o deploy/evdist-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/evdist
2023-06-10 01:36:49 +00:00
evdist-amd64:
needs: ["build-evdist-amd64"]
variables:
DOCKERFILE: Dockerfile-evdist
<<: *push-image
build-frontend-amd64:
2023-06-10 00:13:23 +00:00
<<: *build-amd64
script:
- go build -v -buildvcs=false -o deploy/frontend-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/frontend
2023-06-10 01:36:49 +00:00
frontend-amd64:
needs: ["build-frontend-amd64"]
variables:
DOCKERFILE: Dockerfile-frontend
<<: *push-image
2023-06-10 00:13:23 +00:00
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
- tar chjf ../../deploy/htdocs-frontend.tar.bz2 build
artifacts:
paths:
- deploy/htdocs-frontend.tar.bz2
when: on_success
2023-06-10 01:36:49 +00:00
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:
2023-06-10 00:13:23 +00:00
<<: *build-amd64
script:
- go build -v -buildvcs=false -o deploy/dashboard-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/dashboard
- tar chjf deploy/htdocs-dashboard.tar.bz2 htdocs-dashboard
artifacts:
paths:
- deploy/htdocs-dashboard.tar.bz2
when: on_success
2023-06-10 01:36:49 +00:00
dashboard-amd64:
needs: ["build-dashboard-amd64"]
variables:
DOCKERFILE: Dockerfile-dashboard
<<: *push-image
build-repochecker-amd64:
2023-06-10 00:13:23 +00:00
<<: *build-amd64
script:
- apk --no-cache add build-base
- go build -buildvcs=false --tags checkupdate -v -o deploy/repochecker-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/repochecker
- go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-epita-rules-${BUILD_OS}-${BUILD_ARCH}.so srs.epita.fr/fic-server/repochecker/epita
- go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-file-inspector-rules-${BUILD_OS}-${BUILD_ARCH}.so srs.epita.fr/fic-server/repochecker/file-inspector
- go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-grammalecte-rules-${BUILD_OS}-${BUILD_ARCH}.so srs.epita.fr/fic-server/repochecker/grammalecte
- go build -buildvcs=false -buildmode=plugin -v -o deploy/repochecker-pcap-inspector-rules-${BUILD_OS}-${BUILD_ARCH}.so srs.epita.fr/fic-server/repochecker/pcap-inspector
- 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
2023-06-10 01:36:49 +00:00
repochecker-amd64:
needs: ["build-repochecker-amd64"]
variables:
DOCKERFILE: Dockerfile-repochecker
<<: *push-image
build-qa-amd64:
2023-06-10 00:13:23 +00:00
<<: *build-amd64
script:
- go build -v -buildvcs=false -o deploy/qa-${BUILD_OS}-${BUILD_ARCH} srs.epita.fr/fic-server/qa
2023-06-10 01:36:49 +00:00
qa-amd64:
needs: ["build-qa-amd64"]
variables:
DOCKERFILE: Dockerfile-qa
<<: *push-image