stages: - pages - build-frontend - build-backend - deploy include: - local: 'ci/cargo.yml' - local: 'ci/docker.yml' pages: image: shockrah/website:latest stage: pages only: refs: - master before_script: - git submodule init - git submodule update script: - cd gitpage - hugo - mv public/ .. - ls ../public -R artifacts: paths: - public/ # Webpack bundles everything anyway so both admin/non-admin builds have # the same frontend code. build-frontend-js: image: codesignal/typescript:v9.6.0 stage: build-frontend only: refs: - master script: - cd ts/ - npm i - npm run build artifacts: paths: - clippable-svc/static/ build-server-no-admin: extends: .cargo-builder stage: build-backend needs: - build-frontend-js dependencies: - build-frontend-js script: - cd clippable-svc/ - cargo build --release - cd ../ build-server-admin-enabled: extends: .cargo-builder stage: build-backend needs: - build-frontend-js dependencies: - build-frontend-js script: - cd clippable-svc/ - cargo build --release --features admin - cd ../ deploy-no-admin-docker: stage: deploy extends: .docker-deploy needs: - build-server-no-admin dependencies: - build-server-no-admin script: - docker build -t registry.gitlab.com/shockrah/clippable . - docker push registry.gitlab.com/shockrah/clippable deploy-admin-docker: stage: deploy extends: .docker-deploy needs: - build-server-admin-enabled dependencies: - build-server-admin-enabled script: - docker build -t registry.gitlab.com/shockrah/clippable:admin . - docker push registry.gitlab.com/shockrah/clippable:admin