xworkmate-app/patch_pipeline_ansible.py

39 lines
1.8 KiB
Python

import os
path = '/Users/shenlan/workspaces/cloud-neutral-toolkit/xworkmate-bridge/.github/workflows/pipeline.yml'
with open(path, 'r') as f:
content = f.read()
# Update the "Run Ansible deploy playbook" step to run directly instead of through deploy.sh
target_step = ''' - name: Run Ansible deploy playbook
working-directory: xworkmate-bridge
env:
INTERNAL_SERVICE_TOKEN: ${{ env.INTERNAL_SERVICE_TOKEN }}
GHCR_USERNAME: ${{ env.GHCR_USERNAME }}
GHCR_PASSWORD: ${{ env.GHCR_PASSWORD }}
XWORKMATE_BRIDGE_IMAGE_ARTIFACT_PATH: ${{ github.workspace }}/xworkmate-bridge/dist/image-artifact/service-image-ref.txt
run: bash ./scripts/github-actions/deploy.sh "${{ steps.deploy_meta.outputs.target_host }}" "${{ steps.deploy_meta.outputs.run_apply }}" ../playbooks'''
replacement_step = ''' - name: Run Ansible deploy playbook
working-directory: playbooks
env:
ANSIBLE_CONFIG: ./ansible.cfg
BRIDGE_AUTH_TOKEN: ${{ env.INTERNAL_SERVICE_TOKEN }}
run: |
SERVICE_COMPOSE_IMAGE="$(cat ../xworkmate-bridge/dist/image-artifact/service-image-ref.txt | xargs)"
CHECK_MODE_FLAG=""
if [[ "${{ steps.deploy_meta.outputs.run_apply }}" != "true" ]]; then
CHECK_MODE_FLAG="-C"
fi
ansible-playbook -i inventory.ini deploy_xworkmate_bridge_vhosts.yml \\
-D ${CHECK_MODE_FLAG} \\
-l "${{ steps.deploy_meta.outputs.target_host }}" \\
-e "service_compose_image=${SERVICE_COMPOSE_IMAGE}" \\
-e "ghcr_username=${{ env.GHCR_USERNAME }}" \\
-e "ghcr_password=${{ env.GHCR_PASSWORD }}"'''
content = content.replace(target_step, replacement_step)
with open(path, 'w') as f:
f.write(content)