Skip to content

Commit d9bc197

Browse files
authored
Merge pull request #14 from codesphere-cloud/simplify-ci-pipelines
Simplify environment variable handling
2 parents 15f1c5e + d74466a commit d9bc197

6 files changed

Lines changed: 102 additions & 103 deletions

File tree

.env.sample

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
export TEAM_ID=$(cs list workspaces | grep $WORKSPACE_ID | awk '{print $2}')
21
export UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install
32
export UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin
43
export UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# python-demo test
22

3-
before running any stage you will need to set up a 'CS_TOKEN' env var containing an Codesphere API key.
4-
53
# open backend api docs
64

75
`/api/docs` or `/api/redoc`

ci.Qa.yml

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,54 @@
11
schemaVersion: v0.2
22
prepare:
33
steps:
4-
- name: install Codesphere cli tool
5-
command: mkdir -p $HOME/.local/bin && wget -qO-
6-
'https://api.github.com/repos/codesphere-cloud/cs-go/releases/latest' |
7-
grep linux_amd64 | grep browser_download_url | sed s/.*https/https/ |
8-
sed s/\".*$// | xargs wget -O $HOME/.local/bin/cs && chmod +x
9-
$HOME/.local/bin/cs
104
- name: install uv standalone version
11-
command: curl -LsSf https://astral.sh/uv/install.sh | env
12-
UV_INSTALL_DIR="$HOME/app" sh && chmod +x $HOME/app/uv
13-
- command: cp -n .env.sample .env
14-
- name: "set ev vars "
15-
command: . .env && cs set-env -w $WORKSPACE_ID -t $TEAM_ID --env-var
16-
UV_PYTHON_INSTALL_DIR=$PWD/.codesphere-internal/.uv-python-install
17-
--env-var UV_PYTHON_BIN_DIR=$PWD/.codesphere-internal/.uv-python-bin
18-
--env-var UV_CACHE_DIR=$PWD/.codesphere-internal/.uv --env-var
19-
UV_PYTHON_CACHE_DIR=$PWD/.codesphere-internal/.uv-python
5+
command: command -v uv >/dev/null 2>&1 || { curl -LsSf https://astral.sh/uv/install.sh
6+
| env UV_INSTALL_DIR="$HOME/app" sh && chmod +x $HOME/app/uv; }
207
- name: install frontend environment
21-
command: . ./env && cd frontend && { [ ! -d ".venv" ] && uv venv; uv sync
22-
--no-dev; }
8+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend
9+
&& { [ ! -d ".venv" ] && UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV venv; UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV sync --no-dev; }
2310
- name: install backend environment
24-
command: . ./env && cd backend && { [ ! -d ".venv" ] && uv venv; uv sync
25-
--no-dev; }
11+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
12+
&& { [ ! -d ".venv" ] && UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV venv; UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV sync --no-dev; }
2613
test:
2714
steps: []
2815
run:
2916
frontend:
3017
steps:
3118
- name: start frontend application
32-
command: ". ./env && cd frontend && uv run streamlit run main.py
33-
--server.headless true --server.address 0.0.0.0 --server.port 3000
34-
--browser.gatherUsageStats false --logger.level info "
19+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend
20+
&& $UV run streamlit run main.py --server.headless true --server.address
21+
0.0.0.0 --server.port 3000 --browser.gatherUsageStats false --logger.level
22+
info
3523
plan: 20
3624
replicas: 1
3725
isPublic: true
3826
network:
3927
path: /
4028
stripPath: false
29+
env:
30+
UV_PYTHON_INSTALL_DIR: /home/user/app/.codesphere-internal/.uv-python-install
31+
UV_PYTHON_BIN_DIR: /home/user/app/.codesphere-internal/.uv-python-bin
32+
UV_CACHE_DIR: /home/user/app/.codesphere-internal/.uv
33+
UV_PYTHON_CACHE_DIR: /home/user/app/.codesphere-internal/.uv-python
4134
backend:
4235
steps:
4336
- name: start backend application
44-
command: . ./env && cd backend && uv run uvicorn app:app --port 3000 --host
45-
0.0.0.0 --workers 2
37+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
38+
&& $UV run uvicorn app:app --port 3000 --host 0.0.0.0 --workers 2
4639
plan: 20
4740
replicas: 1
4841
isPublic: false
42+
env:
43+
UV_PYTHON_INSTALL_DIR: /home/user/app/.codesphere-internal/.uv-python-install
44+
UV_PYTHON_BIN_DIR: /home/user/app/.codesphere-internal/.uv-python-bin
45+
UV_CACHE_DIR: /home/user/app/.codesphere-internal/.uv
46+
UV_PYTHON_CACHE_DIR: /home/user/app/.codesphere-internal/.uv-python
4947
api-docs:
5048
steps:
5149
- name: deploy docs
52-
command: . ./env && cd backend && uv run uvicorn doc:app_docs --host 0.0.0.0
53-
--port 3000 --workers 2
50+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
51+
&& $UV run uvicorn doc:app_docs --host 0.0.0.0 --port 3000 --workers 2
5452
plan: 20
5553
replicas: 1
5654
isPublic: true

