clippable/.gitlab-ci.yml

93 lines
1.7 KiB
YAML

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