1515 runs-on : ubuntu-latest
1616 steps :
1717 - name : Checkout Repository
18- uses : actions/checkout@v4.2.2
18+ uses : actions/checkout@v4
1919 with :
2020 submodules : true
2121 fetch-depth : 0
@@ -25,16 +25,15 @@ jobs:
2525 sudo apt-get update
2626 sudo apt-get install -y jq gh
2727
28- - name : Configure GitHub CLI
28+ - name : Authenticate GitHub CLI
2929 env :
30- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
30+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
3131 run : gh auth setup-git
3232
33- - name : Delete All Releases and Tags
33+ - name : Delete All Managed Releases and Tags
3434 env :
35- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
35+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
3636 run : |
37- set -e
3837 MANAGED_TAGS=("AD-SSO-APIs-Integration" "All-Repository-Files" "BlueTeam-Tools" "Core-ScriptLibrary" "GPOs-Templates" "ITSM-Templates-SVR" "ITSM-Templates-WKS" "READMEs-Files-Package" "SysAdmin-Tools")
3938 for tag_prefix in "${MANAGED_TAGS[@]}"; do
4039 gh release list --limit 100 --json tagName | jq -r '.[].tagName' | grep "^$tag_prefix" | while read -r tag; do
@@ -63,141 +62,126 @@ jobs:
6362
6463 steps :
6564 - name : Checkout Repository
66- uses : actions/checkout@v4.2.2
65+ uses : actions/checkout@v4
6766 with :
6867 submodules : true
6968 fetch-depth : 0
7069
7170 - name : Install Dependencies
72- run : |
73- sudo apt-get update
74- sudo apt-get install -y zip jq gh
71+ run : sudo apt-get install -y zip jq gh
7572
76- - name : Configure GitHub CLI
73+ - name : Authenticate GitHub CLI
7774 env :
78- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
75+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
7976 run : gh auth setup-git
8077
8178 - name : Set Version Tag
82- id : version_tag
79+ id : tag
8380 run : echo "VERSION_TAG=${{ matrix.release_name }}-$(date +%Y%m%d)-${GITHUB_SHA::7}" >> $GITHUB_ENV
8481
85- - name : Build and Package ${{ matrix.release_name }}
82+ - name : Build and Package Artifacts
8683 env :
8784 RELEASE_NAME : ${{ matrix.release_name }}
8885 run : |
89- set -e
9086 mkdir -p artifacts
91-
9287 case "$RELEASE_NAME" in
9388 BlueTeam-Tools | Core-ScriptLibrary | ITSM-Templates-SVR | ITSM-Templates-WKS | SysAdmin-Tools)
94- cp -r "$RELEASE_NAME" "./temp-$RELEASE_NAME"
95- cp README.md "./temp-$RELEASE_NAME/" || true
96- cp LICENSE.txt "./temp-$RELEASE_NAME/" || true
97- zip -r "artifacts/$RELEASE_NAME.zip" "temp-$RELEASE_NAME"
98- rm -rf "temp-$RELEASE_NAME"
89+ cp -r "$RELEASE_NAME" "./temp"
90+ cp README.md LICENSE.txt temp/ || true
91+ zip -r "artifacts/$RELEASE_NAME.zip" temp
92+ rm -rf temp
9993 ;;
10094
10195 GPOs-Templates)
102- mkdir -p GPOs-Templates
103- cp -r SysAdmin-Tools/GroupPolicyObjects-Templates/* GPOs-Templates /
104- cp SysAdmin-Tools/ActiveDirectory-Management/Export-n-Import-GPOsTool.ps1 GPOs-Templates /
105- cp README.md LICENSE.txt GPOs-Templates / || true
106- zip -r artifacts/GPOs-Templates .zip GPOs-Templates
107- rm -rf GPOs-Templates
96+ mkdir -p temp
97+ cp -r SysAdmin-Tools/GroupPolicyObjects-Templates/* temp /
98+ cp SysAdmin-Tools/ActiveDirectory-Management/Export-n-Import-GPOsTool.ps1 temp /
99+ cp README.md LICENSE.txt temp / || true
100+ zip -r " artifacts/$RELEASE_NAME .zip" temp
101+ rm -rf temp
108102 ;;
109103
110104 READMEs-Files-Package)
111- mkdir -p READMEs-Files-Package
112- cp README.md READMEs-Files-Package /main-README.md || true
105+ mkdir -p temp
106+ cp README.md temp /main-README.md || true
113107 find . -type f -iname "README.md" ! -path "./README.md" | while read -r file; do
114108 repo_dir=$(dirname "$file")
115109 repo_name=$(basename "$repo_dir")
116- cp "$file" "READMEs-Files-Package /${repo_name}-README.md"
110+ cp "$file" "temp /${repo_name}-README.md"
117111 done
118- zip -r artifacts/READMEs-Files-Package .zip READMEs-Files-Package
119- rm -rf READMEs-Files-Package
112+ zip -r " artifacts/$RELEASE_NAME .zip" temp
113+ rm -rf temp
120114 ;;
121115
122116 All-Repository-Files)
123- mkdir -p All-Repository-Files
117+ mkdir -p temp
124118 for dir in BlueTeam-Tools Core-ScriptLibrary ITSM-Templates-SVR ITSM-Templates-WKS SysAdmin-Tools; do
125- cp -r "$dir" All-Repository-Files /
119+ cp -r "$dir" temp /
126120 done
127- cp README.md All-Repository-Files/ || true
128- cp LICENSE.txt All-Repository-Files/ || true
129- zip -r artifacts/All-Repository-Files.zip All-Repository-Files
130- rm -rf All-Repository-Files
121+ cp README.md LICENSE.txt temp/ || true
122+ zip -r "artifacts/$RELEASE_NAME.zip" temp
123+ rm -rf temp
131124 ;;
132125
133126 AD-SSO-APIs-Integration)
134- mkdir -p AD-SSO-APIs-Integration
135- cp -r SysAdmin-Tools/ActiveDirectory-SSO-Integrations/* AD-SSO-APIs-Integration /
136- zip -r artifacts/AD-SSO-APIs-Integration .zip AD-SSO-APIs-Integration
137- rm -rf AD-SSO-APIs-Integration
127+ mkdir -p temp
128+ cp -r SysAdmin-Tools/ActiveDirectory-SSO-Integrations/* temp /
129+ zip -r " artifacts/$RELEASE_NAME .zip" temp
130+ rm -rf temp
138131 ;;
139132 esac
140133
141- - name : Generate SHA256 Signature
134+ - name : Generate SHA256 Checksum
142135 run : sha256sum "artifacts/${{ matrix.release_name }}.zip" > "artifacts/${{ matrix.release_name }}.sha256.txt"
143136
144- - name : Extract Release Notes and Create Release
145- env :
146- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
137+ - name : Extract Changelog for ${{ matrix.release_name }}
138+ id : changelog
147139 run : |
148- set -e
149-
150- tag="## ${{ matrix.release_name }}"
151- awk -v tag="$tag" '
152- $0 == tag {found=1; next}
140+ section="## ${{ matrix.release_name }}"
141+ body=$(awk -v section="$section" '
142+ $0 == section {found=1; next}
153143 /^## / && found {exit}
154144 found {print}
155- ' CHANGELOG.md > extracted-changelog.md
156-
157- if [ ! -s extracted-changelog.md ]; then
158- echo "No changelog available." > extracted-changelog.md
159- fi
160-
161- echo "--- Extracted Notes ---"
162- cat extracted-changelog.md
163- echo "-----------------------"
145+ ' CHANGELOG.md)
164146
165- gh release create "$VERSION_TAG" \
166- --title "$VERSION_TAG" \
167- --notes-file extracted-changelog.md \
168- --target "$GITHUB_SHA" \
169- --latest
147+ echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
148+ echo "${body:-No changelog available.}" >> $GITHUB_ENV
149+ echo "EOF" >> $GITHUB_ENV
170150
171- - name : Fetch Release Upload URL
172- id : fetch_url
151+ - name : Create GitHub Release
152+ id : create_release
153+ uses : softprops/action-gh-release@v1
154+ with :
155+ tag_name : ${{ env.VERSION_TAG }}
156+ name : ${{ env.VERSION_TAG }}
157+ body : ${{ env.RELEASE_BODY }}
158+ draft : false
159+ prerelease : false
173160 env :
174- GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
175- run : |
176- url=$(gh api repos/${{ github.repository }}/releases/tags/$VERSION_TAG --jq '.upload_url')
177- echo "upload_url=$url" >> $GITHUB_OUTPUT
161+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
178162
179- - name : Upload Release Zip
163+ - name : Upload .zip Artifact
180164 uses : actions/upload-release-asset@v1
181165 with :
182- upload_url : ${{ steps.fetch_url .outputs.upload_url }}
166+ upload_url : ${{ steps.create_release .outputs.upload_url }}
183167 asset_path : artifacts/${{ matrix.release_name }}.zip
184168 asset_name : ${{ matrix.release_name }}.zip
185169 asset_content_type : application/zip
186170 env :
187171 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
188172
189- - name : Upload SHA256 Checksum
173+ - name : Upload .sha256 Checksum
190174 uses : actions/upload-release-asset@v1
191175 with :
192- upload_url : ${{ steps.fetch_url .outputs.upload_url }}
176+ upload_url : ${{ steps.create_release .outputs.upload_url }}
193177 asset_path : artifacts/${{ matrix.release_name }}.sha256.txt
194178 asset_name : ${{ matrix.release_name }}.sha256.txt
195179 asset_content_type : text/plain
196180 env :
197181 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
198182
199- - name : Upload Artifact Archive (for GitHub Actions Record)
183+ - name : Upload Artifact to Actions
200184 uses : actions/upload-artifact@v4
201185 with :
202- name : artifacts -${{ matrix.release_name }}
186+ name : release -${{ matrix.release_name }}
203187 path : artifacts/${{ matrix.release_name }}.zip
0 commit comments