From dbfa085823a4d4a52176aa5b1fa47f23de383cda Mon Sep 17 00:00:00 2001 From: Gregory Gauthier Date: Fri, 6 Feb 2026 15:03:49 +0000 Subject: [PATCH] separate out submission and deletion into two workflows --- .gitea/workflows/mvs_delete.yaml | 83 ++++++++++++++++++++++++++++++++ .gitea/workflows/mvs_job.yaml | 40 ++------------- 2 files changed, 88 insertions(+), 35 deletions(-) create mode 100644 .gitea/workflows/mvs_delete.yaml diff --git a/.gitea/workflows/mvs_delete.yaml b/.gitea/workflows/mvs_delete.yaml new file mode 100644 index 0000000..9304560 --- /dev/null +++ b/.gitea/workflows/mvs_delete.yaml @@ -0,0 +1,83 @@ +name: MVS Delete Members + +on: + push: + branches: [ master ] + paths: + - 'src/**' + - 'jcl/**' + workflow_dispatch: # Allow manual trigger for cleanup + +jobs: + delete-members: + runs-on: ubuntu-gitea + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Full history for git diff + + - name: Prepare environment + id: setup + run: | + echo "=== Debug: Starting setup ===" + apt-get update && apt install -y netcat-traditional python3-requests + nc -h + echo "=== Debug: Setup complete ===" + + - name: Find deleted source files + id: deleted + run: | + echo "=== Debug: Starting deletion detection ===" + echo "Current dir: $(pwd)" + + # Check if we have a parent commit + if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then + echo "Parent commit exists; checking for deletions." + DELETED_FILES=$(git diff --name-only --diff-filter=D HEAD~1 2>/dev/null | grep -E '\.(c|bas)$') + echo "Deleted files from last commit: '${DELETED_FILES}'" + else + echo "No parent commit; no deletions to process." + DELETED_FILES="" + fi + + if [ -z "$DELETED_FILES" ]; then + echo "No deleted C/BAS files found; skipping workflow." + echo "has_deletions=false" >> $GITHUB_OUTPUT + exit 0 + fi + + # Process deleted files - convert to space-separated list of members + DELETED_MEMBERS="" + for DFILE in $DELETED_FILES; do + DEXT="${DFILE##*.}" + DBASE=$(basename "$DFILE" ".$DEXT") + DELETED_MEMBERS="$DELETED_MEMBERS $DBASE" + done + + echo "Deleted members: $DELETED_MEMBERS" + echo "deleted_members=$DELETED_MEMBERS" >> $GITHUB_OUTPUT + echo "has_deletions=true" >> $GITHUB_OUTPUT + echo "=== Debug: Deletion detection complete ===" + + - name: Delete removed members from PDS + if: ${{ steps.deleted.outputs.has_deletions == 'true' }} + run: | + echo "=== Starting deletion of removed members ===" + echo "Deleted members: ${{ steps.deleted.outputs.deleted_members }}" + + for MEMBER in ${{ steps.deleted.outputs.deleted_members }}; do + echo "Deleting member: $MEMBER" + python3 delete_mvs_member.py "@05054.SRCLIB.C($MEMBER)" + done + + echo "=== Deletion complete ===" + env: + MVS_BATCH_PASSWORD: ${{ vars.MVS_BATCH_PASSWORD }} + MVS_HOST: "oldcomputernerd.com" + + - name: Report Status + if: ${{ steps.deleted.outputs.has_deletions == 'true' }} + run: | + echo "Deletion complete! Members removed from mainframe PDS." diff --git a/.gitea/workflows/mvs_job.yaml b/.gitea/workflows/mvs_job.yaml index 447155e..47ccdb6 100644 --- a/.gitea/workflows/mvs_job.yaml +++ b/.gitea/workflows/mvs_job.yaml @@ -31,7 +31,7 @@ jobs: nc -h echo "=== Debug: Setup complete ===" - - name: Find changed and deleted source files + - name: Find changed source files id: files run: | echo "=== Debug: Starting file detection ===" @@ -41,13 +41,10 @@ jobs: if git rev-parse --verify HEAD~1 >/dev/null 2>&1; then echo "Parent commit exists; running git diff." CHANGED_FILES=$(git diff --name-only HEAD~1 2>/dev/null | grep -E '\.(c|bas)$' | head -1) - DELETED_FILES=$(git diff --name-only --diff-filter=D HEAD~1 2>/dev/null | grep -E '\.(c|bas)$') echo "Changed files from last commit: '${CHANGED_FILES}'" - echo "Deleted files from last commit: '${DELETED_FILES}'" else echo "No parent commit; skipping diff." CHANGED_FILES="" - DELETED_FILES="" fi echo "=== Debug: Git diff check complete ===" @@ -60,7 +57,7 @@ jobs: echo "=== Debug: Fallback complete ===" fi - if [ -z "$CHANGED_FILES" ] && [ -z "$DELETED_FILES" ]; then + if [ -z "$CHANGED_FILES" ]; then echo "No C/BAS files found; skipping workflow." exit 0 # Graceful skip, no failure fi @@ -70,38 +67,11 @@ jobs: echo "file=$CHANGED_FILES" >> $GITHUB_OUTPUT # Extract member name (handle .c or .bas) - if [ -n "$CHANGED_FILES" ]; then - EXT="${CHANGED_FILES##*.}" - BASE=$(basename "$CHANGED_FILES" ".$EXT") - echo "member=$BASE" >> $GITHUB_OUTPUT - fi - - # Process deleted files - convert to space-separated list of members - if [ -n "$DELETED_FILES" ]; then - DELETED_MEMBERS="" - for DFILE in $DELETED_FILES; do - DEXT="${DFILE##*.}" - DBASE=$(basename "$DFILE" ".$DEXT") - DELETED_MEMBERS="$DELETED_MEMBERS $DBASE" - done - echo "deleted_members=$DELETED_MEMBERS" >> $GITHUB_OUTPUT - fi + EXT="${CHANGED_FILES##*.}" + BASE=$(basename "$CHANGED_FILES" ".$EXT") + echo "member=$BASE" >> $GITHUB_OUTPUT echo "=== Debug: File detection complete ===" - - name: Delete removed members from PDS - if: ${{ steps.files.outputs.deleted_members != '' }} - run: | - echo "=== Debug: Starting deletion of removed members ===" - echo "Deleted members: ${{ steps.files.outputs.deleted_members }}" - for MEMBER in ${{ steps.files.outputs.deleted_members }}; do - echo "Deleting member: $MEMBER" - python3 delete_mvs_member.py "@05054.SRCLIB.C($MEMBER)" - done - echo "=== Debug: Deletion complete ===" - env: - MVS_BATCH_PASSWORD: ${{ vars.MVS_BATCH_PASSWORD }} - MVS_HOST: "oldcomputernerd.com" - - name: Upload to PDS and Submit JCL if: ${{ steps.files.outputs.file != '' }} run: |