image: "r.lcr.gr/microhacks/bevy-builder:latest" variables: BINARY_NAME: game stages: - build - package build-windows: stage: build before_script: - export CARGO_HOME="${CI_PROJECT_DIR}/.cargo" - export PATH="${CI_PROJECT_DIR}/.cargo/bin:$PATH" cache: key: build-cache-windows paths: - .cargo/registry/cache - .cargo/registry/index - .cargo/git/db - .cargo/bin/ - target/ script: - cargo build --release -p game_core --target x86_64-pc-windows-gnu artifacts: expire_in: 1 day paths: - target/x86_64-pc-windows-gnu/release/game_core.exe only: - trunk build-linux: stage: build before_script: - export CARGO_HOME="${CI_PROJECT_DIR}/.cargo" - export PATH="${CI_PROJECT_DIR}/.cargo/bin:$PATH" cache: key: build-cache-linux paths: - .cargo/registry/cache - .cargo/registry/index - .cargo/git/db - .cargo/bin/ - target/ script: - cargo build --release -p game_core --target x86_64-unknown-linux-gnu artifacts: expire_in: 1 day paths: - target/x86_64-unknown-linux-gnu/release/game_core only: - trunk build-web: stage: build before_script: - export CARGO_HOME="${CI_PROJECT_DIR}/.cargo" - export PATH="${CI_PROJECT_DIR}/.cargo/bin:$PATH" cache: key: build-cache-web paths: - .cargo/registry/cache - .cargo/registry/index - .cargo/git/db - .cargo/bin/ - target/ script: - make assets - cd "${CI_PROJECT_DIR}/game_core" && trunk build --release - cd "${CI_PROJECT_DIR}" artifacts: expire_in: 1 day paths: - game_core/dist/ only: - trunk package-all: stage: package script: - mkdir -p dist/ - make assets - cp -r assets dist/assets - cp target/x86_64-unknown-linux-gnu/release/game_core "dist/$BINARY_NAME" - cp target/x86_64-pc-windows-gnu/release/game_core.exe "dist/$BINARY_NAME.exe" - cd "${CI_PROJECT_DIR}/dist" && zip -r "windows.zip" "./${BINARY_NAME}.exe" ./assets - cd "${CI_PROJECT_DIR}/dist" && zip -r "linux.zip" "./${BINARY_NAME}" ./assets - ls "${CI_PROJECT_DIR}/game_core/dist" - cd "${CI_PROJECT_DIR}/game_core/dist" && zip -r "web.zip" ./* - cd "${CI_PROJECT_DIR}" && mv "${CI_PROJECT_DIR}/game_core/dist/web.zip" "${CI_PROJECT_DIR}/dist/web.zip" dependencies: - build-windows - build-linux - build-web artifacts: expire_in: 7 days paths: - dist/web.zip - dist/windows.zip - dist/linux.zip only: - trunk pages: stage: package script: - ls game_core/ - ls game_core/dist/ - mkdir -p public/ - cp -r game_core/dist/* public/ artifacts: expire_in: 7 days paths: - public dependencies: - build-web only: - trunk