-
Notifications
You must be signed in to change notification settings - Fork 0
141 lines (129 loc) · 5.04 KB
/
Copy pathdeploy_optimizer_test.yml
File metadata and controls
141 lines (129 loc) · 5.04 KB
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
131
132
133
134
135
136
137
138
139
140
141
name: Deploy Optimizer to NWN ME
run-name: Deploy Optimizer ${{ github.event.workflow_run.head_branch }} to NWN ME
on:
workflow_run:
workflows:
- Publish Container Image
types:
- completed
env:
IMAGE_NAME: ghcr.io/project-omotes/omotes-optimizer
jobs:
deploy-test:
name: Deploy to NWN ME TEST
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' }}
environment: nwn-me-test
permissions:
actions: read
packages: read
outputs:
image-tag: ${{ steps.read-tag.outputs.image-tag }}
steps:
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Download deployment metadata
uses: actions/download-artifact@v4
with:
name: deployment-metadata
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Resolve published image tag
id: read-tag
run: |
tag="$(cat image_tag.txt)"
if [[ -z "${tag}" ]]; then
echo "Downloaded image tag artifact is empty."
exit 1
fi
echo "IMAGE_TAG=${tag}" >> "${GITHUB_ENV}"
echo "image-tag=${tag}" >> "${GITHUB_OUTPUT}"
- name: Pull container image
run: docker pull "${IMAGE_NAME}:${IMAGE_TAG}"
- name: Register Prefect deployment in test
run: |
docker run --rm \
-e LOG_LEVEL=INFO \
-e ORCHESTRATOR_API_URL=http://omotes-orchestrator:9200 \
-e PREFECT_API_URL \
-e PREFECT_API_AUTH_STRING \
-e PREFECT_API_URL_FOR_WORKER=http://omotes-prefect-server:4200/api \
-e PREFECT_WORK_POOL_NAME=docker-worker \
-e OPTIMIZER_WORKER_VERSION="${IMAGE_TAG}" \
-e ESDL_OUTPUT_PROFILES_TYPE=POSTGRESQL \
-e PREFECT_FLOW_MAX_CONCURRENT_RUNS=4 \
-e PREFECT_GUROBI_MAX_CONCURRENT_RUNS=1 \
-e PREFECT_FLOW_TIMEOUT_SECONDS=172800 \
-e DB_HOSTNAME=omotes_postgres \
-e DB_PORT=6432 \
-e DB_USERNAME=omotes_timeseries_rw \
-e DB_PASSWORD \
-e PG_DB_TIMESERIES=omotes_timeseries \
-e MINIO_HOST=omotes-minio \
-e MINIO_PORT=9000 \
-e MINIO_EXTERNAL_URL \
-e MINIO_ACCESS_KEY=omotesadmin \
-e MINIO_SECRET \
-e PREFECT_DOCKER_WORKER_NETWORK=omotes \
"${IMAGE_NAME}:${IMAGE_TAG}" \
/src/.venv/bin/python -m omotes_optimizer_worker.prefect_deploy_flow
env:
PREFECT_API_URL: ${{ vars.PREFECT_API_URL }}
PREFECT_API_AUTH_STRING: ${{ secrets.PREFECT_API_AUTH_STRING }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
MINIO_EXTERNAL_URL: ${{ vars.MINIO_EXTERNAL_URL }}
MINIO_SECRET: ${{ secrets.MINIO_SECRET }}
deploy-production:
name: Deploy to NWN ME PROD
runs-on: ubuntu-latest
needs: deploy-test
environment: nwn-me-production
permissions:
packages: read
env:
IMAGE_TAG: ${{ needs.deploy-test.outputs.image-tag }}
steps:
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull published container image
run: docker pull "${IMAGE_NAME}:${IMAGE_TAG}"
- name: Register Prefect deployment in production
run: |
docker run --rm \
-e LOG_LEVEL=INFO \
-e ORCHESTRATOR_API_URL=http://omotes-orchestrator:9200 \
-e PREFECT_API_URL \
-e PREFECT_API_AUTH_STRING \
-e PREFECT_API_URL_FOR_WORKER=http://omotes-prefect-server:4200/api \
-e PREFECT_WORK_POOL_NAME=docker-worker \
-e OPTIMIZER_WORKER_VERSION="${IMAGE_TAG}" \
-e ESDL_OUTPUT_PROFILES_TYPE=POSTGRESQL \
-e PREFECT_FLOW_MAX_CONCURRENT_RUNS=4 \
-e PREFECT_GUROBI_MAX_CONCURRENT_RUNS=1 \
-e PREFECT_FLOW_TIMEOUT_SECONDS=172800 \
-e DB_HOSTNAME=omotes_postgres \
-e DB_PORT=6432 \
-e DB_USERNAME=omotes_timeseries_rw \
-e DB_PASSWORD \
-e MINIO_HOST=omotes-minio \
-e MINIO_PORT=9000 \
-e MINIO_EXTERNAL_URL \
-e MINIO_ACCESS_KEY=omotesadmin \
-e MINIO_SECRET \
-e PREFECT_DOCKER_WORKER_NETWORK=omotes \
"${IMAGE_NAME}:${IMAGE_TAG}" \
/src/.venv/bin/python -m omotes_optimizer_worker.prefect_deploy_flow
env:
PREFECT_API_URL: ${{ vars.PREFECT_API_URL }}
PREFECT_API_AUTH_STRING: ${{ secrets.PREFECT_API_AUTH_STRING }}
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
MINIO_EXTERNAL_URL: ${{ vars.MINIO_EXTERNAL_URL }}
MINIO_SECRET: ${{ secrets.MINIO_SECRET }}