
* Increasing expries_in flags to be 30 minutes from 15 + Adding build-keys job which builds hmac keys + build-rtc-server: simple build job * Moving cargo-test-json-api (unit tests) to the bottom with the other tests ! full-mock-tests are now implemented so its time to watch them fail horribly
208 lines
3.7 KiB
YAML
208 lines
3.7 KiB
YAML
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
|
|
|
|
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/*.rs
|
|
|
|
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 build
|
|
|
|
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
|
|
|
|
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
|
|
|