Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build CLI (Windows x32, x64) | |
on: | |
pull_request: | |
branches: | |
- master | |
jobs: | |
build-pornfetch-cli-windows-x64: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Python 3.11 x64 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.11 | |
architecture: x64 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
pip install -r requirements_cli.txt | |
- name: Build Porn Fetch (CLI - Windows - X64) (PyInstaller) | |
run: | | |
pyinstaller -F Porn_Fetch_CLI.py && cd dist && mv Porn_Fetch_CLI.exe PornFetch_Windows_CLI_x64.exe | |
- name: Archive Porn Fetch CLI (Windows X64) build | |
uses: actions/upload-artifact@v2 | |
with: | |
name: PornFetch_Windows_CLI_x64 | |
path: dist/PornFetch_Windows_CLI_x64.exe | |
build-pornfetch-cli-windows-x32: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up Python 3.11 x32 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.11 | |
architecture: x86 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
pip install -r requirements_cli.txt | |
- name: Build Porn Fetch (CLI - Windows - X32) (PyInstaller) | |
run: | | |
pyinstaller -F Porn_Fetch_CLI.py && cd dist && mv Porn_Fetch_CLI.exe PornFetch_Windows_CLI_x32.exe | |
- name: Archive Porn Fetch CLI (Windows X32) build | |
uses: actions/upload-artifact@v2 | |
with: | |
name: PornFetch_Windows_CLI_x32 | |
path: dist/PornFetch_Windows_CLI_x32.exe | |
create-release: | |
needs: [build-pornfetch-cli-windows-x64, build-pornfetch-cli-windows-x32] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Install gh CLI | |
run: | | |
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg | |
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg | |
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null | |
sudo apt update | |
sudo apt install gh -y | |
- name: Download Windows x64 artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: PornFetch_Windows_CLI_x64 | |
path: ./artifacts | |
- name: Download Windows x32 artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: PornFetch_Windows_CLI_x32 | |
path: ./artifacts | |
- name: List artifacts directory | |
run: ls -R ./artifacts | |
- name: Get short SHA | |
id: vars | |
run: echo "GITHUB_SHA_SHORT=$(echo $GITHUB_SHA | cut -c1-7)" >> $GITHUB_ENV | |
- name: Verify PAT | |
run: | | |
curl -H "Authorization: token ${{ secrets.PAT }}" https://api.github.com/user | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
- name: Check if Release Exists | |
id: check_release | |
run: | | |
if gh release view v${{ secrets.VERSION }}-automated-${{ env.GITHUB_SHA_SHORT }} >/dev/null 2>&1; then | |
echo "RELEASE_EXISTS=true" >> $GITHUB_ENV | |
echo "::set-output name=release_exists::true" | |
else | |
echo "RELEASE_EXISTS=false" >> $GITHUB_ENV | |
echo "::set-output name=release_exists::false" | |
fi | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
- name: Calculate SHA512 for Windows x64 | |
id: sha512_windows_x64 | |
run: | | |
sha512sum ./artifacts/PornFetch_Windows_CLI_x64.exe | awk '{ print $1 }' > sha512_windows_x64.txt | |
echo "sha512_windows_x64=$(cat sha512_windows_x64.txt)" >> $GITHUB_ENV | |
- name: Calculate SHA512 for Windows x32 | |
id: sha512_windows_x32 | |
run: | | |
sha512sum ./artifacts/PornFetch_Windows_CLI_x32.exe | awk '{ print $1 }' > sha512_windows_x32.txt | |
echo "sha512_windows_x32=$(cat sha512_windows_x32.txt)" >> $GITHUB_ENV | |
- name: Create GitHub Release | |
id: create_release | |
if: steps.check_release.outputs.release_exists == 'false' | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
SHA512_WINDOWS_X64: ${{ env.sha512_windows_x64 }} | |
SHA512_WINDOWS_X32: ${{ env.sha512_windows_x32 }} | |
with: | |
tag_name: v${{ secrets.VERSION }}-automated-${{ env.GITHUB_SHA_SHORT }} | |
release_name: Automated Release v${{ secrets.VERSION }}-${{ env.GITHUB_SHA_SHORT }} | |
body: | | |
This is an automated release generated by the CI/CD pipeline. | |
SHA512 Checksums: | |
- PornFetch_Windows_CLI_x64: ${{ env.SHA512_WINDOWS_X64 }} | |
- PornFetch_Windows_CLI_x32: ${{ env.SHA512_WINDOWS_X32 }} | |
draft: false | |
prerelease: true | |
- name: Get current release body | |
id: get_release_body | |
run: | | |
gh release view v${{ secrets.VERSION }}-automated-${{ env.GITHUB_SHA_SHORT }} --json body --jq .body > current_body.txt || echo "" > current_body.txt | |
- name: Append new SHA512 hash to release body | |
id: append_release_body | |
run: | | |
echo -e "$(cat current_body.txt)\n- PornFetch_Windows_CLI_x64: ${{ env.sha512_windows_x64 }}\n- PornFetch_Windows_CLI_x32: ${{ env.sha512_windows_x32 }}" > new_body.txt | |
- name: Update GitHub release | |
run: | | |
gh release edit v${{ secrets.VERSION }}-automated-${{ env.GITHUB_SHA_SHORT }} --notes "$(cat new_body.txt)" | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
shell: bash | |
- name: Get Release Upload URL | |
id: get_release_url | |
run: | | |
UPLOAD_URL=$(gh release view v${{ secrets.VERSION }}-automated-${{ env.GITHUB_SHA_SHORT }} --json uploadUrl --jq .uploadUrl) | |
echo "UPLOAD_URL=$UPLOAD_URL" >> $GITHUB_ENV | |
echo "::set-output name=upload_url::$UPLOAD_URL" | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
shell: bash | |
- name: Upload Windows x64 artifact to release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
with: | |
upload_url: ${{ steps.get_release_url.outputs.upload_url }} | |
asset_path: ./artifacts/PornFetch_Windows_CLI_x64.exe | |
asset_name: PornFetch_Windows_CLI_x64.exe | |
asset_content_type: application/octet-stream | |
- name: Upload Windows x32 artifact to release | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
with: | |
upload_url: ${{ steps.get_release_url.outputs.upload_url }} | |
asset_path: ./artifacts/PornFetch_Windows_CLI_x32.exe | |
asset_name: PornFetch_Windows_CLI_x32.exe | |
asset_content_type: application/octet-stream |