115 lines
2.8 KiB
YAML
115 lines
2.8 KiB
YAML
image: ubuntu:25.10
|
|
|
|
stages:
|
|
- build
|
|
- test
|
|
- deploy
|
|
|
|
build:
|
|
stage: build
|
|
variables:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
LANG: C.UTF-8
|
|
LC_ALL: C.UTF-8
|
|
cache:
|
|
key: "build-$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- build/
|
|
policy: pull-push
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y --no-install-recommends clang build-essential sqlite3 libsqlite3-dev wget ca-certificates
|
|
- update-ca-certificates || true
|
|
- wget https://lab.voldemort.tech/api/v4/projects/lambda%2Fcarga/packages/generic/carga/v0.0.1/carga -O /usr/local/bin/carga
|
|
- chmod +x /usr/local/bin/carga
|
|
script:
|
|
- I_AM_SCARED_PLEASE_TALK_TO_ME=true carga собери
|
|
artifacts:
|
|
name: "target-$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- build/target.exe
|
|
|
|
build_wrapper:
|
|
stage: build
|
|
image: rust:1.90-bookworm
|
|
variables:
|
|
CARGO_HOME: "$CI_PROJECT_DIR/.cargo"
|
|
cache:
|
|
key: "cargo-$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- .cargo/registry
|
|
- .cargo/git
|
|
- wrapper/target
|
|
policy: pull-push
|
|
script:
|
|
- cd wrapper
|
|
- cargo build --release
|
|
artifacts:
|
|
name: "wrapper-$CI_COMMIT_REF_SLUG"
|
|
paths:
|
|
- wrapper/target/release/wrapper
|
|
|
|
test:
|
|
stage: test
|
|
dependencies:
|
|
- build
|
|
- build_wrapper
|
|
variables:
|
|
DEBIAN_FRONTEND: noninteractive
|
|
LANG: C.UTF-8
|
|
LC_ALL: C.UTF-8
|
|
before_script:
|
|
- apt-get update
|
|
- apt-get install -y --no-install-recommends python3 python3-pip
|
|
- python3 -m pip install --break-system-packages requests
|
|
script:
|
|
- export SERVER_PATH="$(pwd)/wrapper/target/release/wrapper"
|
|
- export BIN_PATH="$(pwd)/build/target.exe"
|
|
- python3 ./autotest/main.py -s
|
|
|
|
pages:
|
|
stage: deploy
|
|
image: node:20
|
|
script:
|
|
- npm init -y
|
|
- npm install swagger-ui-dist
|
|
- mkdir -p public
|
|
- cp -r node_modules/swagger-ui-dist/* public/
|
|
- cp ./openapi/srab.yaml public/
|
|
- |
|
|
cat > public/index.html <<'EOF'
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title>SRAB API Documentation</title>
|
|
<link rel="stylesheet" href="./swagger-ui.css">
|
|
<script src="./swagger-ui-bundle.js" crossorigin></script>
|
|
<script src="./swagger-ui-standalone-preset.js" crossorigin></script>
|
|
</head>
|
|
<body>
|
|
<div id="swagger-ui"></div>
|
|
<script>
|
|
window.onload = () => {
|
|
window.ui = SwaggerUIBundle({
|
|
url: "./srab.yaml",
|
|
dom_id: '#swagger-ui',
|
|
deepLinking: true,
|
|
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
|
|
layout: "BaseLayout"
|
|
});
|
|
};
|
|
</script>
|
|
</body>
|
|
</html>
|
|
EOF
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
only:
|
|
refs:
|
|
- master
|
|
changes:
|
|
- openapi/**/*
|
|
- .gitlab-ci.yml
|