--- stages: - deps - sast - build - 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-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_COMMIT_REF_SLUG}/${CI_JOB_NAME}:${CI_COMMIT_SHA}" \ --destination "${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_SLUG}/${CI_JOB_NAME}:latest" 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 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: - 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 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 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 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 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 - tar chjf deploy/htdocs-dashboard.tar.bz2 htdocs-dashboard artifacts: paths: - deploy/htdocs-dashboard.tar.bz2 when: on_success dashboard-amd64: needs: ["build-dashboard-amd64"] variables: DOCKERFILE: Dockerfile-dashboard <<: *push-image build-repochecker-amd64: <<: *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 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