mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-08-24 21:29:25 +00:00

Merging JWT feature from main into V2 ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing) for more details. --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: stirlingbot[bot] <stirlingbot[bot]@users.noreply.github.com> Co-authored-by: Ludy <Ludy87@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: EthanHealy01 <80844253+EthanHealy01@users.noreply.github.com> Co-authored-by: Ethan <ethan@MacBook-Pro.local> Co-authored-by: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Co-authored-by: stirlingbot[bot] <195170888+stirlingbot[bot]@users.noreply.github.com> Co-authored-by: albanobattistella <34811668+albanobattistella@users.noreply.github.com>
142 lines
4.7 KiB
YAML
142 lines
4.7 KiB
YAML
name: PR Deployment cleanup
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [opened, synchronize, reopened, closed]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
SERVER_IP: ${{ secrets.VPS_IP }} # Add this to your GitHub secrets
|
|
CLEANUP_PERFORMED: "false" # Add flag to track if cleanup occurred
|
|
|
|
jobs:
|
|
cleanup:
|
|
if: github.event.action == 'closed'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
pull-requests: write
|
|
issues: write
|
|
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout PR
|
|
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
|
|
|
|
- name: Setup GitHub App Bot
|
|
if: github.actor != 'dependabot[bot]'
|
|
id: setup-bot
|
|
uses: ./.github/actions/setup-bot
|
|
continue-on-error: true
|
|
with:
|
|
app-id: ${{ secrets.GH_APP_ID }}
|
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
|
|
|
- name: Remove 'pr-deployed' label if present
|
|
id: remove-label-comment
|
|
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
|
|
with:
|
|
github-token: ${{ steps.setup-bot.outputs.token }}
|
|
script: |
|
|
const prNumber = ${{ github.event.pull_request.number }};
|
|
const owner = context.repo.owner;
|
|
const repo = context.repo.repo;
|
|
|
|
// Get all labels on the PR
|
|
const { data: labels } = await github.rest.issues.listLabelsOnIssue({
|
|
owner,
|
|
repo,
|
|
issue_number: prNumber
|
|
});
|
|
|
|
const hasLabel = labels.some(label => label.name === 'pr-deployed');
|
|
|
|
if (hasLabel) {
|
|
console.log("Label 'pr-deployed' found. Removing...");
|
|
await github.rest.issues.removeLabel({
|
|
owner,
|
|
repo,
|
|
issue_number: prNumber,
|
|
name: 'pr-deployed'
|
|
});
|
|
} else {
|
|
console.log("Label 'pr-deployed' not found. Nothing to do.");
|
|
}
|
|
|
|
// Find existing bot comments about the deployment
|
|
const { data: comments } = await github.rest.issues.listComments({
|
|
owner,
|
|
repo,
|
|
issue_number: prNumber
|
|
});
|
|
const deploymentComments = comments.filter(c =>
|
|
c.body?.includes("## 🚀 PR Test Deployment") &&
|
|
c.user?.type === "Bot"
|
|
);
|
|
|
|
if (deploymentComments.length > 0) {
|
|
for (const comment of deploymentComments) {
|
|
await github.rest.issues.deleteComment({
|
|
owner,
|
|
repo,
|
|
comment_id: comment.id
|
|
});
|
|
console.log(`Deleted deployment comment (ID: ${comment.id})`);
|
|
}
|
|
} else {
|
|
console.log("No matching deployment comments found.");
|
|
}
|
|
|
|
// Set flag if either label or comment was present
|
|
const hasDeploymentComment = deploymentComments.length > 0;
|
|
core.setOutput('present', (hasLabel || hasDeploymentComment) ? 'true' : 'false');
|
|
|
|
|
|
- name: Set up SSH
|
|
if: steps.remove-label-comment.outputs.present == 'true'
|
|
run: |
|
|
mkdir -p ~/.ssh/
|
|
echo "${{ secrets.VPS_SSH_KEY }}" > ../private.key
|
|
sudo chmod 600 ../private.key
|
|
|
|
- name: Cleanup PR deployment
|
|
if: steps.remove-label-comment.outputs.present == 'true'
|
|
id: cleanup
|
|
run: |
|
|
ssh -i ../private.key -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -T ${{ secrets.VPS_USERNAME }}@${{ secrets.VPS_HOST }} << 'ENDSSH'
|
|
if [ -d "/stirling/PR-${{ github.event.pull_request.number }}" ]; then
|
|
echo "Found PR directory, proceeding with cleanup..."
|
|
|
|
# Stop and remove containers
|
|
cd /stirling/PR-${{ github.event.pull_request.number }}
|
|
docker-compose down || true
|
|
|
|
# Go back to root before removal
|
|
cd /
|
|
|
|
# Remove PR-specific directories
|
|
rm -rf /stirling/PR-${{ github.event.pull_request.number }}
|
|
|
|
# Remove the Docker image
|
|
docker rmi --no-prune ${{ secrets.DOCKER_HUB_USERNAME }}/test:pr-${{ github.event.pull_request.number }} || true
|
|
|
|
echo "PERFORMED_CLEANUP"
|
|
else
|
|
echo "PR directory not found, nothing to clean up"
|
|
echo "NO_CLEANUP_NEEDED"
|
|
fi
|
|
ENDSSH
|
|
|
|
- name: Cleanup temporary files
|
|
if: always()
|
|
run: |
|
|
echo "Cleaning up temporary files..."
|
|
rm -f ../private.key
|
|
echo "Cleanup complete."
|
|
continue-on-error: true
|