Skip to content

Commit

Permalink
Edited: flake8.yml, pytest.yml. Created: create_release.yml, scripts …
Browse files Browse the repository at this point in the history
…for GH Actions.
  • Loading branch information
enexety committed Aug 24, 2023
1 parent 9d4a468 commit 464a710
Show file tree
Hide file tree
Showing 6 changed files with 239 additions and 60 deletions.
58 changes: 58 additions & 0 deletions .github/workflows/create_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Upload Release Asset

on:
push:
branches:
- master
workflow_run:
workflows:
- "tests.yml"
types:
- completed

jobs:
build-project:
name: Upload Release Asset
runs-on: windows-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install requests
- name: Build zip file
run: scripts/build_zip_file.py

- name: Create Release
id: create_release
run: |
scripts/create_release.py || exit 1
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}

- name: Display Response Status Code
run:
echo "Status Code from Python Script: ${{ steps.your_script.outputs.status_code }}"
if: always() # Это позволит выполнить этот шаг даже при ошибке в предыдущем

# - name: Create and Upload Release Asset
# id: upload-release-asset
# uses: actions/upload-release-asset@v1
# env:
# GITHUB_TOKEN: ${{ secrets.TOKEN }}
# UPLOAD_URL: ${{ steps.create_release.outputs.upload_url }}
# with:
# upload_url: ${{ env.UPLOAD_URL }}
# asset_path: ./Overwatch Rank Tracker.zip
# asset_name: Overwatch Rank Tracker.zip
# asset_content_type: application/zip
30 changes: 0 additions & 30 deletions .github/workflows/flake8.yml

This file was deleted.

30 changes: 0 additions & 30 deletions .github/workflows/pytest.yml

This file was deleted.

51 changes: 51 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Tests

on:
push:
branches:
- master

jobs:
linters:
name: Run Flake8
runs-on: windows-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install flake8
- name: Run Flake8
run: flake8 --config config.flake8 || exit 1

pytest:
name: Run Pytest
runs-on: windows-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.9

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest
- name: Run Pytest
run: pytest || exit 1
29 changes: 29 additions & 0 deletions scripts/build_zip_file.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import os
import shutil
import subprocess

temporarily_folder_name = "Overwatch Rank Tracker"

os.chdir("..")

# paths
project_path = os.getcwd()
dist_path = os.path.join(project_path, "dist")
zip_file_path = os.path.join(project_path, "Overwatch_Rank_Tracker.zip")
temporary_folder = os.path.join(project_path, temporarily_folder_name)

# there is an old archive - delete it
if os.path.exists(zip_file_path):
os.remove(zip_file_path)

# executing the pyinstaller command to create an exe file inside the dist folder
subprocess.run(["pyinstaller", "Overwatch Rank Tracker.spec"])

# make a duplicate of the dist folder to create an archive with a folder with the desired name Overwatch Rank Tracker inside it
shutil.copytree(dist_path, temporarily_folder_name)

# creating archive
shutil.make_archive(temporary_folder, "zip")

# deleting the "Overwatch Rank Tracker" temporary folder
shutil.rmtree(temporary_folder)
101 changes: 101 additions & 0 deletions scripts/create_release.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
import subprocess
import requests


def increment_version(tag):
"""Version Increase
Example: v0.0.1 > v0.0.2"""

tag = tag[1:]
parts = tag.split('.')
major = int(parts[0])
minor = int(parts[1])
patch = int(parts[2])

if patch < 9:
patch += 1
elif minor < 9:
minor += 1
patch = 0
else:
major += 1
minor = 0
patch = 0

new_version = f"v{major}.{minor}.{patch}"
return new_version


def generate_release_description(tag: str):
"""Takes the message of the last commit and edits it to fit the Release description"""

# getting the name of the last commit
command = ["git", "log", "-1", "--pretty=format:%s"]
last_commit_message = subprocess.check_output(command, stderr=subprocess.STDOUT).decode("utf-8").strip().split(". ")

changes_formatted = "\n".join(f"> * {change.strip('.')}." for change in last_commit_message)
description = f"> **{tag}**:\n>\n{changes_formatted}\n>\n> Download below"
return description


# datas
owner = 'enexety'
repo = 'Overwatch_Rank_Tracker'
# github_token = os.environ.get('TOKEN')
github_token = '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'
headers = {
"Authorization": f"Bearer {github_token}"
}

# urls
create_release_url = f"https://api.github.com/repos/{owner}/{repo}/releases"
get_tag_url = f"https://api.github.com/repos/{owner}/{repo}/tags"


# get new-next tag
response_get_last_tag = requests.get(url=get_tag_url, headers=headers)
# if response_get_last_tag.status_code == 200:
# tags = response_get_last_tag.json()
# latest_tag = tags[0]['name']
# new_tag = increment_version(tag=latest_tag)
#
# # create release
# data = {
# "owner": owner,
# "repo": repo,
# "tag_name": new_tag
# }
# response = requests.post(url=create_release_url, json=data, headers=headers)
#
# # was created
# if response.status_code == 201:
#
# # get the upload_url from the response
# upload_url = response.json()["upload_url"]
#
# # get the id of the created release
# release_id = response.json()["id"]
#
# # describe this release
# update_data = {"body": generate_release_description(tag=new_tag)}
# update_release_url = f"https://api.github.com/repos/{owner}/{repo}/releases/{release_id}"
# requests.patch(update_release_url, json=update_data, headers=headers)
#
# # create release title
# edit_release_url = f"https://api.github.com/repos/{owner}/{repo}/releases/{release_id}"
# inf = {
# "name": new_tag
# }
# headers_release_title = {
# "Authorization": f"Bearer {github_token}",
# "Accept": "application/vnd.github.v3+json"
# }
# response_release_title = requests.patch(edit_release_url, json=inf, headers=headers_release_title)
# if response_release_title.status_code != 200:
# raise Exception(f"Response when changing release title - {response_release_title.status_code}")
#
# else:
# raise Exception(f"Response to get latest tag - {response.status_code}")
#
# else:
# raise Exception(f"Response to get latest tag - {response_get_last_tag.status_code}")

0 comments on commit 464a710

Please sign in to comment.