--- stages: - deps - build - sast - image 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/ .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 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: 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"] 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 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