diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..61d9dd401ebff7dd541326508d9f257699fdb64b --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,112 @@ +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 + - 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=examples/web/lib -- --features wasm + - cd examples/web && npm install && npm run build + artifacts: + paths: + - examples/web/dist + - examples/web/lib + expire_in: 1 day + +deploy-netlify-preview: + stage: deploy + script: + - cd examples/web/dist + - npm_config_yes=true npx --package=netlify-cli netlify deploy --dir=. + dependencies: + - build-wasm + only: + - master + +deploy-netlify-prod: + stage: deploy + script: + - cd examples/web/dist + - npm_config_yes=true npx --package=netlify-cli netlify deploy --dir=. --prod + dependencies: + - build-wasm + only: + - tags + +deploy-cloudfare-preview: + stage: deploy + script: + - cd examples/web/dist + - npm_config_yes=true npx wrangler pages publish . --project-name=boytacean --branch master + dependencies: + - build-wasm + only: + - master + +deploy-cloudfare-prod: + stage: deploy + script: + - cd examples/web/dist + - npm_config_yes=true npx wrangler pages publish . --project-name=boytacean --branch stable + 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 examples/web/lib && npm publish + dependencies: + - build-wasm + only: + - tags