ci.dev.yml

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,64 @@
11
schemaVersion: v0.2
22
prepare:
33
steps:
4-
- name: install Codesphere cli tool
5-
command: mkdir -p $HOME/.local/bin && wget -qO-
6-
'https://api.github.com/repos/codesphere-cloud/cs-go/releases/latest' |
7-
grep linux_amd64 | grep browser_download_url | sed s/.*https/https/ |
8-
sed s/\".*$// | xargs wget -O $HOME/.local/bin/cs && chmod +x
9-
$HOME/.local/bin/cs
104
- name: install uv standalone version
11-
command: curl -LsSf https://astral.sh/uv/install.sh | env
12-
UV_INSTALL_DIR="$HOME/app" sh && chmod +x $HOME/app/uv
13-
- name: copy template .env file
14-
command: cp -n .env.sample .env
15-
- name: "set ev vars "
16-
command: . .env && cs set-env -w $WORKSPACE_ID -t $TEAM_ID --env-var
17-
UV_PYTHON_INSTALL_DIR=$PWD/.codesphere-internal/.uv-python-install
18-
--env-var UV_PYTHON_BIN_DIR=$PWD/.codesphere-internal/.uv-python-bin
19-
--env-var UV_CACHE_DIR=$PWD/.codesphere-internal/.uv --env-var
20-
UV_PYTHON_CACHE_DIR=$PWD/.codesphere-internal/.uv-python
5+
command: command -v uv >/dev/null 2>&1 || { curl -LsSf https://astral.sh/uv/install.sh
6+
| env UV_INSTALL_DIR="$HOME/app" sh && chmod +x $HOME/app/uv; }
217
- name: install frontend environment
22-
command: . ./env && cd frontend && { [ ! -d ".venv" ] && uv venv; uv sync; }
8+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend
9+
&& { [ ! -d ".venv" ] && UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV venv; UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV sync; }
2310
- name: install backend environment
24-
command: . ./env && cd backend && { [ ! -d ".venv" ] && uv venv; uv sync; }
11+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
12+
&& { [ ! -d ".venv" ] && UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV venv; UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV sync; }
2513
test:
2614
steps:
2715
- name: test frontend
28-
command: . ./env && cd frontend && uv run pytest
16+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend && $UV run pytest
2917
- name: test backend
30-
command: ". ./env && cd backend && uv run pytest "
18+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend && $UV run pytest
3119
- name: security check frontend
32-
command: '. ./env && cd frontend && uv run bandit -r . -c pyproject.toml
33-
--format=custom --msg-template "{abspath}:{line}: {test_id}[{severity}]:
34-
{msg}" -o bandit-results.txt'
20+
command: 'UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend
21+
&& $UV run bandit -r . -c pyproject.toml --format=custom --msg-template
22+
"{abspath}:{line}: {test_id}[{severity}]: {msg}" -o bandit-results.txt'
3523
- name: security check backend
36-
command: '. ./env && cd backend && uv run bandit -r . -c pyproject.toml
37-
--format=custom --msg-template "{abspath}:{line}: {test_id}[{severity}]:
38-
{msg}" -o bandit-results.txt'
24+
command: 'UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
25+
&& $UV run bandit -r . -c pyproject.toml --format=custom --msg-template
26+
"{abspath}:{line}: {test_id}[{severity}]: {msg}" -o bandit-results.txt'
3927
run:
4028
frontend:
4129
steps:
4230
- name: start frontend application
43-
command: . ./env && cd frontend && uv run streamlit run --server.address 0.0.0.0
44-
--server.port 3000 main.py
31+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend
32+
&& $UV run streamlit run --server.address 0.0.0.0 --server.port 3000 main.py
4533
plan: 20
4634
replicas: 1
4735
isPublic: true
4836
network:
4937
path: /
5038
stripPath: false
39+
env:
40+
UV_PYTHON_INSTALL_DIR: /home/user/app/.codesphere-internal/.uv-python-install
41+
UV_PYTHON_BIN_DIR: /home/user/app/.codesphere-internal/.uv-python-bin
42+
UV_CACHE_DIR: /home/user/app/.codesphere-internal/.uv
43+
UV_PYTHON_CACHE_DIR: /home/user/app/.codesphere-internal/.uv-python
5144
backend:
5245
steps:
5346
- name: start backend application
54-
command: . ./env && cd backend && uv run uvicorn app:app --reload --port 3000
55-
--host 0.0.0.0
47+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
48+
&& $UV run uvicorn app:app --reload --port 3000 --host 0.0.0.0
5649
plan: 20
5750
replicas: 1
5851
isPublic: false
52+
env:
53+
UV_PYTHON_INSTALL_DIR: /home/user/app/.codesphere-internal/.uv-python-install
54+
UV_PYTHON_BIN_DIR: /home/user/app/.codesphere-internal/.uv-python-bin
55+
UV_CACHE_DIR: /home/user/app/.codesphere-internal/.uv
56+
UV_PYTHON_CACHE_DIR: /home/user/app/.codesphere-internal/.uv-python
5957
api-docs:
6058
steps:
6159
- name: deploy docs
62-
command: . ./env && cd backend && uv run uvicorn doc:app_docs --host 0.0.0.0
63-
--port 3000
60+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
61+
&& $UV run uvicorn doc:app_docs --host 0.0.0.0 --port 3000
6462
plan: 20
6563
replicas: 1
6664
isPublic: true

