stages: - lint - build - test - docker lint-frontend: image: node:lts stage: lint rules: - changes: - frontend/**/* script: - cd frontend - npm i - npm run lint-no-fix build-backend: image: golang:1.21-alpine stage: build rules: - changes: - backend/**/* script: - cd backend - go build -o htwkalender artifacts: paths: - backend/htwkalender - backend/go.sum - backend/go.mod test-backend: image: golang:1.21-alpine stage: test rules: - changes: - backend/**/* script: - cd backend - go test -v ./... dependencies: - build-backend test-frontend: image: node:lts stage: test rules: - changes: - frontend/**/* script: - cd frontend - npm i - npm run test dependencies: - lint-frontend build-backend-image: stage: docker image: docker:20.10.16 services: - name: docker:20.10.16-dind alias: docker tags: - image variables: IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_VERIFY: 1 DOCKER_CERT_PATH: "/certs/client" script: - cd backend - docker login -u $CI_DOCKER_REGISTRY_USER -p $CI_DOCKER_REGISTRY_PASSWORD $CI_DOCKER_REGISTRY - docker build -t htwkalender-backend$IMAGE_TAG . - docker tag htwkalender-backend$IMAGE_TAG $CI_DOCKER_REGISTRY_USER/htwkalender:backend - docker push $CI_DOCKER_REGISTRY_USER/htwkalender:backend only: - main - development build-frontend-image: stage: docker image: docker:20.10.16 services: - name: docker:20.10.16-dind alias: docker tags: - image variables: IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG DOCKER_HOST: tcp://docker:2376 DOCKER_TLS_CERTDIR: "/certs" DOCKER_TLS_VERIFY: 1 DOCKER_CERT_PATH: "/certs/client" script: - cd frontend - docker login -u $CI_DOCKER_REGISTRY_USER -p $CI_DOCKER_REGISTRY_PASSWORD $CI_DOCKER_REGISTRY - docker build -f Dockerfile_prod -t htwkalender-frontend$IMAGE_TAG . - docker tag htwkalender-frontend$IMAGE_TAG $CI_DOCKER_REGISTRY_USER/htwkalender:frontend - docker push $CI_DOCKER_REGISTRY_USER/htwkalender:frontend only: - main - development