From ddd04dac7f768ce8447e215fc15e1f2710cb9378 Mon Sep 17 00:00:00 2001 From: epi <43392618+epi052@users.noreply.github.com> Date: Sat, 13 Dec 2025 09:17:21 -0500 Subject: [PATCH] Revert workflow changes --- .github/workflows/cicd-to-dockerhub.yml | 26 -- .github/workflows/release.yml | 310 ------------------------ .github/workflows/winget.yml | 21 ++ Makefile.toml | 8 - snapcraft.yaml | 5 +- 5 files changed, 23 insertions(+), 347 deletions(-) delete mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/winget.yml diff --git a/.github/workflows/cicd-to-dockerhub.yml b/.github/workflows/cicd-to-dockerhub.yml index 7de55f9..dd6d00f 100644 --- a/.github/workflows/cicd-to-dockerhub.yml +++ b/.github/workflows/cicd-to-dockerhub.yml @@ -32,29 +32,3 @@ jobs: - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} - - - name: Verify pushed image - run: | - # Wait a moment for the image to be available - sleep 5 - - # Pull the image we just pushed - docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/feroxbuster:latest - - # Get the digest of the pulled image - PULLED_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ${{ secrets.DOCKER_HUB_USERNAME }}/feroxbuster:latest | cut -d'@' -f2) - PUSHED_DIGEST="${{ steps.docker_build.outputs.digest }}" - - echo "Pushed digest: $PUSHED_DIGEST" - echo "Pulled digest: $PULLED_DIGEST" - - # Verify they match - if [ "$PULLED_DIGEST" = "$PUSHED_DIGEST" ]; then - echo "✓ Verification successful: Pulled image matches pushed image" - - # Test that the binary works - docker run --rm ${{ secrets.DOCKER_HUB_USERNAME }}/feroxbuster:latest --version - else - echo "✗ Verification failed: Digests do not match" - exit 1 - fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index acbc501..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,310 +0,0 @@ -name: Release - -on: - push: - tags: - - 'v*.*.*' - -permissions: - contents: write - -jobs: - create-release: - name: Create GitHub Release - runs-on: ubuntu-latest - outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} - version: ${{ steps.get_version.outputs.version }} - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Get version from tag - id: get_version - run: echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - - - name: Generate changelog - id: changelog - run: | - # Get previous tag - PREV_TAG=$(git describe --abbrev=0 --tags HEAD^ 2>/dev/null || echo "") - - if [ -z "$PREV_TAG" ]; then - # First release, get all commits - CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges) - else - # Get commits since previous tag - CHANGELOG=$(git log ${PREV_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges) - fi - - # Create changelog file - { - echo "## What's Changed" - echo "" - echo "$CHANGELOG" - echo "" - echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${PREV_TAG}...${GITHUB_REF_NAME}" - } > CHANGELOG.md - - cat CHANGELOG.md - - - name: Create Release - id: create_release - uses: softprops/action-gh-release@v2 - with: - body_path: CHANGELOG.md - draft: false - prerelease: false - - download-and-upload-artifacts: - name: Download & Upload Release Assets - needs: create-release - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Get latest CD Pipeline run - id: get_run - run: | - # Get the latest successful CD Pipeline run for main branch - RUN_ID=$(gh run list --workflow="CD Pipeline" --branch=main --status=success --limit=1 --json databaseId --jq='.[0].databaseId') - echo "run_id=$RUN_ID" >> $GITHUB_OUTPUT - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Download all artifacts - uses: actions/download-artifact@v4 - with: - path: artifacts - run-id: ${{ steps.get_run.outputs.run_id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - - - name: Display structure of downloaded files - run: ls -R artifacts/ - - - name: Prepare release assets - id: prepare - run: | - mkdir -p release-assets - cd artifacts - - # Process Linux x86_64 binary - create tar.gz - if [ -d "x86_64-linux-feroxbuster" ]; then - tar czf ../release-assets/x86_64-linux-feroxbuster.tar.gz -C x86_64-linux-feroxbuster feroxbuster - fi - - # Process Linux x86 binary - create tar.gz - if [ -d "x86-linux-feroxbuster" ]; then - tar czf ../release-assets/x86-linux-feroxbuster.tar.gz -C x86-linux-feroxbuster feroxbuster - fi - - # Process ARM binaries - create tar.gz - if [ -d "armv7-linux-feroxbuster" ]; then - tar czf ../release-assets/armv7-linux-feroxbuster.tar.gz -C armv7-linux-feroxbuster feroxbuster - fi - - if [ -d "aarch64-linux-feroxbuster" ]; then - tar czf ../release-assets/aarch64-linux-feroxbuster.tar.gz -C aarch64-linux-feroxbuster feroxbuster - fi - - # Copy macOS tar.gz files (already compressed) - if [ -f "x86_64-macos-feroxbuster.tar.gz/x86_64-macos-feroxbuster.tar.gz" ]; then - cp x86_64-macos-feroxbuster.tar.gz/x86_64-macos-feroxbuster.tar.gz ../release-assets/ - fi - - if [ -f "aarch64-macos-feroxbuster.tar.gz/aarch64-macos-feroxbuster.tar.gz" ]; then - cp aarch64-macos-feroxbuster.tar.gz/aarch64-macos-feroxbuster.tar.gz ../release-assets/ - fi - - # Copy Windows executables - create zip files - if [ -d "x86_64-windows-feroxbuster.exe" ]; then - cd x86_64-windows-feroxbuster.exe - zip ../../release-assets/x86_64-windows-feroxbuster.zip feroxbuster.exe - cd .. - fi - - if [ -d "x86-windows-feroxbuster.exe" ]; then - cd x86-windows-feroxbuster.exe - zip ../../release-assets/x86-windows-feroxbuster.zip feroxbuster.exe - cd .. - fi - - # Copy .deb file - if [ -d "feroxbuster_amd64.deb" ]; then - cp feroxbuster_amd64.deb/*.deb ../release-assets/ || true - fi - - cd .. - - # Generate SHA256 checksums - cd release-assets - sha256sum * > SHA256SUMS - cat SHA256SUMS - - # Extract specific hashes for homebrew - LINUX_HASH=$(grep "x86_64-linux-feroxbuster.tar.gz" SHA256SUMS | awk '{print $1}') - MACOS_X64_HASH=$(grep "x86_64-macos-feroxbuster.tar.gz" SHA256SUMS | awk '{print $1}') - MACOS_ARM_HASH=$(grep "aarch64-macos-feroxbuster.tar.gz" SHA256SUMS | awk '{print $1}') - - echo "linux_hash=$LINUX_HASH" >> $GITHUB_OUTPUT - echo "macos_x64_hash=$MACOS_X64_HASH" >> $GITHUB_OUTPUT - echo "macos_arm_hash=$MACOS_ARM_HASH" >> $GITHUB_OUTPUT - - - name: Upload Release Assets - uses: softprops/action-gh-release@v2 - with: - files: release-assets/* - - publish-crates-io: - name: Publish to crates.io - needs: create-release - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - - - name: Publish to crates.io - env: - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo publish - - update-homebrew: - name: Update Homebrew Taps - needs: [create-release, download-and-upload-artifacts] - runs-on: ubuntu-latest - steps: - - name: Checkout TGotwig's homebrew-linux-feroxbuster - uses: actions/checkout@v4 - with: - repository: TGotwig/homebrew-linux-feroxbuster - token: ${{ secrets.HOMEBREW_TAP_TOKEN }} - path: homebrew-linux - - - name: Update Linux formula - run: | - cd homebrew-linux - VERSION="${{ needs.create-release.outputs.version }}" - HASH="${{ needs.download-and-upload-artifacts.outputs.linux_hash }}" - - # Update version and hash in formula - sed -i "s|url \"https://github.com/epi052/feroxbuster/releases/download/v[^/]*/x86_64-linux-feroxbuster.tar.gz\"|url \"https://github.com/epi052/feroxbuster/releases/download/v${VERSION}/x86_64-linux-feroxbuster.tar.gz\"|g" feroxbuster.rb - sed -i "s/sha256 \"[^\"]*\"/sha256 \"${HASH}\"/g" feroxbuster.rb - - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add feroxbuster.rb - git commit -m "Update feroxbuster to v${VERSION}" || echo "No changes to commit" - git push - - - name: Checkout feroxbuster main repo to get config - uses: actions/checkout@v4 - with: - path: feroxbuster-src - - - name: Check if config changed - id: config_check - run: | - cd feroxbuster-src - CONFIG_HASH=$(sha256sum ferox-config.toml.example | awk '{print $1}') - echo "config_hash=$CONFIG_HASH" >> $GITHUB_OUTPUT - - # Check if config changed since last tag - PREV_TAG=$(git describe --abbrev=0 --tags HEAD^ 2>/dev/null || echo "") - if [ -n "$PREV_TAG" ]; then - if git diff ${PREV_TAG}..HEAD --quiet -- ferox-config.toml.example; then - echo "config_changed=false" >> $GITHUB_OUTPUT - else - echo "config_changed=true" >> $GITHUB_OUTPUT - fi - else - echo "config_changed=true" >> $GITHUB_OUTPUT - fi - - - name: Update config hash in homebrew if changed - if: steps.config_check.outputs.config_changed == 'true' - run: | - cd homebrew-linux - CONFIG_HASH="${{ steps.config_check.outputs.config_hash }}" - - # Update config hash if it exists in formula - if grep -q "ferox-config.toml.example" feroxbuster.rb; then - sed -i "s/sha256 \"[^\"]*\" # ferox-config.toml.example/sha256 \"${CONFIG_HASH}\" # ferox-config.toml.example/g" feroxbuster.rb - - git add feroxbuster.rb - git commit -m "Update ferox-config.toml.example hash" || echo "No changes to commit" - git push - fi - - publish-winget: - name: Publish to Winget - needs: [create-release, download-and-upload-artifacts] - runs-on: ubuntu-latest - steps: - - uses: vedantmgoyal2009/winget-releaser@main - with: - identifier: epi052.feroxbuster - installers-regex: '-windows-feroxbuster\.exe\.zip$' - token: ${{ secrets.WINGET_TOKEN }} - release-tag: v${{ needs.create-release.outputs.version }} - - publish-snapcraft: - name: Publish to Snapcraft - needs: [create-release, download-and-upload-artifacts] - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Publish to Snapcraft - uses: snapcore/action-publish@v1 - env: - SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_TOKEN }} - with: - snap: feroxbuster - release: stable - - manual-steps-reminder: - name: Manual Steps Reminder - needs: [create-release, download-and-upload-artifacts] - runs-on: ubuntu-latest - steps: - - name: Create comment with manual steps - uses: actions/github-script@v7 - with: - script: | - const version = '${{ needs.create-release.outputs.version }}'; - const linuxHash = '${{ needs.download-and-upload-artifacts.outputs.linux_hash }}'; - - const body = `## 🚀 Release v${version} Published! - - ### ✅ Automated Steps Completed - - [x] GitHub Release created with changelog - - [x] All artifacts uploaded with SHA256 checksums - - [x] Published to crates.io - - [x] Homebrew tap updated - - [x] Winget package published - - [x] Snapcraft published to stable - - ### 📋 Manual Steps Required - - 1. **Kali Linux** - - Go to https://bugs.kali.org/login_page.php?return=%2Fmy_view_page.php - - Request a tool update - - 3. **Announcement** (optional) - - Tweet about the release if it's significant! - - 2. **Announcement** (optional) - - Linux x86_64: \`${linuxHash}\` - - See full checksums in release assets: SHA256SUMS - `; - - github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: body - }); diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml new file mode 100644 index 0000000..d746543 --- /dev/null +++ b/.github/workflows/winget.yml @@ -0,0 +1,21 @@ +name: Publish to Winget +on: + release: + types: [released] + workflow_dispatch: + inputs: + tag_name: + description: 'Tag name of release' + required: true + type: string + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: vedantmgoyal2009/winget-releaser@main + with: + identifier: epi052.feroxbuster + installers-regex: '-windows-feroxbuster\.exe\.zip$' + token: ${{ secrets.WINGET_TOKEN }} + release-tag: ${{ inputs.tag_name || github.event.release.tag_name || github.ref_name }} diff --git a/Makefile.toml b/Makefile.toml index 93d951e..c38bb8d 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -50,12 +50,4 @@ condition = { env_not_set = ["CI"] } clear = true script = """ cargo nextest run --all-features --all-targets --no-fail-fast --run-ignored all --retries 4 -""" - -# coverage -[tasks.coverage] -clear = true -script = """ -cargo llvm-cov nextest --all-features --no-fail-fast --retries 4 --html -echo "Coverage report generated at target/llvm-cov/html/index.html" """ \ No newline at end of file diff --git a/snapcraft.yaml b/snapcraft.yaml index 871100f..2480045 100644 --- a/snapcraft.yaml +++ b/snapcraft.yaml @@ -10,9 +10,8 @@ description: | This attack is also known as Predictable Resource Location, File Enumeration, Directory Enumeration, and Resource Enumeration. -confinement: strict -grade: stable -base: core22 + +base: core18 plugs: etc-feroxbuster: