-
Notifications
You must be signed in to change notification settings - Fork 10
130 lines (110 loc) · 3.73 KB
/
ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Test and Deploy
# Triggers on pushes to main, dev and tags.
on:
workflow_dispatch:
push:
branches:
- main
- dev
tags:
- 'v*'
paths:
# Only run test and docker publish if some code have changed
- 'pyproject.toml'
- 'infrastructure/aws/**'
- 'titiler/**'
- '.pre-commit-config.yaml'
# Run tests on pull requests.
pull_request:
env:
LATEST_PY_VERSION: '3.10'
permissions:
id-token: write # This is required for requesting the JWT
contents: read # This is required for actions/checkout
jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "0.5.*"
enable-cache: true
- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}
- name: Install dependencies
run: |
uv sync --all-extras
- name: run pre-commit
if: ${{ matrix.python-version == env.LATEST_PY_VERSION }}
run: |
uv run pre-commit run --all-files
- name: Run tests
run: uv run pytest
deploy:
needs: [tests]
runs-on: ubuntu-latest
env:
UV_PYTHON: 3.12
defaults:
run:
working-directory: infrastructure/aws
steps:
- uses: actions/checkout@v4
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v2
with:
role-to-assume: arn:aws:iam::444055461661:role/github-actions-role-eodc
role-session-name: samplerolesession
aws-region: us-west-2
- name: Set up node
uses: actions/setup-node@v2
with:
node-version: 18
- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "0.5.*"
enable-cache: true
- name: Install dependencies
run: |
uv sync --only-group deployment
uv run npm install
- name: CDK Synth
run: uv run --only-group deployment npm run cdk -- synth
- name: Check Asset Sizes
run: |
MAX_SIZE_BYTES=262144000 # 262 MB in bytes
for dir in cdk.out/asset.*; do
if [ -d "$dir" ]; then
size=$(du -sb "$dir" | cut -f1)
if [ "$size" -gt $MAX_SIZE_BYTES ]; then
echo "Directory $dir exceeds 262 MB with size $size bytes (max: $MAX_SIZE_BYTES bytes)."
exit 1 # Exit with failure if any asset directory is too large
fi
echo "Asset directory $dir size: $size bytes"
fi
done
echo "All asset directories are within size limits."
# Build and deploy to the development environment whenever there is a push to main or dev
- name: Build & Deploy Development
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev'
run: uv run npm run cdk -- deploy titiler-xarray-development --require-approval never
env:
TITILER_XARRAY_PYTHONWARNINGS: ignore
TITILER_XARRAY_DEBUG: True
STACK_ALARM_EMAIL: ${{ secrets.ALARM_EMAIL }}
STACK_STAGE: development
# Build and deploy to production deployment whenever there a new tag is pushed
- name: Build & Deploy Production
if: startsWith(github.ref, 'refs/tags/v')
run: uv run npm run cdk -- deploy titiler-xarray-production --require-approval never
env:
TITILER_XARRAY_PYTHONWARNINGS: ignore
TITILER_XARRAY_DEBUG: True
STACK_ALARM_EMAIL: ${{ secrets.ALARM_EMAIL }}
STACK_STAGE: production