Skip to content

refactor: update

refactor: update #41

Workflow file for this run

name: CI/CD
concurrency: production
on:
push:
branches: [master]
jobs:
check_changes:
runs-on: ubuntu-latest
outputs:
backend_ci: ${{ steps.filter.outputs.backend_ci }}
backend_cd: ${{ steps.filter.outputs.backend_cd }}
backend_playwright_cd: ${{ steps.filter.outputs.backend_playwright_cd }}
frontend_cd: ${{ steps.filter.outputs.frontend_cd }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
backend_ci:
- './volumes/backend/**'
- './containers/backend/**'
backend_cd:
- './volumes/backend/!(spec)/**'
- './containers/backend/**'
backend_playwright_cd:
- './containers/backend_playwright/**'
frontend_cd:
- './volumes/frontend/**'
- './containers/frontend/**'
backend_ci:
needs: check_changes
if: ${{ needs.check_changes.outputs.backend_ci == 'true' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Execute CI
run: |
docker compose build backend
docker compose run backend rails db:create
docker compose run backend rails db:migrate
docker compose run backend rspec
- name: Set CI Result
if: ${{ success() }}
run: echo "result=true" >> $GITHUB_OUTPUT
backend_cd:
needs:
- check_changes
- backend_ci
if: ${{ needs.check_changes.outputs.backend_cd == 'true' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Docker Registry
run: |
echo "${{ secrets.REGISTRY_IP }} registry.local" | sudo tee -a /etc/hosts
echo "${{ secrets.REGISTRY_CRT }}" > ~/registry.crt
echo "${{ secrets.REGISTRY_KEY }}" > ~/registry.key
sudo cp ~/registry.* /usr/local/share/ca-certificates/
sudo update-ca-certificates
sudo systemctl restart docker
- name: Build Docker Image
run: |
make build-backend tag_suffix=${{ github.sha }}
- name: Install OpenVPN
run: |
sudo apt-get update
sudo apt-get --assume-yes --no-install-recommends install openvpn
- name: Setup VPN config
run: |
echo "${{ secrets.CA_CRT }}" > ca.crt
echo "${{ secrets.CLIENT_CRT }}" > client.crt
echo "${{ secrets.CLIENT_KEY }}" > client.key
echo "${{ secrets.SECRET_TEXT }}" > secret.txt
echo "${{ secrets.VPN_OVPN }}" > vpn.ovpn
- name: Connect VPN
run: sudo openvpn --config vpn.ovpn --daemon
- name: Wait for a VPN connection
timeout-minutes: 1
run: until ping -c1 192.168.0.10; do sleep 2; done
- name: Push Docker Image
timeout-minutes: 60
run: |
make push-backend tag_suffix=${{ github.sha }}
- name: Kill VPN connection
if: always()
run: |
sudo killall openvpn
- name: Update Kubernetes Manifest
run: |
git config --global user.name ${{ secrets.GIT_COMMIT_USER }}
git config --global user.email ${{ secrets.GIT_COMMIT_EMAIL }}
git clone https://${{ secrets.GIT_REPO_USER }}:${{ secrets.GIT_TOKEN }}@github.com/${{ secrets.GIT_REPO_USER }}/k8s
cd k8s/manifests/price-monitoring
make apply-backend tag_suffix=${{ github.sha }}
make commit
make push
backend_playwright_cd:
needs: check_changes
if: ${{ needs.check_changes.outputs.backend_playwright_cd == 'true' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Docker Registry
run: |
echo "${{ secrets.REGISTRY_IP }} registry.local" | sudo tee -a /etc/hosts
echo "${{ secrets.REGISTRY_CRT }}" > ~/registry.crt
echo "${{ secrets.REGISTRY_KEY }}" > ~/registry.key
sudo cp ~/registry.* /usr/local/share/ca-certificates/
sudo update-ca-certificates
sudo systemctl restart docker
- name: Build Docker Image
run: |
make build-backend-playwright tag_suffix=${{ github.sha }}
- name: Install OpenVPN
run: |
sudo apt-get update
sudo apt-get --assume-yes --no-install-recommends install openvpn
- name: Setup VPN config
run: |
echo "${{ secrets.CA_CRT }}" > ca.crt
echo "${{ secrets.CLIENT_CRT }}" > client.crt
echo "${{ secrets.CLIENT_KEY }}" > client.key
echo "${{ secrets.SECRET_TEXT }}" > secret.txt
echo "${{ secrets.VPN_OVPN }}" > vpn.ovpn
- name: Connect VPN
run: sudo openvpn --config vpn.ovpn --daemon
- name: Wait for a VPN connection
timeout-minutes: 1
run: until ping -c1 192.168.0.10; do sleep 2; done
- name: Push Docker Image
timeout-minutes: 60
run: |
make push-backend-playwright tag_suffix=${{ github.sha }}
- name: Kill VPN connection
if: always()
run: |
sudo killall openvpn
- name: Update Kubernetes Manifest
run: |
git config --global user.name ${{ secrets.GIT_COMMIT_USER }}
git config --global user.email ${{ secrets.GIT_COMMIT_EMAIL }}
git clone https://${{ secrets.GIT_REPO_USER }}:${{ secrets.GIT_TOKEN }}@github.com/${{ secrets.GIT_REPO_USER }}/k8s
cd k8s/manifests/price-monitoring
make apply-backend-playwright tag_suffix=${{ github.sha }}
make commit
make push
frontend_cd:
needs: check_changes
if: ${{ needs.check_changes.outputs.frontend_cd == 'true' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Setup Docker Registry
run: |
echo "${{ secrets.REGISTRY_IP }} registry.local" | sudo tee -a /etc/hosts
echo "${{ secrets.REGISTRY_CRT }}" > ~/registry.crt
echo "${{ secrets.REGISTRY_KEY }}" > ~/registry.key
sudo cp ~/registry.* /usr/local/share/ca-certificates/
sudo update-ca-certificates
sudo systemctl restart docker
- name: Build Docker Image
run: |
make build-frontend tag_suffix=${{ github.sha }}
- name: Install OpenVPN
run: |
sudo apt-get update
sudo apt-get --assume-yes --no-install-recommends install openvpn
- name: Setup VPN config
run: |
echo "${{ secrets.CA_CRT }}" > ca.crt
echo "${{ secrets.CLIENT_CRT }}" > client.crt
echo "${{ secrets.CLIENT_KEY }}" > client.key
echo "${{ secrets.SECRET_TEXT }}" > secret.txt
echo "${{ secrets.VPN_OVPN }}" > vpn.ovpn
- name: Connect VPN
run: sudo openvpn --config vpn.ovpn --daemon
- name: Wait for a VPN connection
timeout-minutes: 1
run: until ping -c1 192.168.0.10; do sleep 2; done
- name: Push Docker Image
timeout-minutes: 60
run: |
make push-frontend tag_suffix=${{ github.sha }}
- name: Kill VPN connection
if: always()
run: |
sudo killall openvpn
- name: Update Kubernetes Manifest
run: |
git config --global user.name ${{ secrets.GIT_COMMIT_USER }}
git config --global user.email ${{ secrets.GIT_COMMIT_EMAIL }}
git clone https://${{ secrets.GIT_REPO_USER }}:${{ secrets.GIT_TOKEN }}@github.com/${{ secrets.GIT_REPO_USER }}/k8s
cd k8s/manifests/price-monitoring
make apply-frontend tag_suffix=${{ github.sha }}
make commit
make push