From 14eb7776dd80b2bc58196b35ecdd19bfa4a5a75c Mon Sep 17 00:00:00 2001 From: Ewy Date: Sun, 3 Mar 2024 13:40:16 +0100 Subject: [PATCH] feat: testing new build pipeline --- .github/workflows/main.yml | 118 +++++++++++++++++++++++++------------ assets/images/fish.icns | Bin 0 -> 15756 bytes 2 files changed, 79 insertions(+), 39 deletions(-) create mode 100644 assets/images/fish.icns diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0eac650..a454070 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,43 +1,83 @@ -name: Build with PyInstaller +name: Build on: - push: - branches: - - master - pull_request: - branches: - - master + push: + tags: + - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: - build: - name: Build on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [windows-latest, macos-latest, ubuntu-latest] - python-version: [3.11] - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - - - name: Build with PyInstaller - run: | - pyinstaller --onefile --name counter_phisher --i assets/images/fish.ico counter_phisher.py - - - name: Upload artifact - uses: actions/upload-artifact@v2 - with: - name: counter_phisher-${{ matrix.os }}-py${{ matrix.python-version }} - path: dist/ + + createrelease: + name: Create Release + runs-on: [ ubuntu-latest ] + steps: + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + draft: false + prerelease: false + - name: Output Release URL File + run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt + - name: Save Release URL File for publish + uses: actions/upload-artifact@v1 + with: + name: release_url + path: release_url.txt + + build: + name: Build packages + needs: createrelease + runs-on: ${{ matrix.os }} + strategy: + matrix: + include: + - os: macos-latest + TARGET: macos + CMD_BUILD: > + pyinstaller -F -w -n counterphisher -i assets/images/fish.icns cli.py && + cd dist/ && + zip -r9 counterphisher counterphisher.app/ + OUT_FILE_NAME: counterphisher.zip + ASSET_MIME: application/zip + - os: windows-latest + TARGET: windows + CMD_BUILD: pyinstaller -F -w -n counterphisher -i assets/images/fish.ico cli.py + OUT_FILE_NAME: counterphisher.exe + ASSET_MIME: application/vnd.microsoft.portable-executable + steps: + - uses: actions/checkout@v1 + - name: Set up Python 3.11 + uses: actions/setup-python@v2 + with: + python-version: 3.11 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Build with pyinstaller for ${{matrix.TARGET}} + run: ${{matrix.CMD_BUILD}} + - name: Load Release URL File from release job + uses: actions/download-artifact@v1 + with: + name: release_url + - name: Get Release File Name & Upload URL + id: get_release_info + shell: bash + run: | + value=`cat release_url/release_url.txt` + echo ::set-output name=upload_url::$value + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ./dist/${{ matrix.OUT_FILE_NAME}} + asset_name: ${{ matrix.OUT_FILE_NAME}} + asset_content_type: ${{ matrix.ASSET_MIME}} \ No newline at end of file diff --git a/assets/images/fish.icns b/assets/images/fish.icns new file mode 100644 index 0000000000000000000000000000000000000000..274457a1e8b79edf31842f4bc5734587407c5d1a GIT binary patch literal 15756 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 C+z)O5 literal 0 HcmV?d00001