# Build the project build: needs: [] image: $CI_REGISTRY/libretunes/ops/docker-leptos:latest script: - cargo-leptos build .docker: image: docker:latest services: - docker:dind tags: - docker before_script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY # Build the docker image and push it to the registry docker-build: needs: ["build"] extends: .docker script: - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA . # If running on the default branch, tag as latest - if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]; then docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA $CI_REGISTRY_IMAGE:latest; fi - docker push $CI_REGISTRY_IMAGE --all-tags # Run leptos tests leptos-tests: needs: ["build"] image: $CI_REGISTRY/libretunes/ops/docker-leptos:latest script: - cargo-leptos test # Run all tests tests: needs: ["build"] image: $CI_REGISTRY/libretunes/ops/docker-leptos:latest script: - cargo test --all-targets --all-features # Generate docs cargo-doc: needs: [] image: rust:slim script: - cargo doc --no-deps artifacts: paths: - target/doc # Start the review environment start-review: extends: .docker rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: manual script: - apk add curl openssl - cd cicd - echo "$CLOUDFLARE_TUNNEL_AUTH_JSON" > tunnel-auth.json - ./add-dns.sh $CLOUDFLARE_ZONE_ID review-$CI_COMMIT_SHORT_SHA libretunes-auto-review $CLOUDFLARE_API_TOKEN $CLOUDFLARE_TUNNEL_ID - ./create-tunnel-config.sh http://libretunes:3000 review-$CI_COMMIT_SHORT_SHA.libretunes.xyz $CLOUDFLARE_TUNNEL_ID - export COMPOSE_PROJECT_NAME=review-$CI_COMMIT_SHORT_SHA - export POSTGRES_PASSWORD=$(openssl rand -hex 16) - export LIBRETUNES_VERSION=$CI_COMMIT_SHORT_SHA - docker compose --file docker-compose-cicd.yml pull - docker compose --file docker-compose-cicd.yml create - export CONFIG_VOL_NAME=review-${CI_COMMIT_SHORT_SHA}_cloudflared-config - export TMP_CONTAINER_NAME=$(docker run --rm -d -v $CONFIG_VOL_NAME:/data busybox sh -c "sleep infinity") - docker cp tunnel-auth.json $TMP_CONTAINER_NAME:/data/auth.json - docker cp cloudflared-tunnel-config.yml $TMP_CONTAINER_NAME:/data/config.yml - docker stop $TMP_CONTAINER_NAME - docker compose --file docker-compose-cicd.yml up -d environment: name: review/$CI_COMMIT_SHORT_SHA url: https://review-$CI_COMMIT_SHORT_SHA.libretunes.xyz on_stop: stop-review auto_stop_in: 1 week # Stop the review environment stop-review: needs: ["start-review"] extends: .docker rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: manual allow_failure: true script: - apk add jq curl - ./cicd/remove-dns.sh $CLOUDFLARE_ZONE_ID review-$CI_COMMIT_SHORT_SHA.libretunes.xyz libretunes-auto-review $CLOUDFLARE_API_TOKEN - export COMPOSE_PROJECT_NAME=review-$CI_COMMIT_SHORT_SHA - export LIBRETUNES_VERSION=$CI_COMMIT_SHORT_SHA - docker compose --file cicd/docker-compose-cicd.yml down - docker compose --file cicd/docker-compose-cicd.yml rm -f -v environment: name: review/$CI_COMMIT_SHORT_SHA action: stop