33on :
44 push :
55 branches : [ main ]
6- pull_request_target :
7- branches : [ main ]
86 workflow_dispatch :
97
108permissions :
2018 outputs :
2119 backend_image : ${{ steps.tags.outputs.backend }}
2220 frontend_image : ${{ steps.tags.outputs.frontend }}
23- # Only run on PRs originating from this repo to avoid exposing secrets to forks
24- if : ${{ github.event_name != 'pull_request_target' || github.event.pull_request.head.repo.full_name == github.repository }}
2521 steps :
26- - name : Select ref
27- run : |
28- if [ "${{ github.event_name }}" = "pull_request_target" ]; then
29- echo "REF=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV
30- else
31- echo "REF=${GITHUB_SHA}" >> $GITHUB_ENV
32- fi
3322 - uses : actions/checkout@v4
34- with :
35- ref : ${{ env.REF }}
3623
3724 - name : Derive lowercase image repo
3825 run : |
8976 group : prod-deploy
9077 cancel-in-progress : false
9178 steps :
92- - name : Select ref
93- run : |
94- if [ "${{ github.event_name }}" = "pull_request_target" ]; then
95- echo "REF=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV
96- else
97- echo "REF=${GITHUB_SHA}" >> $GITHUB_ENV
98- fi
9979 - uses : actions/checkout@v4
100- with :
101- ref : ${{ env.REF }}
10280
10381 - name : Verify required secrets are present
10482 env :
@@ -109,11 +87,6 @@ jobs:
10987 for v in SSH_HOST SSH_USER SSH_PRIVATE_KEY; do
11088 if [ -z "${!v}" ]; then echo "Missing secret: $v"; exit 1; fi
11189 done
112- - name : Verify PR origin (internal only)
113- if : ${{ github.event_name == 'pull_request_target' }}
114- run : |
115- if [ "${{ github.event.pull_request.head.repo.full_name }}" != "${{ github.repository }}" ]; then
116- echo "Refusing to deploy from external fork PR"; exit 1; fi
11790
11891 - name : Upload docker-compose file
11992 uses : appleboy/scp-action@v0.1.7
0 commit comments