Skip to content

Commit 5e974c2

Browse files
committed
cleaner
1 parent 400ffd4 commit 5e974c2

1 file changed

Lines changed: 61 additions & 38 deletions

File tree

.github/workflows/bica-ci.yml

Lines changed: 61 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,29 @@ env:
1010
IMAGE_NAME: bica-backup
1111
TAG: test
1212

13+
# Docker network
14+
DOCKER_NETWORK: bica-net
15+
16+
# PostgreSQL container related variables
17+
POSTGRES_CONTAINER_NAME: postgres-db
18+
POSTGRES_USER: myuser
19+
POSTGRES_PASSWORD: mypass
20+
POSTGRES_DB: mydatabase
21+
POSTGRES_PORT: 5432
22+
23+
# Database backup related variables
24+
DB_HOST: postgres-db
25+
DB_PORT: 5432
26+
DB_USER: myuser
27+
DB_PASSWORD: mypass
28+
DB_NAME: mydatabase
29+
30+
# Backup settings
31+
BACKUP_DIR: /mnt/backups
32+
RETENTION_DAYS: 7
33+
ENCRYPT: true
34+
ENCRYPT_PASS: MySecretKey
35+
1336
jobs:
1437
build:
1538
name: Build Docker Image
@@ -47,34 +70,34 @@ jobs:
4770
- name: Load docker image
4871
run: docker load -i image.tar
4972

50-
- name: Create Docker network
51-
run: docker network create bica-net || true
73+
- name: Create Docker network (if not exists)
74+
run: docker network create $DOCKER_NETWORK || true
5275

