Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9f70a93

Browse files
Create deploy.yml
1 parent 8fcdc80 commit 9f70a93

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed

.github/workflows/deploy.yml

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
name: CI/CD Build and Deploy PostgreSQL Docker Image
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
environment:
7+
description: 'Environment to deploy (Development/Production)'
8+
required: true
9+
default: 'development'
10+
11+
jobs:
12+
build-push-deploy-postgres:
13+
name: Build, Push, and Deploy PostgreSQL Docker Image
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
# Checkout Postgres Docker repository
18+
- name: Checkout Postgres Repository
19+
uses: actions/checkout@v3
20+
with:
21+
repository: trplgit/postgres
22+
token: ${{ secrets.GITHUB_TOKEN }}
23+
path: postgres
24+
25+
# Set up Docker buildx
26+
- name: Set up Docker
27+
uses: docker/setup-buildx-action@v2
28+
29+
# Log in to Azure Container Registry
30+
- name: Log in to Azure Container Registry
31+
uses: azure/docker-login@v1
32+
with:
33+
login-server: ${{ vars.ACR_NAME }}.azurecr.io
34+
username: ${{ vars.ACR_USERNAME }}
35+
password: ${{ secrets.ACR_PASSWORD }}
36+
37+
# Build and Push PostgreSQL Docker Image
38+
- name: Build and Push PostgreSQL Docker Image
39+
run: |
40+
docker build -f ./postgres/17/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 ./postgres/17/alpine3.21
41+
docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17
42+
43+
# Install OpenVPN
44+
- name: Install OpenVPN
45+
run: sudo apt-get install -y openvpn
46+
47+
# Prepare VPN files
48+
- name: Prepare VPN Files
49+
run: |
50+
echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12
51+
echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key
52+
53+
# Connect to VPN
54+
- name: Connect to VPN
55+
run: |
56+
echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn
57+
echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt
58+
sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon
59+
60+
# Wait for VPN connection
61+
- name: Wait for VPN Connection
62+
run: sleep 15
63+
64+
# Verify VPN connection
65+
- name: Verify VPN Connection
66+
run: |
67+
ifconfig | grep tun || (echo "VPN connection failed" && exit 1)
68+
69+
# Add user to Docker group
70+
- name: Add user to Docker group
71+
run: |
72+
sudo usermod -aG docker $USER
73+
newgrp docker || true
74+
75+
# Create Docker network if not exists
76+
- name: Create Docker Network if not exists
77+
run: |
78+
echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || echo "Network already exists"
79+
80+
# Deploy PostgreSQL Docker container to VM
81+
- name: Deploy PostgreSQL Docker Container to VM
82+
uses: appleboy/[email protected]
83+
with:
84+
host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }}
85+
username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }}
86+
password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}
87+
port: 22
88+
script: |
89+
echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }}
90+
echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17
91+
echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true
92+
echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true
93+
94+
# Run PostgreSQL container
95+
echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=mysecretpassword -p 5433:5433 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17
96+
97+
# Cleanup VPN credentials
98+
- name: Cleanup VPN Credentials
99+
run: |
100+
rm -f vpn-config.ovpn vpn-credentials.txt

0 commit comments

Comments
 (0)