debug #136
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CD | |
concurrency: production | |
on: | |
push: | |
branches: [master] | |
jobs: | |
check_changed: | |
runs-on: ubuntu-20.04 | |
outputs: | |
backend_diff: ${{ steps.check_backend_diff.outputs.backend_changed }} | |
backend_playwright_diff: ${{ steps.check_backend_playwright_diff.outputs.backend_playwright_changed }} | |
frontend_diff: ${{ steps.check_frontend_diff.outputs.frontend_changed }} | |
steps: | |
- uses: actions/checkout@v3 | |
- run: git fetch origin master --depth=1 | |
# TODO: diffがうまく取れてなさそう | |
- id: check_backend_diff | |
run: | | |
CHANGED=$(git diff --name-only origin/master $GITHUB_SHA^ $GITHUB_SHA --relative ./volumes/backend/ ./containers/backend/ | wc -l) | |
echo "backend_changed=$CHANGED" >> $GITHUB_OUTPUT | |
- id: check_backend_playwright_diff | |
run: | | |
CHANGED=$(git diff --name-only origin/master HEAD --relative ./containers/backend_playwright/ | wc -l) | |
echo "backend_playwright_changed=$CHANGED" >> $GITHUB_OUTPUT | |
- id: check_frontend_diff | |
run: | | |
CHANGED=$(git diff --name-only origin/master HEAD --relative ./volumes/frontend/ ./containers/frontend/ | wc -l) | |
echo "frontend_changed=$CHANGED" >> $GITHUB_OUTPUT | |
backend: | |
runs-on: ubuntu-20.04 | |
needs: check_changed | |
if: needs.check_changed.outputs.backend_diff != '0' | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- 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: | |
runs-on: ubuntu-20.04 | |
needs: check_changed | |
if: needs.check_changed.outputs.backend_playwright_diff != '0' | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- 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: | |
runs-on: ubuntu-20.04 | |
needs: check_changed | |
if: needs.check_changed.outputs.frontend_diff != '0' | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
- 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 |