diff --git a/.circleci/config.yml b/.circleci/config.yml index 19a04ce..897a384 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -90,6 +90,21 @@ aliases: - ~/.cargo/ - target + - &restore_cache_release + restore_cache: + keys: + - v1-plume-release-{{ checksum "Cargo.lock" }} + - v1-plume-release + - v1-plume-notest-{{ checksum "Cargo.lock" }} + - v1-plume-notest + - &save_cache_release + save_cache: + key: v1-plume-release-{{ checksum "Cargo.lock" }} + paths: + - ~/.cargo + - target/release + - target/wasm32-unknown-unknown/release + - &restore_cache_plume_dead_code restore_cache: keys: @@ -161,6 +176,26 @@ aliases: command: ./script/upload_coverage.sh integration - *save_cache_plume_dead_code + - &release + steps: + - *attach_workspace + - *restore_cache_release + - run: + name: build frontend + command: cargo web deploy -p plume-front --release + - run: + name: build server + command: cargo build --release --no-default-features --features="${FEATURES}" || cargo build --release --no-default-features --features="${FEATURES}" + - run: + name: build plm + command: cargo build --release --no-default-features --features="${FEATURES}" -p plume-cli || cargo build --release --no-default-features --features="${FEATURES}" -p plume-cli + - *save_cache_release + - run: script/generate_artifact.sh + - store_artifacts: + path: plume.tar.gz + destination: plume.tar.gz + + jobs: download_deps: <<: *defaults @@ -217,6 +252,19 @@ jobs: <<: *selenium <<: *env_sqlite <<: *test_browser + all_ok: + docker: + - image: alpine:3.7 + steps: + - run: /bin/true + release_postgresql: + <<: *defaults + <<: *env_postgresql + <<: *release + release_sqlite: + <<: *defaults + <<: *env_sqlite + <<: *release workflows: version: 2 @@ -247,3 +295,18 @@ workflows: - test_browser_sqlite: requires: - build_web + - all_ok: + requires: + - cargo_fmt + - test_cli_postgresql + - test_cli_sqlite + - test_unit_postgresql + - test_unit_sqlite + - test_browser_postgresql + - test_browser_sqlite + - release_postgresql: + requires: + - all_ok + - release_sqlite: + requires: + - all_ok diff --git a/script/generate_artifact.sh b/script/generate_artifact.sh new file mode 100755 index 0000000..55b794d --- /dev/null +++ b/script/generate_artifact.sh @@ -0,0 +1,5 @@ +#!/bin/bash +mkdir bin +cp target/release/{plume,plm} bin +cp "$(which diesel)" bin +tar -cvzf plume.tar.gz bin/ static/ migrations/$FEATURES