diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8428bbf..d5bef99 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: shockrah/freechat-pipeline:latest +image: shockrah/fc-pipeline:latest stages: - documentation @@ -27,12 +27,13 @@ before_script: build-json-api: - # Literally so expensive that I realy just don't wanna deal with it + # This is easily the most expensive stage since cargo sucks so we try to cache + # everything we can between jobs here stage: build only: refs: - - broken + - master changes: - json-api/Cargo.* @@ -60,43 +61,42 @@ build-json-api: - json-api/target/ - $CARGO_HOME - expire_in: 15 mins + expire_in: 30 mins -test-json-api: - stage: test - needs: - - build-json-api +build-keys: + stage: build only: refs: - - broken - - changes: - - json-api/Cargo.* - - json-api/src/* - - json-api/src/testing/* - - - json-api/migrations/**/* - - - json-api/client-tests/**/* - - - json-api/build.sh - - - json-api/db/Cargo.* - - json-api/db/src/* - - dependencies: - - build-json-api + - master + # Here we generate some hmac keys for testing before we go on to testing script: - - cd json-api/ - - cargo test --release + - head --bytes=32 /dev/urandom > hmac.secret + - head --bytes=32 /dev/urandom > wss-hmac.secret artifacts: - paths: - - json-api/target/release/json-api - expire_in: 1 week - name: json-api + paths: + - hmac.secret + - wss-hmac.secret + + +build-rtc-server: + stage: build + only: + refs: + - master + + script: + - cd rtc-server/ + - npm build + + artifacts: + paths: + - rtc-server/node_modules/ + expire_in: 30 mins + + build-channer: stage: build @@ -123,7 +123,6 @@ build-channer: build-wiki: image: shockrah/website:latest - only: [ "master" ] stage: documentation only: @@ -148,3 +147,61 @@ build-wiki: - ssh $SHOPTS web@shockrah.xyz "rm -rf /var/www/freechat" - scp $SHOPTS -r public/ web@shockrah.xyz:/var/www/freechat + +# Test routines past this point +cargo-test-json-api: + # Basic cargo unit tests(that honestly are nearly useless) + stage: test + needs: + - build-json-api + only: + refs: + - master + + changes: + - json-api/Cargo.* + - json-api/src/* + - json-api/src/testing/* + + - json-api/migrations/**/* + + - json-api/client-tests/**/* + + - json-api/build.sh + + - json-api/db/Cargo.* + - json-api/db/src/* + + dependencies: + - build-json-api + + script: + - cd json-api/ + - export HMAC_PATH="../hmac.secret" && \ + export WSS_HMAC_PATH="../wss-hmac.secret" && \ + cargo test --release + + artifacts: + paths: + - json-api/target/release/json-api + expire_in: 1 week + name: json-api + +full-mock-tests: + stage: test + needs: + - build-json-api + - build-rtc-server + - build-keys + only: + refs: + - master + dependencies: + - build-json-api + - build-rtc-server + - build-keys + + script: + - bash scripts/build-db.sh + - bash scripts/run-api-tests.sh +