Newer
Older
image: hivesolutions/ubuntu_dev
variables:
NETLIFY_SITE_ID: boytacean
NETLIFY_AUTH_TOKEN: $NETLIFY_AUTH_TOKEN
CLOUDFLARE_API_TOKEN: $CLOUDFLARE_API_TOKEN
CRATES_TOKEN: $CRATES_TOKEN
NPM_TOKEN: $NPM_TOKEN
stages:
- build
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
- deploy
before_script:
- apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y -q pkg-config
- curl -sf -L https://static.rust-lang.org/rustup.sh | sh -s -- -y
- export PATH=$PATH:$HOME/.cargo/bin
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- export NVM_DIR="$HOME/.nvm"
- \[ -s "$NVM_DIR/nvm.sh" \] && \. "$NVM_DIR/nvm.sh"
- \[ -s "$NVM_DIR/bash_completion" \] && \. "$NVM_DIR/bash_completion"
- nvm install stable
build-rust:
stage: build
parallel:
matrix:
- RUST_VERSION: ["1.56.1", "1.60.0", "stable", "nightly"]
script:
- rustup toolchain install $RUST_VERSION
- rustup override set $RUST_VERSION
- rustc --version
- cargo build
- cargo build --release
build-wasm:
stage: build
parallel:
matrix:
- RUST_VERSION: ["1.60.0"]
script:
- rustup toolchain install $RUST_VERSION
- rustup override set $RUST_VERSION
- rustc --version
- cargo install wasm-pack
- wasm-pack build --release --target=web --out-dir=frontends/web/lib -- --features wasm
- cd frontends/web && npm install && npm run build
- frontends/web/dist
- frontends/web/lib
test-rust:
stage: test
parallel:
matrix:
- RUST_VERSION: ["1.56.1", "1.60.0", "stable", "nightly"]
script:
- rustup toolchain install $RUST_VERSION
- rustup override set $RUST_VERSION
- rustc --version
- cargo test
deploy-netlify-preview:
stage: deploy
script:
- npm_config_yes=true npx --package=netlify-cli netlify deploy --dir=.
dependencies:
- build-wasm
only:
- master
deploy-netlify-prod:
stage: deploy
script:
- npm_config_yes=true npx --package=netlify-cli netlify deploy --dir=. --prod
dependencies:
- build-wasm
only:
- tags
- npm_config_yes=true npx wrangler pages publish . --project-name=boytacean --branch master
dependencies:
- build-wasm
only:
- master
- npm_config_yes=true npx wrangler pages publish . --project-name=boytacean --branch stable
dependencies:
- build-wasm
only:
- stable
deploy-cloudfare-prod:
stage: deploy
script:
- npm_config_yes=true npx wrangler pages publish . --project-name=boytacean --branch prod
dependencies:
- build-wasm
only:
- tags
deploy-crates:
stage: deploy
script:
- cargo login $CRATES_TOKEN
- cargo publish --no-verify
dependencies:
- build-rust
only:
- tags
deploy-npm:
stage: deploy
script:
- echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ~/.npmrc
- cd frontends/web/lib && npm publish
dependencies:
- build-wasm
only:
- tags