ci.prod.yml

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,54 @@
11
schemaVersion: v0.2
22
prepare:
33
steps:
4-
- name: install Codesphere cli tool
5-
command: mkdir -p $HOME/.local/bin && wget -qO-
6-
'https://api.github.com/repos/codesphere-cloud/cs-go/releases/latest' |
7-
grep linux_amd64 | grep browser_download_url | sed s/.*https/https/ |
8-
sed s/\".*$// | xargs wget -O $HOME/.local/bin/cs && chmod +x
9-
$HOME/.local/bin/cs
104
- name: install uv standalone version
11-
command: nix-env -iA nixpkgs.uv
12-
- name: "set ev vars "
13-
command: . .env && cs set-env -w $WORKSPACE_ID -t $TEAM_ID --env-var
14-
UV_PYTHON_INSTALL_DIR=$PWD/.codesphere-internal/.uv-python-install
15-
--env-var UV_PYTHON_BIN_DIR=$PWD/.codesphere-internal/.uv-python-bin
16-
--env-var UV_CACHE_DIR=$PWD/.codesphere-internal/.uv --env-var
17-
UV_PYTHON_CACHE_DIR=$PWD/.codesphere-internal/.uv-python
5+
command: command -v uv >/dev/null 2>&1 || { curl -LsSf https://astral.sh/uv/install.sh
6+
| env UV_INSTALL_DIR="$HOME/app" sh && chmod +x $HOME/app/uv; }
187
- name: install frontend environment
19-
command: cd frontend && { [ ! -d ".venv" ] && uv venv; uv sync --no-dev; }
8+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend
9+
&& { [ ! -d ".venv" ] && UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV venv; UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV sync --no-dev; }
2010
- name: install backend environment
21-
command: cd backend && { [ ! -d ".venv" ] && uv venv; uv sync --no-dev; }
11+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
12+
&& { [ ! -d ".venv" ] && UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV venv; UV_PYTHON_INSTALL_DIR=/home/user/app/.codesphere-internal/.uv-python-install UV_PYTHON_BIN_DIR=/home/user/app/.codesphere-internal/.uv-python-bin UV_CACHE_DIR=/home/user/app/.codesphere-internal/.uv UV_PYTHON_CACHE_DIR=/home/user/app/.codesphere-internal/.uv-python $UV sync --no-dev; }
2213
test:
2314
steps: []
2415
run:
2516
frontend:
2617
steps:
2718
- name: start frontend application
28-
command: "cd frontend && uv run streamlit run main.py --server.headless true
29-
--server.address 0.0.0.0 --server.port 3000 --browser.gatherUsageStats
30-
false --logger.level info "
19+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd frontend
20+
&& $UV run streamlit run main.py --server.headless true --server.address
21+
0.0.0.0 --server.port 3000 --browser.gatherUsageStats false --logger.level
22+
info
3123
plan: 8
3224
replicas: 1
3325
isPublic: true
3426
network:
3527
path: /
3628
stripPath: false
29+
env:
30+
UV_PYTHON_INSTALL_DIR: /home/user/app/.codesphere-internal/.uv-python-install
31+
UV_PYTHON_BIN_DIR: /home/user/app/.codesphere-internal/.uv-python-bin
32+
UV_CACHE_DIR: /home/user/app/.codesphere-internal/.uv
33+
UV_PYTHON_CACHE_DIR: /home/user/app/.codesphere-internal/.uv-python
3734
backend:
3835
steps:
3936
- name: start backend application
40-
command: cd backend && uv run uvicorn app:app --port 3000 --host 0.0.0.0
41-
--workers 2
37+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
38+
&& $UV run uvicorn app:app --port 3000 --host 0.0.0.0 --workers 2
4239
plan: 8
4340
replicas: 1
4441
isPublic: false
42+
env:
43+
UV_PYTHON_INSTALL_DIR: /home/user/app/.codesphere-internal/.uv-python-install
44+
UV_PYTHON_BIN_DIR: /home/user/app/.codesphere-internal/.uv-python-bin
45+
UV_CACHE_DIR: /home/user/app/.codesphere-internal/.uv
46+
UV_PYTHON_CACHE_DIR: /home/user/app/.codesphere-internal/.uv-python
4547
api-docs:
4648
steps:
4749
- name: deploy docs
48-
command: cd backend && uv run uvicorn doc:app_docs --host 0.0.0.0 --port 3000
49-
--workers 2
50+
command: UV=$(command -v uv 2>/dev/null || echo $HOME/app/uv) && cd backend
51+
&& $UV run uvicorn doc:app_docs --host 0.0.0.0 --port 3000 --workers 2
5052
plan: 8
5153
replicas: 1
5254
isPublic: true

0 commit comments

Comments
 (0)