Skip to content

Commit d07cc1d

Browse files
committed
Add GitHub Actions workflow for releases
This workflow triggers on tag pushes (e.g., v1.0.0). It runs tests, creates a zip archive of the project files, and then publishes a new GitHub release with the archive as an asset.
1 parent 238cbea commit d07cc1d

1 file changed

Lines changed: 90 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: Release Workflow
2+
3+
on:
4+
push:
5+
tags:
6+
- "v*.*.*" # Triggers on pushes to tags like v1.0.0, v1.0.1, etc.
7+
8+
jobs:
9+
release:
10+
name: Create GitHub Release
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
# Optional: Run tests before releasing to ensure quality
17+
- name: Set up Python
18+
uses: actions/setup-python@v4
19+
with:
20+
python-version: "3.x" # Use a general Python version for release testing
21+
- name: Install dependencies
22+
run: |
23+
python -m pip install --upgrade pip
24+
pip install -r requirements.txt
25+
- name: Run tests
26+
run: PYTHONPATH=. pytest
27+
28+
- name: Create release archive
29+
run: |
30+
# Create a directory for the release contents
31+
mkdir release-package
32+
# Copy essential files
33+
cp wlist.py release-package/
34+
cp nepali-names.txt release-package/
35+
cp README.md release-package/
36+
cp LICENSE release-package/
37+
cp Makefile release-package/
38+
cp requirements.txt release-package/
39+
# Zip the contents
40+
zip -r "wordlist-toolkit-${{ github.ref_name }}.zip" release-package/
41+
42+
- name: Generate Comprehensive Wordlist
43+
id: generate_wordlist
44+
run: |
45+
python3 wlist.py generate \
46+
--capitalize \
47+
--add-numbers 1-9999 \
48+
--add-years \
49+
--add-common-suffixes \
50+
--out complete_generated_wordlist.txt
51+
zip complete-wordlist.zip complete_generated_wordlist.txt
52+
53+
- name: Create Release
54+
id: create_release
55+
uses: actions/create-release@v1
56+
env:
57+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
58+
with:
59+
tag_name: ${{ github.ref }}
60+
release_name: Release ${{ github.ref }}
61+
body: |
62+
# Release Notes for ${{ github.ref }}
63+
64+
This release provides the latest version of the Wordlist Toolkit.
65+
66+
## Assets:
67+
- `wordlist-toolkit-${{ github.ref_name }}.zip`: A complete archive of the project files.
68+
- `complete-wordlist.zip`: A comprehensive wordlist generated with all possible combinations (capitalized names, numbers 1-9999, recent years, and common suffixes).
69+
draft: false
70+
prerelease: false
71+
72+
- name: Upload Main Release Archive
73+
uses: actions/upload-release-asset@v1
74+
env:
75+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
76+
with:
77+
upload_url: ${{ steps.create_release.outputs.upload_url }}
78+
asset_path: ./wordlist-toolkit-${{ github.ref_name }}.zip
79+
asset_name: wordlist-toolkit-${{ github.ref_name }}.zip
80+
asset_content_type: application/zip
81+
82+
- name: Upload Complete Wordlist Archive
83+
uses: actions/upload-release-asset@v1
84+
env:
85+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
86+
with:
87+
upload_url: ${{ steps.create_release.outputs.upload_url }}
88+
asset_path: ./complete-wordlist.zip
89+
asset_name: complete-wordlist.zip
90+
asset_content_type: application/zip

0 commit comments

Comments
 (0)