5376
- name: Start PostgreSQL container
5477
run: |
55-
docker run -d --name postgres-db --network bica-net \
56-
-e POSTGRES_USER=myuser \
57-
-e POSTGRES_PASSWORD=mypass \
58-
-e POSTGRES_DB=mydatabase \
78+
docker run -d --name $POSTGRES_CONTAINER_NAME --network $DOCKER_NETWORK \
79+
-e POSTGRES_USER=$POSTGRES_USER \
80+
-e POSTGRES_PASSWORD=$POSTGRES_PASSWORD \
81+
-e POSTGRES_DB=$POSTGRES_DB \
5982
postgres:15
6083
61-
- name: Wait for Postgres to be ready
84+
- name: Wait for PostgreSQL to be ready
6285
run: |
6386
for i in {1..30}; do
64-
docker run --rm --network bica-net postgres:15 \
65-
bash -c "PGPASSWORD=mypass pg_isready -h postgres-db -p 5432 -U myuser" && echo "Postgres is ready" && exit 0
66-
echo "Waiting for Postgres... attempt $i"
87+
docker run --rm --network $DOCKER_NETWORK postgres:15 \
88+
bash -c "PGPASSWORD=$POSTGRES_PASSWORD pg_isready -h $POSTGRES_CONTAINER_NAME -p $POSTGRES_PORT -U $POSTGRES_USER" && echo "PostgreSQL is ready" && exit 0
89+
echo "Waiting for PostgreSQL... attempt $i"
6790
sleep 2
6891
done
69-
echo "Postgres did not become ready in time"
92+
echo "PostgreSQL did not become ready in time"
7093
exit 1
7194
7295
- name: Populate database with sample data
7396
run: |
74-
docker run --rm --network bica-net \
75-
-e PGPASSWORD=mypass \
97+
docker run --rm --network $DOCKER_NETWORK \
98+
-e PGPASSWORD=$POSTGRES_PASSWORD \
7699
postgres:15 \
77-
psql -h postgres-db -U myuser -d mydatabase -c "
100+
psql -h $POSTGRES_CONTAINER_NAME -U $POSTGRES_USER -d $POSTGRES_DB -c "
78101
CREATE TABLE IF NOT EXISTS users (
79102
id SERIAL PRIMARY KEY,
80103
username TEXT NOT NULL UNIQUE,
@@ -122,40 +145,40 @@ jobs:
122145

123146
- name: Run encrypted backup
124147
run: |
125-
docker run --rm --network bica-net \
148+
docker run --rm --network $DOCKER_NETWORK \
126149
--entrypoint /backup.sh \
127-
-e DB_HOST=postgres-db \
128-
-e DB_PORT=5432 \
129-
-e DB_USER=myuser \
130-
-e DB_PASSWORD=mypass \
131-
-e DB_NAME=mydatabase \
132-
-e BACKUP_DIR=/mnt/backups \
133-
-e RETENTION_DAYS=7 \
134-
-e ENCRYPT=true \
135-
-e ENCRYPT_PASS=MySecretKey \
136-
-v ${{ github.workspace }}/backups:/mnt/backups \
150+
-e DB_HOST=$DB_HOST \
151+
-e DB_PORT=$DB_PORT \
152+
-e DB_USER=$DB_USER \
153+
-e DB_PASSWORD=$DB_PASSWORD \
154+
-e DB_NAME=$DB_NAME \
155+
-e BACKUP_DIR=$BACKUP_DIR \
156+
-e RETENTION_DAYS=$RETENTION_DAYS \
157+
-e ENCRYPT=$ENCRYPT \
158+
-e ENCRYPT_PASS=$ENCRYPT_PASS \
159+
-v ${{ github.workspace }}/backups:$BACKUP_DIR \
137160
$IMAGE_NAME:$TAG
138161
139-
- name: List backups
162+
- name: List backup files
140163
run: ls -lh ./backups
141164

142-
- name: Upload encrypted backup
165+
- name: Upload encrypted backup artifact
143166
uses: actions/upload-artifact@v4
144167
with:
145168
name: encrypted-backup
146169
path: ./backups/*.enc
147170

148-
- name: Cleanup
171+
- name: Cleanup Docker resources
149172
run: |
150-
docker rm -f postgres-db || true
151-
docker network rm bica-net || true
173+
docker rm -f $POSTGRES_CONTAINER_NAME || true
174+
docker network rm $DOCKER_NETWORK || true
152175
153176
decrypt-and-show:
154177
name: Decrypt backup and show pg_dump
155178
runs-on: ubuntu-latest
156179
needs: backup-encrypted
157180
steps:
158-
- name: Prepare folder
181+
- name: Prepare local backup folder
159182
run: mkdir -p ./backups
160183

161184
- name: Download encrypted backup artifact
@@ -164,20 +187,20 @@ jobs:
164187
name: encrypted-backup
165188
path: ./backups
166189

167-
- name: Decrypt backup
190+
- name: Decrypt backup files
168191
run: |
169-
ENCRYPT_PASS=MySecretKey
192+
ENCRYPT_PASS=$ENCRYPT_PASS
170193
for f in ./backups/*.enc; do
171194
openssl enc -aes-256-cbc -d -pbkdf2 -salt -in "$f" -out "${f%.enc}.tar.gz" -k "$ENCRYPT_PASS"
172195
done
173196
174-
- name: Extract decrypted tarball and show pg_dump
197+
- name: Extract decrypted tarball and display first 40 lines of pg_dump
175198
run: |
176199
tar -xzf ./backups/*.tar.gz -C ./backups
177200
head -40 ./backups/db_backup.sql
178201
179202
docker-publish:
180-
name: Push to Docker Hub
203+
name: Push Docker image to Docker Hub
181204
runs-on: ubuntu-latest
182205
needs: [decrypt-and-show]
183206
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
@@ -187,16 +210,16 @@ jobs:
187210
- name: Setup Docker Buildx
188211
uses: docker/setup-buildx-action@v3
189212

190-
- name: Build image
213+
- name: Build Docker image
191214
run: docker build -t $IMAGE_NAME:$TAG .
192215

193-
- name: Docker Login
216+
- name: Docker login
194217
uses: docker/login-action@v3
195218
with:
196219
username: ${{ secrets.DOCKER_USERNAME }}
197220
password: ${{ secrets.DOCKER_PASSWORD }}
198221

199-
- name: Push image
222+
- name: Push image to Docker Hub
200223
run: |
201224
docker tag $IMAGE_NAME:$TAG ${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:latest
202225
docker push ${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:latest

0 commit comments

Comments
 (0)