-
Notifications
You must be signed in to change notification settings - Fork 1
136 lines (115 loc) · 4.78 KB
/
deploy.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
131
132
133
134
135
136
name: Deploy
# on:
# workflow_dispatch:
on:
workflow_run:
workflows: ["Test"]
types:
- completed
jobs:
deploy-base-image:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Log in to GHCR
run: echo "${{ secrets.REPO_ADMIN_GHCR_TOKEN }}" | docker login ghcr.io -u "${{ secrets.REPO_ADMIN_GH_USERNAME }}" --password-stdin
- name: Get base image tag and version
run: |
BASE_VERSION=$(cat ./assets/.BASE_VERSION)
echo "BASE_VERSION=$BASE_VERSION" >> $GITHUB_ENV
BASE_IMG=ghcr.io/biosimulators/bio-check-base
echo "BASE_IMG=$BASE_IMG" >> $GITHUB_ENV
echo "Base Version: $BASE_VERSION"
echo "Base Tag: $BASE_IMG"
- name: Create gcloud config
run: |
echo "$BIOSIMULATIONS_GCLOUD_CONFIG" > ./assets/configs/.biosimulations.json
env:
BIOSIMULATIONS_GCLOUD_CONFIG: ${{ secrets.BIO_JSON_CONTENT }}
- name: Build base image
run: |
docker build --no-cache -f ./Dockerfile-base -t ${{ env.BASE_IMG }}:${{ env.BASE_VERSION }} .
- name: Deploy new base version to GHCR
run: |
docker push ${{ env.BASE_IMG }}:${{ env.BASE_VERSION }}
- name: Deploy new latest base version
run: |
docker tag ${{ env.BASE_IMG }}:${{ env.BASE_VERSION }} ${{ env.BASE_IMG }}:latest
docker push ${{ env.BASE_IMG }}:latest
get-microservice-versions:
needs: deploy-base-image
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Step 5: Extract API container version
- name: Extract API container version
id: extract_api_version
run: |
API_VERSION=$(python3 .github/parse_container_version.py api)
echo "API_VERSION=$API_VERSION" >> $GITHUB_ENV
echo "API Version: $API_VERSION"
# Step 6: Extract worker container version
- name: Extract worker container version
id: extract_worker_version
run: |
WORKER_VERSION=$(python3 .github/parse_container_version.py worker)
echo "WORKER_VERSION=$WORKER_VERSION" >> $GITHUB_ENV
echo "WORKER Version: $WORKER_VERSION"
# Step 7: Debug output of extracted versions
- name: Debug output of extracted versions
run: |
echo "API_VERSION=${{ env.API_VERSION }}"
echo "WORKER_VERSION=${{ env.WORKER_VERSION }}"
build-microservice-images:
needs: get-microservice-versions
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r assets/configs/requirements.github.txt
- name: Install Docker Compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version # Check if Docker Compose is installed correctly
- name: Build Docker containers with Docker Compose
run: docker-compose build
- name: Authorize push script
run: chmod +x ./assets/scripts/push_image.sh
- name: Deploy API microservice container to GHCR
run: |
rm api/spec/openapi_3_1_0_generated.yaml
python3 api/openapi_spec.py
sudo rm -r api/__pycache__
./assets/scripts/push_image.sh api ${{ env.API_VERSION }}
# STABLE CONTENT:
# - run: |
# rm compose_api/spec/openapi_3_1_0_generated.yaml
# python3 compose_api/openapi_spec.py
# sudo rm -r compose_api/__pycache__
# ./assets/scripts/push_image.sh compose_api ${{ env.API_VERSION }}
env:
REPO_ADMIN_GH_USERNAME: ${{ secrets.REPO_ADMIN_GH_USERNAME }}
REPO_ADMIN_GHCR_TOKEN: ${{ secrets.REPO_ADMIN_GHCR_TOKEN }}
- name: Deploy worker microservice container to GHCR
run: |
sudo rm -r compose_api/__pycache__
./assets/scripts/push_image.sh worker ${{ env.WORKER_VERSION }}
# STABLE CONTENT:
# run: |
# sudo rm -r compose_api/__pycache__
# ./assets/scripts/push_image.sh compose_worker ${{ env.WORKER_VERSION }}
env:
REPO_ADMIN_GH_USERNAME: ${{ secrets.REPO_ADMIN_GH_USERNAME }}
REPO_ADMIN_GHCR_TOKEN: ${{ secrets.REPO_ADMIN_GHCR_TOKEN }}