From b7927a24e422109a23433af1271c59adf5ae18c5 Mon Sep 17 00:00:00 2001 From: vinaykhosla-regtech Date: Tue, 14 Jan 2025 12:24:16 +0530 Subject: [PATCH 01/56] Updated README file --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 67993281d..61f0065d3 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +Disconnect this branch original Github repo. -- Vinay Khosla + About this Repo ====== From b305e57905173c0b83e049762bb0f07e453680e6 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 18:49:18 +0530 Subject: [PATCH 02/56] Create deploy.yml --- .github/workflows/deploy.yml | 113 +++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..bd90c947b --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,113 @@ +name: CI/CD for Odoo and PostgreSQL + +on: + workflow_dispatch: # Manual trigger + inputs: + environment: + description: 'Environment to deploy (Development/Production)' + required: true + default: 'development' + postgres_version: + description: 'PostgreSQL Version' + required: true + default: '17' + odoo_version: + description: 'Odoo Version' + required: true + default: '18' + +jobs: + build-and-push: + name: Build and Push Docker Images for Odoo and PostgreSQL + runs-on: ubuntu-latest + + steps: + - name: Checkout Odoo Repository + uses: actions/checkout@v3 + with: + repository: odoo-docker # Replace with your Odoo repository name + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Checkout PostgreSQL Repository + uses: actions/checkout@v3 + with: + repository: postgres # Replace with your PostgreSQL repository name + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Log in to Azure Container Registry + uses: azure/docker-login@v1 + with: + login-server: ${{ vars.ACR_NAME }}.azurecr.io + username: ${{ vars.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + + - name: Build and Push PostgreSQL Docker Image + run: | + docker build -f postgres/${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} postgres/ + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + + - name: Build and Push Odoo Docker Image + run: | + docker build -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} odoo-docker/ + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + + deploy: + name: Deploy to Linux VM + runs-on: ubuntu-latest + needs: build-and-push + + steps: + - name: Install OpenVPN + run: sudo apt-get install -y openvpn + + - name: Prepare VPN Files + run: | + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + + - name: Connect to VPN + run: | + echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn + echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt + sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon + + - name: Wait for VPN Connection + run: sleep 15 + + - name: Verify VPN Connection + run: | + ifconfig | grep tun || (echo "VPN connection failed" && exit 1) + + - name: Deploy PostgreSQL Docker Container to VM + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} + username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} + password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} + port: 22 + script: | + # Create network for both Odoo and PostgreSQL + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} -p 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + + - name: Deploy Odoo Docker Container to VM + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} + username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} + password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} + port: 22 + script: | + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + + - name: Cleanup VPN Credentials + run: | + rm -f vpn-config.ovpn vpn-credentials.txt From 7e3e1a6c9a0fce6f63e37b14c7c1507fb9e9e761 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 19:33:43 +0530 Subject: [PATCH 03/56] Update deploy.yml --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bd90c947b..e118893ad 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,13 +25,13 @@ jobs: - name: Checkout Odoo Repository uses: actions/checkout@v3 with: - repository: odoo-docker # Replace with your Odoo repository name + repository: trplgit/odoo-docker # Replace with your Odoo repository name token: ${{ secrets.GITHUB_TOKEN }} - name: Checkout PostgreSQL Repository uses: actions/checkout@v3 with: - repository: postgres # Replace with your PostgreSQL repository name + repository: trplgit/postgres # Replace with your PostgreSQL repository name token: ${{ secrets.GITHUB_TOKEN }} - name: Log in to Azure Container Registry From 6ff2f8b459af0583e7364772a75eaf357b9d28c2 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 20:10:23 +0530 Subject: [PATCH 04/56] Update deploy.yml --- .github/workflows/deploy.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e118893ad..cd320f229 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,15 +25,20 @@ jobs: - name: Checkout Odoo Repository uses: actions/checkout@v3 with: - repository: trplgit/odoo-docker # Replace with your Odoo repository name + repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - name: Checkout PostgreSQL Repository uses: actions/checkout@v3 with: - repository: trplgit/postgres # Replace with your PostgreSQL repository name + repository: trplgit/postgres token: ${{ secrets.GITHUB_TOKEN }} + - name: Set up Docker + uses: docker/setup-buildx-action@v2 + with: + version: latest + - name: Log in to Azure Container Registry uses: azure/docker-login@v1 with: From 201f6939c8f6ef9c63315e20dd90311930f7d69c Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 20:28:29 +0530 Subject: [PATCH 05/56] Update deploy.yml --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cd320f229..5abb705a8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -48,12 +48,12 @@ jobs: - name: Build and Push PostgreSQL Docker Image run: | - docker build -f postgres/${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} postgres/ + docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} postgres/ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - name: Build and Push Odoo Docker Image run: | - docker build -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} odoo-docker/ + docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} odoo-docker/ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} deploy: From 17fe8063502e1b0091666e315f4af3e970be57f5 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 20:31:25 +0530 Subject: [PATCH 06/56] Update deploy.yml --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5abb705a8..c417a605d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -48,12 +48,12 @@ jobs: - name: Build and Push PostgreSQL Docker Image run: | - docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} postgres/ + docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - name: Build and Push Odoo Docker Image run: | - docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} odoo-docker/ + docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} deploy: From 3136776608c75db073e6ff4df8ed8c0f57bb0426 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 20:48:12 +0530 Subject: [PATCH 07/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c417a605d..389fde524 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,7 +14,7 @@ on: odoo_version: description: 'Odoo Version' required: true - default: '18' + default: '18.0' jobs: build-and-push: From 5abd55cd7342f3f17a3bf84ee6661ace08d6b3d1 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 21:15:03 +0530 Subject: [PATCH 08/56] Update deploy.yml --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 389fde524..4cdbb9fd3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,8 +53,8 @@ jobs: - name: Build and Push Odoo Docker Image run: | - docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} ./ - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./ + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: name: Deploy to Linux VM From 8e2280b8d7ec8f8d8f5792144f187b78a5d995e7 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Tue, 14 Jan 2025 21:27:41 +0530 Subject: [PATCH 09/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4cdbb9fd3..ee36da494 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,7 +53,7 @@ jobs: - name: Build and Push Odoo Docker Image run: | - docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./ + docker build -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From a9037eacc73b394ec1d862034b6f1fdb6a3709da Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 09:35:05 +0530 Subject: [PATCH 10/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ee36da494..c72cabf4a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,7 +53,7 @@ jobs: - name: Build and Push Odoo Docker Image run: | - docker build -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./ + docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 54e899b5657823fd64cacb9388a4d9cfb7bff85a Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 09:43:26 +0530 Subject: [PATCH 11/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c72cabf4a..86466f9e8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,7 +53,7 @@ jobs: - name: Build and Push Odoo Docker Image run: | - docker build -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + docker build -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 01401e0959ff0063d718c6f2297c161cfdd9173f Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 12:51:00 +0530 Subject: [PATCH 12/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 86466f9e8..629b290e0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,7 +53,7 @@ jobs: - name: Build and Push Odoo Docker Image run: | - docker build -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + docker build --no-cache -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 735df8c4228510924afe7b6b5005804bf9c9d098 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 13:44:15 +0530 Subject: [PATCH 13/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 629b290e0..93e6a7ec4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,7 +53,7 @@ jobs: - name: Build and Push Odoo Docker Image run: | - docker build --no-cache -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + docker build --no-cache -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 98f29b4462112aaa599f128a894fae77483e77bc Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 13:57:59 +0530 Subject: [PATCH 14/56] Update deploy.yml --- .github/workflows/deploy.yml | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 93e6a7ec4..00e9e3403 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -27,7 +27,7 @@ jobs: with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - + - name: Checkout PostgreSQL Repository uses: actions/checkout@v3 with: @@ -46,14 +46,36 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} + # Check directory structure for troubleshooting + - name: Check Odoo Docker directory structure + run: | + echo "Checking Odoo Docker directory structure" + ls -R odoo-docker + + - name: Check PostgreSQL Docker directory structure + run: | + echo "Checking PostgreSQL Docker directory structure" + ls -R . + - name: Build and Push PostgreSQL Docker Image run: | - docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ + echo "Building PostgreSQL Docker Image" + docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + - name: Check if Odoo Dockerfile exists + run: | + if [ ! -f "odoo-docker/${{ inputs.odoo_version }}/Dockerfile" ]; then + echo "Odoo Dockerfile not found!" + exit 1 + else + echo "Odoo Dockerfile found!" + fi + - name: Build and Push Odoo Docker Image run: | - docker build --no-cache -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + echo "Building Odoo Docker Image" + docker build --no-cache -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . --progress=plain docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From a4339d90ed2643eeb412702c94405c414fedb435 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 15:02:11 +0530 Subject: [PATCH 15/56] Update deploy.yml --- .github/workflows/deploy.yml | 42 +++++++++++++----------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 00e9e3403..bc2898d35 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,23 +22,27 @@ jobs: runs-on: ubuntu-latest steps: - - name: Checkout Odoo Repository + # Checkout Odoo Docker Repository + - name: Checkout Odoo Docker Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - + + # Checkout PostgreSQL Repository - name: Checkout PostgreSQL Repository uses: actions/checkout@v3 with: repository: trplgit/postgres token: ${{ secrets.GITHUB_TOKEN }} + # Set up Docker Buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 with: version: latest + # Log in to Azure Container Registry - name: Log in to Azure Container Registry uses: azure/docker-login@v1 with: @@ -46,36 +50,20 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # Check directory structure for troubleshooting - - name: Check Odoo Docker directory structure - run: | - echo "Checking Odoo Docker directory structure" - ls -R odoo-docker - - - name: Check PostgreSQL Docker directory structure - run: | - echo "Checking PostgreSQL Docker directory structure" - ls -R . - + # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image run: | - echo "Building PostgreSQL Docker Image" docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - - name: Check if Odoo Dockerfile exists - run: | - if [ ! -f "odoo-docker/${{ inputs.odoo_version }}/Dockerfile" ]; then - echo "Odoo Dockerfile not found!" - exit 1 - else - echo "Odoo Dockerfile found!" - fi - + # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - echo "Building Odoo Docker Image" - docker build --no-cache -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . --progress=plain + # Ensure we're in the correct directory for the Odoo Dockerfile + echo "Checking Odoo Docker directory structure" + ls -R ./odoo-docker/${{ inputs.odoo_version }} # List contents of Odoo version folder + + docker build --no-cache -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -130,10 +118,10 @@ jobs: port: 22 script: | echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} - name: Cleanup VPN Credentials run: | From 7791fe1b95c3ec7c01659e538592c75e5aa2dcc2 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 15:22:08 +0530 Subject: [PATCH 16/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bc2898d35..441634509 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -63,7 +63,7 @@ jobs: echo "Checking Odoo Docker directory structure" ls -R ./odoo-docker/${{ inputs.odoo_version }} # List contents of Odoo version folder - docker build --no-cache -f odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + docker build --no-cache -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} 18.0 docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 14765674340cc9afe62aca83e3239260b1b9d822 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 15:37:15 +0530 Subject: [PATCH 17/56] Update deploy.yml --- .github/workflows/deploy.yml | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 441634509..4a7bbebb2 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,27 +22,23 @@ jobs: runs-on: ubuntu-latest steps: - # Checkout Odoo Docker Repository - - name: Checkout Odoo Docker Repository + - name: Checkout Odoo Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - # Checkout PostgreSQL Repository - name: Checkout PostgreSQL Repository uses: actions/checkout@v3 with: repository: trplgit/postgres token: ${{ secrets.GITHUB_TOKEN }} - # Set up Docker Buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 with: version: latest - # Log in to Azure Container Registry - name: Log in to Azure Container Registry uses: azure/docker-login@v1 with: @@ -50,20 +46,14 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image run: | - docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ + docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Ensure we're in the correct directory for the Odoo Dockerfile - echo "Checking Odoo Docker directory structure" - ls -R ./odoo-docker/${{ inputs.odoo_version }} # List contents of Odoo version folder - - docker build --no-cache -f ${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} 18.0 + docker build -f 18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 18.0 docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -118,10 +108,10 @@ jobs: port: 22 script: | echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} - name: Cleanup VPN Credentials run: | From 4a64e81f89217651d694c30f52a3413c3bafc840 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 15:54:03 +0530 Subject: [PATCH 18/56] Update deploy.yml --- .github/workflows/deploy.yml | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4a7bbebb2..85c213237 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,23 +22,27 @@ jobs: runs-on: ubuntu-latest steps: + # Checkout Odoo Docker repository - name: Checkout Odoo Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} + # Checkout PostgreSQL repository - name: Checkout PostgreSQL Repository uses: actions/checkout@v3 with: repository: trplgit/postgres token: ${{ secrets.GITHUB_TOKEN }} + # Set up Docker buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 with: version: latest + # Log in to Azure Container Registry - name: Log in to Azure Container Registry uses: azure/docker-login@v1 with: @@ -46,14 +50,31 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} + # List the repository structure to verify if 18.0 directory exists + - name: List repository directory structure + run: | + echo "Listing the directory structure of the repository" + ls -R . + + # List the contents inside the 18.0 folder to ensure it's available + - name: Check 18.0 directory + run: | + echo "Checking contents inside the 18.0 folder" + ls -R ./18.0 + + # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image run: | - docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ + docker build -f ${inputs.postgres_version}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - docker build -f 18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 18.0 + # Ensure the 18.0 directory is present before building the image + ls -R ./18.0 # Debugging step to check if the folder exists + + docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -62,27 +83,33 @@ jobs: needs: build-and-push steps: + # Install OpenVPN - name: Install OpenVPN run: sudo apt-get install -y openvpn + # Prepare VPN files - name: Prepare VPN Files run: | echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + # Connect to VPN - name: Connect to VPN run: | echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon + # Wait for VPN connection - name: Wait for VPN Connection run: sleep 15 + # Verify VPN connection - name: Verify VPN Connection run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) + # Deploy PostgreSQL Docker container to VM - name: Deploy PostgreSQL Docker Container to VM uses: appleboy/ssh-action@v0.1.6 with: @@ -91,7 +118,6 @@ jobs: password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} port: 22 script: | - # Create network for both Odoo and PostgreSQL echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} @@ -99,6 +125,7 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} -p 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + # Deploy Odoo Docker container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 with: @@ -113,6 +140,7 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + # Cleanup VPN credentials - name: Cleanup VPN Credentials run: | rm -f vpn-config.ovpn vpn-credentials.txt From 1b7b98a611b6675bd3dae967335c2459e39c7b1b Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:06:31 +0530 Subject: [PATCH 19/56] Update deploy.yml --- .github/workflows/deploy.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 85c213237..5cb84ffc4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -50,17 +50,17 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # List the repository structure to verify if 18.0 directory exists - - name: List repository directory structure + # Verify the repository structure (list all files) + - name: List repository structure run: | echo "Listing the directory structure of the repository" - ls -R . + ls -R . # List all files and directories recursively - # List the contents inside the 18.0 folder to ensure it's available + # Check the contents of the 18.0 folder - name: Check 18.0 directory run: | echo "Checking contents inside the 18.0 folder" - ls -R ./18.0 + ls -R ./18.0 # List files inside the 18.0 folder # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image @@ -71,10 +71,10 @@ jobs: # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Ensure the 18.0 directory is present before building the image + # Ensure the 18.0 directory exists and the Dockerfile is accessible ls -R ./18.0 # Debugging step to check if the folder exists - docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + docker build --no-cache -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 14c8f0490f87ffd38a3636f3425bae5674b60dfd Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:13:41 +0530 Subject: [PATCH 20/56] Update deploy.yml --- .github/workflows/deploy.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5cb84ffc4..9137f207e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -56,11 +56,11 @@ jobs: echo "Listing the directory structure of the repository" ls -R . # List all files and directories recursively - # Check the contents of the 18.0 folder - - name: Check 18.0 directory + # Check the contents of the 17.0 folder (if 18.0 is missing) + - name: Check 17.0 directory run: | - echo "Checking contents inside the 18.0 folder" - ls -R ./18.0 # List files inside the 18.0 folder + echo "Checking contents inside the 17.0 folder" + ls -R ./17 # List files inside the 17 folder # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image @@ -71,10 +71,10 @@ jobs: # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Ensure the 18.0 directory exists and the Dockerfile is accessible - ls -R ./18.0 # Debugging step to check if the folder exists + # Ensure the 17.0 directory exists and the Dockerfile is accessible + ls -R ./17 # Check if the 17.0 directory exists - docker build --no-cache -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + docker build --no-cache -f ./17/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 105ba88aa737008106ee0affcd02875c9ec6a8ef Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:18:02 +0530 Subject: [PATCH 21/56] Update deploy.yml --- .github/workflows/deploy.yml | 66 ++++++++++-------------------------- 1 file changed, 18 insertions(+), 48 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9137f207e..9cae8e19c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo and PostgreSQL +name: CI/CD for Odoo Docker on: workflow_dispatch: # Manual trigger @@ -7,10 +7,6 @@ on: description: 'Environment to deploy (Development/Production)' required: true default: 'development' - postgres_version: - description: 'PostgreSQL Version' - required: true - default: '17' odoo_version: description: 'Odoo Version' required: true @@ -18,7 +14,7 @@ on: jobs: build-and-push: - name: Build and Push Docker Images for Odoo and PostgreSQL + name: Build and Push Docker Image for Odoo runs-on: ubuntu-latest steps: @@ -29,13 +25,6 @@ jobs: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - # Checkout PostgreSQL repository - - name: Checkout PostgreSQL Repository - uses: actions/checkout@v3 - with: - repository: trplgit/postgres - token: ${{ secrets.GITHUB_TOKEN }} - # Set up Docker buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 @@ -50,31 +39,28 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # Verify the repository structure (list all files) - - name: List repository structure + # Verify Odoo Docker repository directory structure + - name: List Odoo Docker repository structure run: | - echo "Listing the directory structure of the repository" - ls -R . # List all files and directories recursively + echo "Listing the directory structure of the Odoo Docker repository" + ls -R ./ # List all files and directories recursively after checkout - # Check the contents of the 17.0 folder (if 18.0 is missing) - - name: Check 17.0 directory + # Check if 18.0 folder exists in Odoo Docker repository + - name: Check 18.0 directory inside Odoo Docker repository run: | - echo "Checking contents inside the 17.0 folder" - ls -R ./17 # List files inside the 17 folder - - # Build and Push PostgreSQL Docker Image - - name: Build and Push PostgreSQL Docker Image - run: | - docker build -f ${inputs.postgres_version}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + echo "Checking contents inside the 18.0 folder in Odoo Docker repository" + ls -R ./18.0 # List contents inside the 18.0 folder # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Ensure the 17.0 directory exists and the Dockerfile is accessible - ls -R ./17 # Check if the 17.0 directory exists + # Ensure the 18.0 directory exists and the Dockerfile is accessible + ls -R ./18.0 # Check if the 18.0 directory exists - docker build --no-cache -f ./17/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + # Build Docker image for Odoo from the 18.0 directory + docker build --no-cache -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + + # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -109,22 +95,6 @@ jobs: run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - # Deploy PostgreSQL Docker container to VM - - name: Deploy PostgreSQL Docker Container to VM - uses: appleboy/ssh-action@v0.1.6 - with: - host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} - username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} - password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} - port: 22 - script: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} -p 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - # Deploy Odoo Docker container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 @@ -135,10 +105,10 @@ jobs: port: 22 script: | echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} # Cleanup VPN credentials - name: Cleanup VPN Credentials From bbd6a6e8ba5b4287f855f20c58f7a2345c0bc5de Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:24:28 +0530 Subject: [PATCH 22/56] Update deploy.yml --- .github/workflows/deploy.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9cae8e19c..7163b821f 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -58,7 +58,8 @@ jobs: ls -R ./18.0 # Check if the 18.0 directory exists # Build Docker image for Odoo from the 18.0 directory - docker build --no-cache -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} . + docker build -f ./18.0/Dockerfile -t my-odoo-image ./ # Ensure the context is pointing to the correct root directory + # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} From 4e1cf6a559002dfc56f1382b9b997a4953ae94be Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:27:59 +0530 Subject: [PATCH 23/56] Update deploy.yml From 9af2cddde5443cec94ee741be2e1a46f6dad93c7 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:31:04 +0530 Subject: [PATCH 24/56] Update deploy.yml --- .github/workflows/deploy.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7163b821f..6a4c894de 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,7 +1,7 @@ name: CI/CD for Odoo Docker on: - workflow_dispatch: # Manual trigger + workflow_dispatch: # Manual trigger inputs: environment: description: 'Environment to deploy (Development/Production)' @@ -58,9 +58,8 @@ jobs: ls -R ./18.0 # Check if the 18.0 directory exists # Build Docker image for Odoo from the 18.0 directory - docker build -f ./18.0/Dockerfile -t my-odoo-image ./ # Ensure the context is pointing to the correct root directory + docker build -f ./18.0/Dockerfile -t my-odoo-image ./ # Ensure the context is pointing to the correct root directory - # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} From 6f638a49e177cead91227456fef1d1ec0eb31601 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:38:39 +0530 Subject: [PATCH 25/56] Update deploy.yml --- .github/workflows/deploy.yml | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 6a4c894de..542f90be6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,7 +1,7 @@ -name: CI/CD for Odoo Docker +name: CI/CD for Odoo Docker on: - workflow_dispatch: # Manual trigger + workflow_dispatch: # Manual trigger inputs: environment: description: 'Environment to deploy (Development/Production)' @@ -51,6 +51,16 @@ jobs: echo "Checking contents inside the 18.0 folder in Odoo Docker repository" ls -R ./18.0 # List contents inside the 18.0 folder + # Debugging: List files before Docker build + - name: List files before Docker build + run: | + echo "Listing files in the repository before build" + ls -R ./ + + # Debugging: Check Docker version + - name: Check Docker version + run: docker --version + # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | @@ -59,7 +69,7 @@ jobs: # Build Docker image for Odoo from the 18.0 directory docker build -f ./18.0/Dockerfile -t my-odoo-image ./ # Ensure the context is pointing to the correct root directory - + # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} From 13f71f624e031b67fa455b9eb57b9e24571be8c3 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:44:09 +0530 Subject: [PATCH 26/56] Update deploy.yml --- .github/workflows/deploy.yml | 29 +++-------------------------- 1 file changed, 3 insertions(+), 26 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 542f90be6..4d5df32b8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo Docker +name: CI/CD for Odoo Docker on: workflow_dispatch: # Manual trigger @@ -51,16 +51,6 @@ jobs: echo "Checking contents inside the 18.0 folder in Odoo Docker repository" ls -R ./18.0 # List contents inside the 18.0 folder - # Debugging: List files before Docker build - - name: List files before Docker build - run: | - echo "Listing files in the repository before build" - ls -R ./ - - # Debugging: Check Docker version - - name: Check Docker version - run: docker --version - # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | @@ -68,7 +58,7 @@ jobs: ls -R ./18.0 # Check if the 18.0 directory exists # Build Docker image for Odoo from the 18.0 directory - docker build -f ./18.0/Dockerfile -t my-odoo-image ./ # Ensure the context is pointing to the correct root directory + docker build -f ./18.0/Dockerfile -t my-odoo-image . # Use the root directory (.) as the build context # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} @@ -110,17 +100,4 @@ jobs: uses: appleboy/ssh-action@v0.1.6 with: host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} - username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} - password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} - port: 22 - script: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} - - # Cleanup VPN credentials - - name: Cleanup VPN Credentials - run: | - rm -f vpn-config.ovpn vpn-credentials.txt + username: ${{ vars.LINUX_VM_USERNAME_DEVELO From c7df1cdc4b55541fd0a92c29e8fa55ddde9d1e02 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:50:10 +0530 Subject: [PATCH 27/56] Update deploy.yml --- .github/workflows/deploy.yml | 71 ++++++------------------------------ 1 file changed, 12 insertions(+), 59 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4d5df32b8..cf5f76b0a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,7 +1,7 @@ -name: CI/CD for Odoo Docker +name: Check Docker Build for Odoo on: - workflow_dispatch: # Manual trigger + workflow_dispatch: # Manual trigger inputs: environment: description: 'Environment to deploy (Development/Production)' @@ -13,8 +13,8 @@ on: default: '18.0' jobs: - build-and-push: - name: Build and Push Docker Image for Odoo + build: + name: Build Docker Image for Odoo runs-on: ubuntu-latest steps: @@ -31,14 +31,6 @@ jobs: with: version: latest - # Log in to Azure Container Registry - - name: Log in to Azure Container Registry - uses: azure/docker-login@v1 - with: - login-server: ${{ vars.ACR_NAME }}.azurecr.io - username: ${{ vars.ACR_USERNAME }} - password: ${{ secrets.ACR_PASSWORD }} - # Verify Odoo Docker repository directory structure - name: List Odoo Docker repository structure run: | @@ -51,53 +43,14 @@ jobs: echo "Checking contents inside the 18.0 folder in Odoo Docker repository" ls -R ./18.0 # List contents inside the 18.0 folder - # Build and Push Odoo Docker Image - - name: Build and Push Odoo Docker Image + # Build Docker image for Odoo + - name: Build Docker image run: | - # Ensure the 18.0 directory exists and the Dockerfile is accessible - ls -R ./18.0 # Check if the 18.0 directory exists - - # Build Docker image for Odoo from the 18.0 directory - docker build -f ./18.0/Dockerfile -t my-odoo-image . # Use the root directory (.) as the build context - - # Push Docker image to Azure Container Registry - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} - - deploy: - name: Deploy to Linux VM - runs-on: ubuntu-latest - needs: build-and-push + echo "Building Docker image from ./18.0/Dockerfile" + docker build -f ./18.0/Dockerfile -t my-odoo-image . - steps: - # Install OpenVPN - - name: Install OpenVPN - run: sudo apt-get install -y openvpn - - # Prepare VPN files - - name: Prepare VPN Files + # Verify Docker image is built + - name: Verify Docker image run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key - - # Connect to VPN - - name: Connect to VPN - run: | - echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn - echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt - sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon - - # Wait for VPN connection - - name: Wait for VPN Connection - run: sleep 15 - - # Verify VPN connection - - name: Verify VPN Connection - run: | - ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - - # Deploy Odoo Docker container to VM - - name: Deploy Odoo Docker Container to VM - uses: appleboy/ssh-action@v0.1.6 - with: - host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} - username: ${{ vars.LINUX_VM_USERNAME_DEVELO + echo "Listing Docker images" + docker images | grep my-odoo-image From ff02fafdbe312a3ed057f3054942f9d6d0be5fe5 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 16:59:10 +0530 Subject: [PATCH 28/56] Update deploy.yml --- .github/workflows/deploy.yml | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index cf5f76b0a..b92dbc131 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: Check Docker Build for Odoo +name: CI/CD for Odoo Docker on: workflow_dispatch: # Manual trigger @@ -13,8 +13,8 @@ on: default: '18.0' jobs: - build: - name: Build Docker Image for Odoo + build-and-push: + name: Build and Push Docker Image for Odoo runs-on: ubuntu-latest steps: @@ -22,15 +22,8 @@ jobs: - name: Checkout Odoo Repository uses: actions/checkout@v3 with: - repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - # Set up Docker buildx - - name: Set up Docker - uses: docker/setup-buildx-action@v2 - with: - version: latest - # Verify Odoo Docker repository directory structure - name: List Odoo Docker repository structure run: | @@ -43,14 +36,14 @@ jobs: echo "Checking contents inside the 18.0 folder in Odoo Docker repository" ls -R ./18.0 # List contents inside the 18.0 folder - # Build Docker image for Odoo - - name: Build Docker image - run: | - echo "Building Docker image from ./18.0/Dockerfile" - docker build -f ./18.0/Dockerfile -t my-odoo-image . - - # Verify Docker image is built - - name: Verify Docker image + # Build Docker image for Odoo from 18.0 directory + - name: Build Docker image for Odoo from 18.0 directory run: | - echo "Listing Docker images" - docker images | grep my-odoo-image + # Ensure the 18.0 directory exists and the Dockerfile is accessible + ls -R ./18.0 # Check if the 18.0 directory exists + + # Build Docker image for Odoo from the 18.0 directory + docker build -f ./18.0/Dockerfile -t my-odoo-image ./ # Build the Docker image with the right context (root directory) + + # Push Docker image to Azure Container Registry + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} From 21525a05fbab33a1291edd7fe72e5cf18ae5a253 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 17:11:50 +0530 Subject: [PATCH 29/56] Update deploy.yml --- .github/workflows/deploy.yml | 40 +++++++++++++++++------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b92dbc131..19da8a6a5 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,17 +1,3 @@ -name: CI/CD for Odoo Docker - -on: - workflow_dispatch: # Manual trigger - inputs: - environment: - description: 'Environment to deploy (Development/Production)' - required: true - default: 'development' - odoo_version: - description: 'Odoo Version' - required: true - default: '18.0' - jobs: build-and-push: name: Build and Push Docker Image for Odoo @@ -22,8 +8,23 @@ jobs: - name: Checkout Odoo Repository uses: actions/checkout@v3 with: + repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} + # Set up Docker buildx + - name: Set up Docker + uses: docker/setup-buildx-action@v2 + with: + version: latest + + # Log in to Azure Container Registry + - name: Log in to Azure Container Registry + uses: azure/docker-login@v1 + with: + login-server: ${{ vars.ACR_NAME }}.azurecr.io + username: ${{ vars.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + # Verify Odoo Docker repository directory structure - name: List Odoo Docker repository structure run: | @@ -36,14 +37,11 @@ jobs: echo "Checking contents inside the 18.0 folder in Odoo Docker repository" ls -R ./18.0 # List contents inside the 18.0 folder - # Build Docker image for Odoo from 18.0 directory - - name: Build Docker image for Odoo from 18.0 directory + # Build and Push Odoo Docker Image + - name: Build and Push Odoo Docker Image run: | - # Ensure the 18.0 directory exists and the Dockerfile is accessible - ls -R ./18.0 # Check if the 18.0 directory exists + # Ensure the Docker context is set to the 18.0 directory + docker build -f ./18.0/Dockerfile -t my-odoo-image ./18.0 # Set context to the 18.0 folder - # Build Docker image for Odoo from the 18.0 directory - docker build -f ./18.0/Dockerfile -t my-odoo-image ./ # Build the Docker image with the right context (root directory) - # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} From 80c8736474db54084f2d8a91f313afcc44cb41be Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 17:12:54 +0530 Subject: [PATCH 30/56] Update deploy.yml --- .github/workflows/deploy.yml | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 19da8a6a5..313470207 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,6 +3,14 @@ jobs: name: Build and Push Docker Image for Odoo runs-on: ubuntu-latest + steps: + # Checkout Odoo Docker repository + - name: Checkout Odoo Repository + uses: actions/checkout@v3jobs: + build-and-push: + name: Build and Push Docker Image for Odoo + runs-on: ubuntu-latest + steps: # Checkout Odoo Docker repository - name: Checkout Odoo Repository @@ -45,3 +53,42 @@ jobs: # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + + with: + repository: trplgit/odoo-docker + token: ${{ secrets.GITHUB_TOKEN }} + + # Set up Docker buildx + - name: Set up Docker + uses: docker/setup-buildx-action@v2 + with: + version: latest + + # Log in to Azure Container Registry + - name: Log in to Azure Container Registry + uses: azure/docker-login@v1 + with: + login-server: ${{ vars.ACR_NAME }}.azurecr.io + username: ${{ vars.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + + # Verify Odoo Docker repository directory structure + - name: List Odoo Docker repository structure + run: | + echo "Listing the directory structure of the Odoo Docker repository" + ls -R ./ # List all files and directories recursively after checkout + + # Check if 18.0 folder exists in Odoo Docker repository + - name: Check 18.0 directory inside Odoo Docker repository + run: | + echo "Checking contents inside the 18.0 folder in Odoo Docker repository" + ls -R ./18.0 # List contents inside the 18.0 folder + + # Build and Push Odoo Docker Image + - name: Build and Push Odoo Docker Image + run: | + # Ensure the Docker context is set to the 18.0 directory + docker build -f ./18.0/Dockerfile -t my-odoo-image ./18.0 # Set context to the 18.0 folder + + # Push Docker image to Azure Container Registry + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} From 477142f1ec4c4021bb9507473eb1e1a99d5e20ad Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 17:14:33 +0530 Subject: [PATCH 31/56] Update deploy.yml --- .github/workflows/deploy.yml | 95 +++++++++++++++++++++--------------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 313470207..932712044 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,12 +1,18 @@ -jobs: - build-and-push: - name: Build and Push Docker Image for Odoo - runs-on: ubuntu-latest +name: CI/CD for Odoo Docker - steps: - # Checkout Odoo Docker repository - - name: Checkout Odoo Repository - uses: actions/checkout@v3jobs: +on: + workflow_dispatch: # Manual trigger + inputs: + environment: + description: 'Environment to deploy (Development/Production)' + required: true + default: 'development' + odoo_version: + description: 'Odoo Version' + required: true + default: '18.0' + +jobs: build-and-push: name: Build and Push Docker Image for Odoo runs-on: ubuntu-latest @@ -54,41 +60,54 @@ jobs: # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} - with: - repository: trplgit/odoo-docker - token: ${{ secrets.GITHUB_TOKEN }} + deploy: + name: Deploy to Linux VM + runs-on: ubuntu-latest + needs: build-and-push - # Set up Docker buildx - - name: Set up Docker - uses: docker/setup-buildx-action@v2 - with: - version: latest + steps: + # Install OpenVPN + - name: Install OpenVPN + run: sudo apt-get install -y openvpn - # Log in to Azure Container Registry - - name: Log in to Azure Container Registry - uses: azure/docker-login@v1 - with: - login-server: ${{ vars.ACR_NAME }}.azurecr.io - username: ${{ vars.ACR_USERNAME }} - password: ${{ secrets.ACR_PASSWORD }} + # Prepare VPN files + - name: Prepare VPN Files + run: | + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key - # Verify Odoo Docker repository directory structure - - name: List Odoo Docker repository structure + # Connect to VPN + - name: Connect to VPN run: | - echo "Listing the directory structure of the Odoo Docker repository" - ls -R ./ # List all files and directories recursively after checkout + echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn + echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt + sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon - # Check if 18.0 folder exists in Odoo Docker repository - - name: Check 18.0 directory inside Odoo Docker repository + # Wait for VPN connection + - name: Wait for VPN Connection + run: sleep 15 + + # Verify VPN connection + - name: Verify VPN Connection run: | - echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 # List contents inside the 18.0 folder + ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - # Build and Push Odoo Docker Image - - name: Build and Push Odoo Docker Image + # Deploy Odoo Docker container to VM + - name: Deploy Odoo Docker Container to VM + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} + username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} + password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} + port: 22 + script: | + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + + # Cleanup VPN credentials + - name: Cleanup VPN Credentials run: | - # Ensure the Docker context is set to the 18.0 directory - docker build -f ./18.0/Dockerfile -t my-odoo-image ./18.0 # Set context to the 18.0 folder - - # Push Docker image to Azure Container Registry - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + rm -f vpn-config.ovpn vpn-credentials.txt From e5e6803b65442d1aafe705ebc6004e780ce371a5 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 17:24:56 +0530 Subject: [PATCH 32/56] Update deploy.yml --- .github/workflows/deploy.yml | 65 ++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 932712044..197580458 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo Docker +name: CI/CD for Odoo and PostgreSQL on: workflow_dispatch: # Manual trigger @@ -7,6 +7,10 @@ on: description: 'Environment to deploy (Development/Production)' required: true default: 'development' + postgres_version: + description: 'PostgreSQL Version' + required: true + default: '17' odoo_version: description: 'Odoo Version' required: true @@ -14,18 +18,25 @@ on: jobs: build-and-push: - name: Build and Push Docker Image for Odoo + name: Build and Push Docker Images for Odoo and PostgreSQL runs-on: ubuntu-latest steps: - # Checkout Odoo Docker repository - - name: Checkout Odoo Repository + # Checkout Odoo Docker Repository + - name: Checkout Odoo Docker Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - # Set up Docker buildx + # Checkout PostgreSQL Repository + - name: Checkout PostgreSQL Repository + uses: actions/checkout@v3 + with: + repository: trplgit/postgres + token: ${{ secrets.GITHUB_TOKEN }} + + # Set up Docker Buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 with: @@ -39,25 +50,20 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # Verify Odoo Docker repository directory structure - - name: List Odoo Docker repository structure - run: | - echo "Listing the directory structure of the Odoo Docker repository" - ls -R ./ # List all files and directories recursively after checkout - - # Check if 18.0 folder exists in Odoo Docker repository - - name: Check 18.0 directory inside Odoo Docker repository + # Build and Push PostgreSQL Docker Image + - name: Build and Push PostgreSQL Docker Image run: | - echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 # List contents inside the 18.0 folder + docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Ensure the Docker context is set to the 18.0 directory - docker build -f ./18.0/Dockerfile -t my-odoo-image ./18.0 # Set context to the 18.0 folder + # Ensure we're in the correct directory for the Odoo Dockerfile + echo "Checking Odoo Docker directory structure" + ls -R ./odoo-docker/${{ inputs.odoo_version }} # List contents of Odoo version folder - # Push Docker image to Azure Container Registry + docker build --no-cache -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -66,33 +72,43 @@ jobs: needs: build-and-push steps: - # Install OpenVPN - name: Install OpenVPN run: sudo apt-get install -y openvpn - # Prepare VPN files - name: Prepare VPN Files run: | echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key - # Connect to VPN - name: Connect to VPN run: | echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon - # Wait for VPN connection - name: Wait for VPN Connection run: sleep 15 - # Verify VPN connection - name: Verify VPN Connection run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - # Deploy Odoo Docker container to VM + - name: Deploy PostgreSQL Docker Container to VM + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} + username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} + password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} + port: 22 + script: | + # Create network for both Odoo and PostgreSQL + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} -p 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 with: @@ -107,7 +123,6 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} - # Cleanup VPN credentials - name: Cleanup VPN Credentials run: | rm -f vpn-config.ovpn vpn-credentials.txt From 59e2ee260fbc21928291fb6711cfda03d946c18f Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 17:42:31 +0530 Subject: [PATCH 33/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 197580458..459d7c1f6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -61,7 +61,7 @@ jobs: run: | # Ensure we're in the correct directory for the Odoo Dockerfile echo "Checking Odoo Docker directory structure" - ls -R ./odoo-docker/${{ inputs.odoo_version }} # List contents of Odoo version folder + ls -R ./${{ inputs.odoo_version }} # List contents of Odoo version folder docker build --no-cache -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} From 79a7bb25239fea5c1a5de2aed98937b2b826baee Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 17:56:49 +0530 Subject: [PATCH 34/56] Update deploy.yml --- .github/workflows/deploy.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 459d7c1f6..36bd3a431 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,7 +53,7 @@ jobs: # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image run: | - docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ + docker build -f ./postgres/${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./postgres docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} # Build and Push Odoo Docker Image @@ -61,9 +61,12 @@ jobs: run: | # Ensure we're in the correct directory for the Odoo Dockerfile echo "Checking Odoo Docker directory structure" - ls -R ./${{ inputs.odoo_version }} # List contents of Odoo version folder + ls -R ./18.0 # List contents of Odoo version folder - docker build --no-cache -f ./${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 + # Build the Odoo Docker image + docker build --no-cache -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 + + # Push the Odoo Docker image to the registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -72,6 +75,7 @@ jobs: needs: build-and-push steps: + # Install OpenVPN - name: Install OpenVPN run: sudo apt-get install -y openvpn @@ -80,19 +84,23 @@ jobs: echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + # Connect to VPN - name: Connect to VPN run: | echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon + # Wait for VPN connection - name: Wait for VPN Connection run: sleep 15 + # Verify VPN connection - name: Verify VPN Connection run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) + # Deploy PostgreSQL Docker Container to VM - name: Deploy PostgreSQL Docker Container to VM uses: appleboy/ssh-action@v0.1.6 with: @@ -109,6 +117,7 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} -p 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + # Deploy Odoo Docker Container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 with: From e7d083eb50560a9d021c583be4c4be7f4b102668 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 18:00:37 +0530 Subject: [PATCH 35/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 36bd3a431..bf085ed5a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -53,7 +53,7 @@ jobs: # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image run: | - docker build -f ./postgres/${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./postgres + docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} # Build and Push Odoo Docker Image From 871e1a08419b85cd60d6b22518330f9c08a06adf Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 18:16:32 +0530 Subject: [PATCH 36/56] Update deploy.yml --- .github/workflows/deploy.yml | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bf085ed5a..335f8f9fc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo and PostgreSQL +name: CI/CD for Odoo and PostgreSQL on: workflow_dispatch: # Manual trigger @@ -23,7 +23,7 @@ jobs: steps: # Checkout Odoo Docker Repository - - name: Checkout Odoo Docker Repository + - name: Checkout Odoo Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker @@ -50,10 +50,22 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} + # Verify Odoo Docker repository directory structure + - name: List Odoo Docker repository structure + run: | + echo "Listing the directory structure of the Odoo Docker repository" + ls -R ./ # List all files and directories recursively after checkout + + # Check if 18.0 folder exists in Odoo Docker repository + - name: Check 18.0 directory inside Odoo Docker repository + run: | + echo "Checking contents inside the 18.0 folder in Odoo Docker repository" + ls -R ./18.0 # List contents inside the 18.0 folder if it exists + # Build and Push PostgreSQL Docker Image - name: Build and Push PostgreSQL Docker Image run: | - docker build -f ${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./ + docker build -f ./postgres/${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./postgres docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} # Build and Push Odoo Docker Image @@ -61,12 +73,10 @@ jobs: run: | # Ensure we're in the correct directory for the Odoo Dockerfile echo "Checking Odoo Docker directory structure" - ls -R ./18.0 # List contents of Odoo version folder - - # Build the Odoo Docker image + ls -R ./18.0 # List contents of the 18.0 folder in the Odoo repository + + # Build and Push Odoo Docker Image from the correct context docker build --no-cache -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 - - # Push the Odoo Docker image to the registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -79,6 +89,7 @@ jobs: - name: Install OpenVPN run: sudo apt-get install -y openvpn + # Prepare VPN files - name: Prepare VPN Files run: | echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 @@ -100,7 +111,7 @@ jobs: run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - # Deploy PostgreSQL Docker Container to VM + # Deploy PostgreSQL Docker container to VM - name: Deploy PostgreSQL Docker Container to VM uses: appleboy/ssh-action@v0.1.6 with: @@ -109,7 +120,6 @@ jobs: password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} port: 22 script: | - # Create network for both Odoo and PostgreSQL echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} @@ -117,7 +127,7 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} -p 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - # Deploy Odoo Docker Container to VM + # Deploy Odoo Docker container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 with: @@ -132,6 +142,7 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + # Cleanup VPN credentials - name: Cleanup VPN Credentials run: | rm -f vpn-config.ovpn vpn-credentials.txt From 2dfae5da5b30d7ddf98bd269a9f054bd5cf90820 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 18:22:55 +0530 Subject: [PATCH 37/56] Update deploy.yml --- .github/workflows/deploy.yml | 50 ++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 335f8f9fc..99a2ce326 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo and PostgreSQL +name: CI/CD for Odoo and PostgreSQL Docker on: workflow_dispatch: # Manual trigger @@ -23,20 +23,20 @@ jobs: steps: # Checkout Odoo Docker Repository - - name: Checkout Odoo Repository + - name: Checkout Odoo Docker Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - # Checkout PostgreSQL Repository + # Checkout PostgreSQL Docker Repository - name: Checkout PostgreSQL Repository uses: actions/checkout@v3 with: repository: trplgit/postgres token: ${{ secrets.GITHUB_TOKEN }} - # Set up Docker Buildx + # Set up Docker buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 with: @@ -50,35 +50,42 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # Verify Odoo Docker repository directory structure + # List Odoo repository structure to check for version directory - name: List Odoo Docker repository structure run: | - echo "Listing the directory structure of the Odoo Docker repository" - ls -R ./ # List all files and directories recursively after checkout + echo "Listing Odoo Docker repository structure" + ls -R ./ # List all files and directories recursively # Check if 18.0 folder exists in Odoo Docker repository - - name: Check 18.0 directory inside Odoo Docker repository + - name: Check Odoo 18.0 directory run: | echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 # List contents inside the 18.0 folder if it exists - - # Build and Push PostgreSQL Docker Image - - name: Build and Push PostgreSQL Docker Image - run: | - docker build -f ./postgres/${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./postgres - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + ls -R ./18.0 || echo "Directory 18.0 does not exist" # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Ensure we're in the correct directory for the Odoo Dockerfile - echo "Checking Odoo Docker directory structure" - ls -R ./18.0 # List contents of the 18.0 folder in the Odoo repository - - # Build and Push Odoo Docker Image from the correct context - docker build --no-cache -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 + docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + # List PostgreSQL repository structure to check for version directory + - name: List PostgreSQL Docker repository structure + run: | + echo "Listing PostgreSQL Docker repository structure" + ls -R ./ # List all files and directories recursively + + # Check if PostgreSQL version folder exists + - name: Check PostgreSQL version directory + run: | + echo "Checking contents inside the version folder for PostgreSQL" + ls -R ./${{ inputs.postgres_version }} || echo "Directory for PostgreSQL version does not exist" + + # Build and Push PostgreSQL Docker Image + - name: Build and Push PostgreSQL Docker Image + run: | + docker build -f ./${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./${{ inputs.postgres_version }} + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} + deploy: name: Deploy to Linux VM runs-on: ubuntu-latest @@ -120,7 +127,6 @@ jobs: password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} port: 22 script: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true From 018022430d75420cc01997efc4a643db21dc523c Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 18:36:24 +0530 Subject: [PATCH 38/56] Update deploy.yml --- .github/workflows/deploy.yml | 67 +++++++----------------------------- 1 file changed, 13 insertions(+), 54 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 99a2ce326..808949c4a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo and PostgreSQL Docker +name: CI/CD for Odoo Docker on: workflow_dispatch: # Manual trigger @@ -7,10 +7,6 @@ on: description: 'Environment to deploy (Development/Production)' required: true default: 'development' - postgres_version: - description: 'PostgreSQL Version' - required: true - default: '17' odoo_version: description: 'Odoo Version' required: true @@ -18,24 +14,17 @@ on: jobs: build-and-push: - name: Build and Push Docker Images for Odoo and PostgreSQL + name: Build and Push Docker Image for Odoo runs-on: ubuntu-latest steps: - # Checkout Odoo Docker Repository - - name: Checkout Odoo Docker Repository + # Checkout Odoo Docker repository + - name: Checkout Odoo Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} - # Checkout PostgreSQL Docker Repository - - name: Checkout PostgreSQL Repository - uses: actions/checkout@v3 - with: - repository: trplgit/postgres - token: ${{ secrets.GITHUB_TOKEN }} - # Set up Docker buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 @@ -50,42 +39,27 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # List Odoo repository structure to check for version directory + # Verify Odoo Docker repository directory structure - name: List Odoo Docker repository structure run: | - echo "Listing Odoo Docker repository structure" - ls -R ./ # List all files and directories recursively + echo "Listing the directory structure of the Odoo Docker repository" + ls -R ./ # List all files and directories recursively after checkout # Check if 18.0 folder exists in Odoo Docker repository - - name: Check Odoo 18.0 directory + - name: Check 18.0 directory inside Odoo Docker repository run: | echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 || echo "Directory 18.0 does not exist" + ls -R ./18.0 # List contents inside the 18.0 folder # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 + # Ensure the Docker context is set to the 18.0 directory + + docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 + # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} - # List PostgreSQL repository structure to check for version directory - - name: List PostgreSQL Docker repository structure - run: | - echo "Listing PostgreSQL Docker repository structure" - ls -R ./ # List all files and directories recursively - - # Check if PostgreSQL version folder exists - - name: Check PostgreSQL version directory - run: | - echo "Checking contents inside the version folder for PostgreSQL" - ls -R ./${{ inputs.postgres_version }} || echo "Directory for PostgreSQL version does not exist" - - # Build and Push PostgreSQL Docker Image - - name: Build and Push PostgreSQL Docker Image - run: | - docker build -f ./${{ inputs.postgres_version }}/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} ./${{ inputs.postgres_version }} - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - deploy: name: Deploy to Linux VM runs-on: ubuntu-latest @@ -118,21 +92,6 @@ jobs: run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - # Deploy PostgreSQL Docker container to VM - - name: Deploy PostgreSQL Docker Container to VM - uses: appleboy/ssh-action@v0.1.6 - with: - host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} - username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} - password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} - port: 22 - script: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name postgres-container --network=odoo-postgres-network -e POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} -p 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/postgres:${{ inputs.postgres_version }} - # Deploy Odoo Docker container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 From f0f29432987a2555f88ee49241fa6176dc30ef82 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 18:46:15 +0530 Subject: [PATCH 39/56] Update deploy.yml --- .github/workflows/deploy.yml | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 808949c4a..ef6e95b0e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,7 +1,7 @@ name: CI/CD for Odoo Docker on: - workflow_dispatch: # Manual trigger + workflow_dispatch: # Manual trigger inputs: environment: description: 'Environment to deploy (Development/Production)' @@ -45,19 +45,25 @@ jobs: echo "Listing the directory structure of the Odoo Docker repository" ls -R ./ # List all files and directories recursively after checkout - # Check if 18.0 folder exists in Odoo Docker repository + # Check if 18.0 folder exists - name: Check 18.0 directory inside Odoo Docker repository run: | echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 # List contents inside the 18.0 folder + ls -R ./18.0 || echo "Directory 18.0 does not exist" - # Build and Push Odoo Docker Image - - name: Build and Push Odoo Docker Image + # Build the Docker image and tag it correctly + - name: Build Docker Image + run: | + docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 + + # Debugging: List local Docker images + - name: List Local Docker Images + run: | + docker images + + # Push Docker image to Azure Container Registry + - name: Push Docker Image run: | - # Ensure the Docker context is set to the 18.0 directory - - docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 - # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: From 9ed2d9d625b163fb7ceeaf91cbfc381bc5394737 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Wed, 15 Jan 2025 19:30:33 +0530 Subject: [PATCH 40/56] Update deploy.yml --- .github/workflows/deploy.yml | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ef6e95b0e..06b47df09 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,7 +1,7 @@ name: CI/CD for Odoo Docker on: - workflow_dispatch: # Manual trigger + workflow_dispatch: # Manual trigger inputs: environment: description: 'Environment to deploy (Development/Production)' @@ -45,25 +45,18 @@ jobs: echo "Listing the directory structure of the Odoo Docker repository" ls -R ./ # List all files and directories recursively after checkout - # Check if 18.0 folder exists + # Check if 18.0 folder exists in Odoo Docker repository - name: Check 18.0 directory inside Odoo Docker repository run: | echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 || echo "Directory 18.0 does not exist" + ls -R ./18.0 # List contents inside the 18.0 folder - # Build the Docker image and tag it correctly - - name: Build Docker Image - run: | - docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} ./18.0 - - # Debugging: List local Docker images - - name: List Local Docker Images - run: | - docker images - - # Push Docker image to Azure Container Registry - - name: Push Docker Image + # Build and Push Odoo Docker Image + - name: Build and Push Odoo Docker Image run: | + # Ensure the Docker context is set to the 18.0 directory + docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 + # Push Docker image to Azure Container Registry docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} deploy: @@ -98,6 +91,11 @@ jobs: run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) + # Ensure Docker Network Exists + - name: Ensure Docker Network Exists + run: | + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network inspect odoo-postgres-network > /dev/null 2>&1 || sudo -S docker network create odoo-postgres-network + # Deploy Odoo Docker container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 From df050db2efdbfa49c6812a591b22bf4543869650 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 10:16:09 +0530 Subject: [PATCH 41/56] Update deploy.yml --- .github/workflows/deploy.yml | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 06b47df09..bda5b9b48 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -54,10 +54,11 @@ jobs: # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Ensure the Docker context is set to the 18.0 directory + # Build the Docker image with the appropriate tag docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 - # Push Docker image to Azure Container Registry - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + + # Push Docker image to Azure Container Registry with the correct tag + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 deploy: name: Deploy to Linux VM @@ -72,8 +73,8 @@ jobs: # Prepare VPN files - name: Prepare VPN Files run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key # Connect to VPN - name: Connect to VPN @@ -91,11 +92,6 @@ jobs: run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - # Ensure Docker Network Exists - - name: Ensure Docker Network Exists - run: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network inspect odoo-postgres-network > /dev/null 2>&1 || sudo -S docker network create odoo-postgres-network - # Deploy Odoo Docker container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 @@ -106,12 +102,10 @@ jobs: port: 22 script: | echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-docker:${{ inputs.odoo_version }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 # Cleanup VPN credentials - - name: Cleanup VPN Credentials - run: | - rm -f vpn-config.ovpn vpn-credentials.txt + - name: C From fa6def79c3b1042a8350f1c9a3d55f3d8df4d657 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 10:20:11 +0530 Subject: [PATCH 42/56] Update deploy.yml --- .github/workflows/deploy.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index bda5b9b48..a59b02559 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -73,8 +73,8 @@ jobs: # Prepare VPN files - name: Prepare VPN Files run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key # Connect to VPN - name: Connect to VPN @@ -108,4 +108,6 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 # Cleanup VPN credentials - - name: C + - name: Cleanup VPN Credentials + run: | + rm -f vpn-config.ovpn vpn-credentials.txt From 783d4fc988fedf1b91f4c2d10515cc70feba15eb Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 10:30:13 +0530 Subject: [PATCH 43/56] Update deploy.yml --- .github/workflows/deploy.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a59b02559..8ae86dc06 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -92,6 +92,11 @@ jobs: run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) + # Create Docker network if it doesn't exist + - name: Create Docker Network + run: | + docker network create odoo-postgres-network || true + # Deploy Odoo Docker container to VM - name: Deploy Odoo Docker Container to VM uses: appleboy/ssh-action@v0.1.6 From da3cd24aeb1d6c35410603ffffb0d0640c9fafeb Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 10:39:35 +0530 Subject: [PATCH 44/56] Update deploy.yml From 18e53275abf9e6b176d6e9c4fe24e2dfa552ca01 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 10:48:59 +0530 Subject: [PATCH 45/56] Update deploy.yml --- .github/workflows/deploy.yml | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8ae86dc06..d3ca3d19e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -92,13 +92,8 @@ jobs: run: | ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - # Create Docker network if it doesn't exist - - name: Create Docker Network - run: | - docker network create odoo-postgres-network || true - - # Deploy Odoo Docker container to VM - - name: Deploy Odoo Docker Container to VM + # Deploy to VM: Create Docker network on the VM if Not Present + - name: Ensure Docker Network Exists on VM uses: appleboy/ssh-action@v0.1.6 with: host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} @@ -106,11 +101,21 @@ jobs: password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} port: 22 script: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + # List existing Docker networks to debug + docker network ls + + # Create the network if it does not exist + docker network create odoo-postgres-network || echo "Network already exists" + + # Pull the latest image + sudo docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + + # Stop and remove existing container if any + sudo docker stop odoo-container || true + sudo docker rm odoo-container || true + + # Run the Odoo container on the new or existing network + sudo docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 # Cleanup VPN credentials - name: Cleanup VPN Credentials From 2fc5fa22cc5a0be633c9931c681d6489bbfca328 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 10:58:58 +0530 Subject: [PATCH 46/56] Update deploy.yml --- .github/workflows/deploy.yml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d3ca3d19e..a1d34163d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -101,6 +101,9 @@ jobs: password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} port: 22 script: | + # Ensure user has permissions to access Docker + sudo usermod -aG docker $USER # Adding user to docker group + # List existing Docker networks to debug docker network ls @@ -108,14 +111,14 @@ jobs: docker network create odoo-postgres-network || echo "Network already exists" # Pull the latest image - sudo docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 # Stop and remove existing container if any - sudo docker stop odoo-container || true - sudo docker rm odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true # Run the Odoo container on the new or existing network - sudo docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 # Cleanup VPN credentials - name: Cleanup VPN Credentials From 5ed4764eb3a8e06468eaad3a3f0b13e419742bbe Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 11:26:37 +0530 Subject: [PATCH 47/56] Update deploy.yml --- .github/workflows/deploy.yml | 187 ++++++++++++----------------------- 1 file changed, 61 insertions(+), 126 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a1d34163d..f3735a4de 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,126 +1,61 @@ -name: CI/CD for Odoo Docker - -on: - workflow_dispatch: # Manual trigger - inputs: - environment: - description: 'Environment to deploy (Development/Production)' - required: true - default: 'development' - odoo_version: - description: 'Odoo Version' - required: true - default: '18.0' - -jobs: - build-and-push: - name: Build and Push Docker Image for Odoo - runs-on: ubuntu-latest - - steps: - # Checkout Odoo Docker repository - - name: Checkout Odoo Repository - uses: actions/checkout@v3 - with: - repository: trplgit/odoo-docker - token: ${{ secrets.GITHUB_TOKEN }} - - # Set up Docker buildx - - name: Set up Docker - uses: docker/setup-buildx-action@v2 - with: - version: latest - - # Log in to Azure Container Registry - - name: Log in to Azure Container Registry - uses: azure/docker-login@v1 - with: - login-server: ${{ vars.ACR_NAME }}.azurecr.io - username: ${{ vars.ACR_USERNAME }} - password: ${{ secrets.ACR_PASSWORD }} - - # Verify Odoo Docker repository directory structure - - name: List Odoo Docker repository structure - run: | - echo "Listing the directory structure of the Odoo Docker repository" - ls -R ./ # List all files and directories recursively after checkout - - # Check if 18.0 folder exists in Odoo Docker repository - - name: Check 18.0 directory inside Odoo Docker repository - run: | - echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 # List contents inside the 18.0 folder - - # Build and Push Odoo Docker Image - - name: Build and Push Odoo Docker Image - run: | - # Build the Docker image with the appropriate tag - docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 - - # Push Docker image to Azure Container Registry with the correct tag - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - - deploy: - name: Deploy to Linux VM - runs-on: ubuntu-latest - needs: build-and-push - - steps: - # Install OpenVPN - - name: Install OpenVPN - run: sudo apt-get install -y openvpn - - # Prepare VPN files - - name: Prepare VPN Files - run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key - - # Connect to VPN - - name: Connect to VPN - run: | - echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn - echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt - sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon - - # Wait for VPN connection - - name: Wait for VPN Connection - run: sleep 15 - - # Verify VPN connection - - name: Verify VPN Connection - run: | - ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - - # Deploy to VM: Create Docker network on the VM if Not Present - - name: Ensure Docker Network Exists on VM - uses: appleboy/ssh-action@v0.1.6 - with: - host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} - username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} - password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} - port: 22 - script: | - # Ensure user has permissions to access Docker - sudo usermod -aG docker $USER # Adding user to docker group - - # List existing Docker networks to debug - docker network ls - - # Create the network if it does not exist - docker network create odoo-postgres-network || echo "Network already exists" - - # Pull the latest image - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - - # Stop and remove existing container if any - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - - # Run the Odoo container on the new or existing network - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - - # Cleanup VPN credentials - - name: Cleanup VPN Credentials - run: | - rm -f vpn-config.ovpn vpn-credentials.txt +deploy: + name: Deploy to Linux VM + runs-on: ubuntu-latest + needs: build-and-push + steps: + # Install OpenVPN + - name: Install OpenVPN + run: sudo apt-get install -y openvpn + + # Prepare VPN files + - name: Prepare VPN Files + run: | + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + + # Connect to VPN + - name: Connect to VPN + run: | + echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn + echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt + sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon + + # Wait for VPN connection + - name: Wait for VPN Connection + run: sleep 15 + + # Verify VPN connection + - name: Verify VPN Connection + run: | + ifconfig | grep tun || (echo "VPN connection failed" && exit 1) + + # Add user to Docker group to allow Docker commands without sudo + - name: Add user to Docker group + run: | + sudo usermod -aG docker $USER + newgrp docker || true + + # Create Docker network if it doesn't exist + - name: Create Docker Network if not exists + run: | + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || echo "Network already exists" + + # Deploy Odoo Docker container to VM + - name: Deploy Odoo Docker Container to VM + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} + username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} + password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} + port: 22 + script: | + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + + # Cleanup VPN credentials + - name: Cleanup VPN Credentials + run: | + rm -f vpn-config.ovpn vpn-credentials.txt From cbde68775ebecc34a24c25ea626588aacecd1444 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 11:27:49 +0530 Subject: [PATCH 48/56] Update deploy.yml --- .github/workflows/deploy.yml | 185 +++++++++++++++++++++++------------ 1 file changed, 124 insertions(+), 61 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f3735a4de..eed1d5ea4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,61 +1,124 @@ -deploy: - name: Deploy to Linux VM - runs-on: ubuntu-latest - needs: build-and-push - steps: - # Install OpenVPN - - name: Install OpenVPN - run: sudo apt-get install -y openvpn - - # Prepare VPN files - - name: Prepare VPN Files - run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key - - # Connect to VPN - - name: Connect to VPN - run: | - echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn - echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt - sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon - - # Wait for VPN connection - - name: Wait for VPN Connection - run: sleep 15 - - # Verify VPN connection - - name: Verify VPN Connection - run: | - ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - - # Add user to Docker group to allow Docker commands without sudo - - name: Add user to Docker group - run: | - sudo usermod -aG docker $USER - newgrp docker || true - - # Create Docker network if it doesn't exist - - name: Create Docker Network if not exists - run: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || echo "Network already exists" - - # Deploy Odoo Docker container to VM - - name: Deploy Odoo Docker Container to VM - uses: appleboy/ssh-action@v0.1.6 - with: - host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} - username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} - password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} - port: 22 - script: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - - # Cleanup VPN credentials - - name: Cleanup VPN Credentials - run: | - rm -f vpn-config.ovpn vpn-credentials.txt +name: CI/CD for Odoo Docker + +on: + workflow_dispatch: + inputs: + environment: + description: 'Environment to deploy (Development/Production)' + required: true + default: 'development' + odoo_version: + description: 'Odoo Version' + required: true + default: '18.0' + +jobs: + build-and-push: + name: Build and Push Docker Image for Odoo + runs-on: ubuntu-latest + + steps: + # Checkout Odoo Docker repository + - name: Checkout Odoo Repository + uses: actions/checkout@v3 + with: + repository: trplgit/odoo-docker + token: ${{ secrets.GITHUB_TOKEN }} + + # Set up Docker buildx + - name: Set up Docker + uses: docker/setup-buildx-action@v2 + with: + version: latest + + # Log in to Azure Container Registry + - name: Log in to Azure Container Registry + uses: azure/docker-login@v1 + with: + login-server: ${{ vars.ACR_NAME }}.azurecr.io + username: ${{ vars.ACR_USERNAME }} + password: ${{ secrets.ACR_PASSWORD }} + + # Verify Odoo Docker repository directory structure + - name: List Odoo Docker repository structure + run: | + echo "Listing the directory structure of the Odoo Docker repository" + ls -R ./ # List all files and directories recursively after checkout + + # Check if 18.0 folder exists in Odoo Docker repository + - name: Check 18.0 directory inside Odoo Docker repository + run: | + echo "Checking contents inside the 18.0 folder in Odoo Docker repository" + ls -R ./18.0 # List contents inside the 18.0 folder + + # Build and Push Odoo Docker Image + - name: Build and Push Odoo Docker Image + run: | + # Build the Docker image with the appropriate tag + docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 + + # Push Docker image to Azure Container Registry with the correct tag + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + + deploy: + name: Deploy to Linux VM + runs-on: ubuntu-latest + needs: build-and-push + + steps: + # Install OpenVPN + - name: Install OpenVPN + run: sudo apt-get install -y openvpn + + # Prepare VPN files + - name: Prepare VPN Files + run: | + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + + # Connect to VPN + - name: Connect to VPN + run: | + echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn + echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt + sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon + + # Wait for VPN connection + - name: Wait for VPN Connection + run: sleep 15 + + # Verify VPN connection + - name: Verify VPN Connection + run: | + ifconfig | grep tun || (echo "VPN connection failed" && exit 1) + + # Add user to Docker group to allow Docker commands without sudo + - name: Add user to Docker group + run: | + sudo usermod -aG docker $USER + newgrp docker || true + + # Create Docker network if not exists + - name: Create Docker Network if not exists + run: | + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || echo "Network already exists" + + # Deploy Odoo Docker container to VM + - name: Deploy Odoo Docker Container to VM + uses: appleboy/ssh-action@v0.1.6 + with: + host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} + username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} + password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} + port: 22 + script: | + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + + # Cleanup VPN credentials + - name: Cleanup VPN Credentials + run: | + rm -f vpn-config.ovpn vpn-credentials.txt From 8ed65700632eb07efcddcc5ad3c0cfce898c98a3 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 13:07:52 +0530 Subject: [PATCH 49/56] Update deploy.yml --- .github/workflows/deploy.yml | 44 ++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index eed1d5ea4..fe77e244c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo Docker +name: CI/CD for Odoo and Postgres Docker on: workflow_dispatch: @@ -14,7 +14,7 @@ on: jobs: build-and-push: - name: Build and Push Docker Image for Odoo + name: Build and Push Docker Images for Odoo and Postgres runs-on: ubuntu-latest steps: @@ -25,6 +25,13 @@ jobs: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} + # Checkout Postgres Docker repository (Postgres 17) + - name: Checkout Postgres Repository + uses: actions/checkout@v3 + with: + repository: trplgit/postgres + token: ${{ secrets.GITHUB_TOKEN }} + # Set up Docker buildx - name: Set up Docker uses: docker/setup-buildx-action@v2 @@ -39,27 +46,18 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # Verify Odoo Docker repository directory structure - - name: List Odoo Docker repository structure - run: | - echo "Listing the directory structure of the Odoo Docker repository" - ls -R ./ # List all files and directories recursively after checkout - - # Check if 18.0 folder exists in Odoo Docker repository - - name: Check 18.0 directory inside Odoo Docker repository - run: | - echo "Checking contents inside the 18.0 folder in Odoo Docker repository" - ls -R ./18.0 # List contents inside the 18.0 folder - # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - # Build the Docker image with the appropriate tag docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 - - # Push Docker image to Azure Container Registry with the correct tag docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + # Build and Push Postgres Docker Image for PostgreSQL 17 + - name: Build and Push Postgres Docker Image + run: | + docker build -f ./17/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 ./17/alpine3.21 + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 + deploy: name: Deploy to Linux VM runs-on: ubuntu-latest @@ -73,8 +71,8 @@ jobs: # Prepare VPN files - name: Prepare VPN Files run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key # Connect to VPN - name: Connect to VPN @@ -114,8 +112,16 @@ jobs: script: | echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true + echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true + + # Run Postgres container (PostgreSQL 17) + 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 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 + + # Run Odoo container echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 # Cleanup VPN credentials From a3dc7402ef9e41de50ec05d8b7192ad4dee4b07b Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 13:10:08 +0530 Subject: [PATCH 50/56] Update deploy.yml --- .github/workflows/deploy.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index fe77e244c..1930c52cb 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -71,8 +71,8 @@ jobs: # Prepare VPN files - name: Prepare VPN Files run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key + echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 + echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key # Connect to VPN - name: Connect to VPN @@ -111,8 +111,12 @@ jobs: port: 22 script: | echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} + + # Pull both Odoo and Postgres Docker images echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 + + # Stop and remove any existing containers (Odoo and Postgres) echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true From 60d98e0e4612b15a9a7a58a4ad62a57e52777f06 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 13:15:43 +0530 Subject: [PATCH 51/56] Update deploy.yml --- .github/workflows/deploy.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1930c52cb..18f33aa3a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -18,19 +18,21 @@ jobs: runs-on: ubuntu-latest steps: - # Checkout Odoo Docker repository + # Checkout Odoo Docker repository into a specific directory - name: Checkout Odoo Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker token: ${{ secrets.GITHUB_TOKEN }} + path: odoo-docker # Checkout into the 'odoo-docker' directory - # Checkout Postgres Docker repository (Postgres 17) + # Checkout Postgres Docker repository (Postgres 17) into a specific directory - name: Checkout Postgres Repository uses: actions/checkout@v3 with: repository: trplgit/postgres token: ${{ secrets.GITHUB_TOKEN }} + path: postgres # Checkout into the 'postgres' directory # Set up Docker buildx - name: Set up Docker @@ -49,13 +51,13 @@ jobs: # Build and Push Odoo Docker Image - name: Build and Push Odoo Docker Image run: | - docker build -f ./18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./18.0 + docker build -f ./odoo-docker/18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./odoo-docker/18.0 docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 # Build and Push Postgres Docker Image for PostgreSQL 17 - name: Build and Push Postgres Docker Image run: | - docker build -f ./17/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 ./17/alpine3.21 + docker build -f ./postgres/17/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 ./postgres/17/alpine3.21 docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 deploy: @@ -111,12 +113,8 @@ jobs: port: 22 script: | echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - - # Pull both Odoo and Postgres Docker images echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 - - # Stop and remove any existing containers (Odoo and Postgres) echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true From 339ba15864dbed0152786979b5c9bf78819df561 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 13:47:23 +0530 Subject: [PATCH 52/56] Update entrypoint.sh --- 18.0/entrypoint.sh | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/18.0/entrypoint.sh b/18.0/entrypoint.sh index f802bcb25..4dbd03ec8 100755 --- a/18.0/entrypoint.sh +++ b/18.0/entrypoint.sh @@ -2,18 +2,22 @@ set -e +# If PASSWORD_FILE is provided, read it if [ -v PASSWORD_FILE ]; then PASSWORD="$(< $PASSWORD_FILE)" fi -# set the postgres database host, port, user and password according to the environment -# and pass them as arguments to the odoo process if not present in the config file +# Set the postgres database host, port, user, and password according to the environment +# If the environment variable is not set, use default values : ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} -: ${PORT:=${DB_PORT_5432_TCP_PORT:=5432}} +: ${PORT:=${DB_PORT_5432_TCP_PORT:=5433}} # Change default port to 5433 : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} +# Arguments to pass to the Odoo process DB_ARGS=() + +# Function to check if the config file has any database-related config and override it function check_config() { param="$1" value="$2" @@ -23,26 +27,33 @@ function check_config() { DB_ARGS+=("--${param}") DB_ARGS+=("${value}") } + +# Call check_config for all necessary database parameters check_config "db_host" "$HOST" check_config "db_port" "$PORT" check_config "db_user" "$USER" check_config "db_password" "$PASSWORD" +# Main logic to start Odoo case "$1" in -- | odoo) shift + # If "scaffold", execute odoo scaffold command if [[ "$1" == "scaffold" ]] ; then exec odoo "$@" else + # Wait for PostgreSQL to be ready wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" # Start odoo with db args fi ;; -*) + # Wait for PostgreSQL to be ready if the arguments contain any option with - wait-for-psql.py ${DB_ARGS[@]} --timeout=30 - exec odoo "$@" "${DB_ARGS[@]}" + exec odoo "$@" "${DB_ARGS[@]}" # Start odoo with db args ;; *) + # If not odoo command, just execute the provided command exec "$@" esac From 709440ab9247311cb035059feffa89c25b83cdf4 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 13:53:45 +0530 Subject: [PATCH 53/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 18f33aa3a..7cf7ae78a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -121,7 +121,7 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true # Run Postgres container (PostgreSQL 17) - 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 5432:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 + 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:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 # Run Odoo container echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 From 2fca448349643f2f7a7b429b440c6f49e513bd38 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 15:19:27 +0530 Subject: [PATCH 54/56] Update entrypoint.sh --- 18.0/entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/18.0/entrypoint.sh b/18.0/entrypoint.sh index 4dbd03ec8..78e8f768e 100755 --- a/18.0/entrypoint.sh +++ b/18.0/entrypoint.sh @@ -9,7 +9,7 @@ fi # Set the postgres database host, port, user, and password according to the environment # If the environment variable is not set, use default values -: ${HOST:=${DB_PORT_5432_TCP_ADDR:='db'}} +: ${HOST:=${DB_PORT_5432_TCP_ADDR:='postgres-container'}} : ${PORT:=${DB_PORT_5432_TCP_PORT:=5433}} # Change default port to 5433 : ${USER:=${DB_ENV_POSTGRES_USER:=${POSTGRES_USER:='odoo'}}} : ${PASSWORD:=${DB_ENV_POSTGRES_PASSWORD:=${POSTGRES_PASSWORD:='odoo'}}} From 0c9bad52b1d449f9b0f9ef2b64addb22c25b78d0 Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 16 Jan 2025 17:34:43 +0530 Subject: [PATCH 55/56] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 7cf7ae78a..9f87262db 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -121,7 +121,7 @@ jobs: echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true # Run Postgres container (PostgreSQL 17) - 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:5432 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 + 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 # Run Odoo container echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 From eb3962b505a08d62733a9cdeb430e26ac524e1fb Mon Sep 17 00:00:00 2001 From: ravindraba-regtech Date: Thu, 27 Feb 2025 12:12:59 +0530 Subject: [PATCH 56/56] Update deploy.yml --- .github/workflows/deploy.yml | 103 +++-------------------------------- 1 file changed, 9 insertions(+), 94 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 9f87262db..d68874eda 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: CI/CD for Odoo and Postgres Docker +name: CI/CD for Odoo Docker Image to ACR on: workflow_dispatch: @@ -14,28 +14,20 @@ on: jobs: build-and-push: - name: Build and Push Docker Images for Odoo and Postgres + name: Build and Push Odoo Docker Image to ACR runs-on: ubuntu-latest steps: - # Checkout Odoo Docker repository into a specific directory + # Checkout Odoo Docker repository - name: Checkout Odoo Repository uses: actions/checkout@v3 with: repository: trplgit/odoo-docker - token: ${{ secrets.GITHUB_TOKEN }} - path: odoo-docker # Checkout into the 'odoo-docker' directory - - # Checkout Postgres Docker repository (Postgres 17) into a specific directory - - name: Checkout Postgres Repository - uses: actions/checkout@v3 - with: - repository: trplgit/postgres - token: ${{ secrets.GITHUB_TOKEN }} - path: postgres # Checkout into the 'postgres' directory + token: ${{ secrets.GH_TOKEN }} + path: odoo-docker # Set up Docker buildx - - name: Set up Docker + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 with: version: latest @@ -48,85 +40,8 @@ jobs: username: ${{ vars.ACR_USERNAME }} password: ${{ secrets.ACR_PASSWORD }} - # Build and Push Odoo Docker Image + # Build and Push Odoo Docker Image (odoo-18:latest) - name: Build and Push Odoo Docker Image run: | - docker build -f ./odoo-docker/18.0/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 ./odoo-docker/18.0 - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - - # Build and Push Postgres Docker Image for PostgreSQL 17 - - name: Build and Push Postgres Docker Image - run: | - docker build -f ./postgres/17/alpine3.21/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 ./postgres/17/alpine3.21 - docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 - - deploy: - name: Deploy to Linux VM - runs-on: ubuntu-latest - needs: build-and-push - - steps: - # Install OpenVPN - - name: Install OpenVPN - run: sudo apt-get install -y openvpn - - # Prepare VPN files - - name: Prepare VPN Files - run: | - echo "${{ secrets.VPN_PKCS12_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation.p12 - echo "${{ secrets.VPN_TLS_KEY_FILE }}" | base64 -d > TRPL-FW-TCP-1194-ci-cd-automation-tls.key - - # Connect to VPN - - name: Connect to VPN - run: | - echo "${{ secrets.VPN_CONFIG_FILE }}" > vpn-config.ovpn - echo -e "${{ vars.VPN_USERNAME }}\n${{ secrets.VPN_PASSWORD }}" > vpn-credentials.txt - sudo openvpn --config vpn-config.ovpn --auth-user-pass vpn-credentials.txt --daemon - - # Wait for VPN connection - - name: Wait for VPN Connection - run: sleep 15 - - # Verify VPN connection - - name: Verify VPN Connection - run: | - ifconfig | grep tun || (echo "VPN connection failed" && exit 1) - - # Add user to Docker group to allow Docker commands without sudo - - name: Add user to Docker group - run: | - sudo usermod -aG docker $USER - newgrp docker || true - - # Create Docker network if not exists - - name: Create Docker Network if not exists - run: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker network create odoo-postgres-network || echo "Network already exists" - - # Deploy Odoo Docker container to VM - - name: Deploy Odoo Docker Container to VM - uses: appleboy/ssh-action@v0.1.6 - with: - host: ${{ vars.LINUX_VM_HOST_DEVELOPMENT }} - username: ${{ vars.LINUX_VM_USERNAME_DEVELOPMENT }} - password: ${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }} - port: 22 - script: | - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker login ${{ vars.ACR_NAME }}.azurecr.io -u ${{ vars.ACR_USERNAME }} -p ${{ secrets.ACR_PASSWORD }} - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker pull ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-postgres-docker:v17 - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm odoo-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker stop postgres-container || true - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker rm postgres-container || true - - # Run Postgres container (PostgreSQL 17) - 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 - - # Run Odoo container - echo "${{ secrets.LINUX_VM_PASSWORD_DEVELOPMENT }}" | sudo -S docker run -d --restart always --name odoo-container --network=odoo-postgres-network -p 8069:8069 ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/trpl-odoo-docker:v1 - - # Cleanup VPN credentials - - name: Cleanup VPN Credentials - run: | - rm -f vpn-config.ovpn vpn-credentials.txt + docker build -f ./odoo-docker/${{ inputs.odoo_version }}/Dockerfile -t ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-18:latest ./odoo-docker/${{ inputs.odoo_version }} + docker push ${{ vars.ACR_NAME }}.azurecr.io/${{ inputs.environment }}/odoo-18:latest