image: shockrah/fc-pipeline:latest stages: - documentation - build - test workflow: rules: - if: '$CI_COMMIT_BRANCH' variables: CARGO_HOME: $CI_PROJECT_DIR/.cargo GIT_SUBMODULE_STRATEGY: recursive # Not doing strict host checking to avoid writing the host fingerprint anywhere # This is important because I don't host this gitlab instance, if I did host my # own gitlab however this wouldn't be here as it would be under my control but # this isn't the case # Really we're just trading one security issue for another: # - keeping fingerprints on someone else's server # - not verifying the host for my little known service SHOPTS: "-o StrictHostKeyChecking=no" before_script: - export PATH="$CARGO_HOME/bin:$PATH" build-json-api: # 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: - master script: - cd json-api/ - cargo build --release # primarily used to cache between jobs # expirey time overwritten later for weekly builds artifacts: paths: - json-api/target/ - $CARGO_HOME expire_in: 30 mins build-keys: stage: build only: refs: - master # Here we generate some hmac keys for testing before we go on to testing script: - head --bytes=32 /dev/urandom > hmac.secret - head --bytes=32 /dev/urandom > wss-hmac.secret artifacts: paths: - hmac.secret - wss-hmac.secret build-rtc-server: stage: build only: refs: - master script: - cd rtc-server/ - npm install artifacts: paths: - rtc-server/node_modules/ expire_in: 30 mins build-channer: stage: build only: refs: - master changes: - chan-like/Cargo.* - chan-like/src/main.rs script: - cd chan-like/ - cargo build --release artifacts: paths: - json-api/target/ - $CARGO_HOME expire_in: 1 week build-wiki: image: shockrah/website:latest stage: documentation only: refs: - master changes: - docs/archetypes/* - docs/content/**/* - docs/layouts/partials/* - docs/config.toml before_script: - eval $(ssh-agent -s) - echo "${SSH_PRIVATE_KEY}" | ssh-add - > /dev/null - mkdir -p ~/.ssh/ - chmod 700 ~/.ssh/ script: - cd docs/ - hugo - 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 dependencies: - build-json-api variables: HMAC_PATH: "../hmac.secret" WSS_HMAC_PATH: "../wss-hmac.secret" 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: - cd json-api/client-tests/ - virtualenv . - source bin/activate && pip install -r requirements.txt - cd ../../ - bash scripts/build-db.sh - bash scripts/run-api-tests.sh