Prepare for release
This commit is contained in:
61
.github/workflows/ci.yml
vendored
61
.github/workflows/ci.yml
vendored
@@ -68,3 +68,64 @@ jobs:
|
||||
with:
|
||||
name: binaries-${{ matrix.os-name }}
|
||||
path: ../artifact
|
||||
|
||||
# Install & Preparing Release
|
||||
# Set up environment
|
||||
# Local Prepare Release action
|
||||
install-prepare-release:
|
||||
name: Install/Prepare Release
|
||||
# cycle through os list
|
||||
runs-on: ${{ matrix.os-name }}
|
||||
|
||||
# VM settings
|
||||
# os & python versions
|
||||
strategy:
|
||||
matrix:
|
||||
# install/release on not xenial
|
||||
os-name: [ ubuntu-latest, macOS-latest, windows-latest ]
|
||||
python-version: [ 3.7 ]
|
||||
|
||||
needs: [ install-build ]
|
||||
steps:
|
||||
# checkout commit
|
||||
- name: Checkout commit
|
||||
uses: actions/checkout@v1
|
||||
# install python
|
||||
- name: Install Python
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
architecture: "x64"
|
||||
- run: |
|
||||
python --version
|
||||
# install dependencies via pip
|
||||
- name: Install Dependencies via pip
|
||||
env:
|
||||
OS_NAME: ${{ matrix.os-name }}
|
||||
run: |
|
||||
python ./resources/ci/common/install.py
|
||||
# download binary artifact
|
||||
- name: Download Binary Artifact
|
||||
uses: actions/download-artifact@v1
|
||||
with:
|
||||
name: binary-${{ matrix.os-name }}
|
||||
path: ./
|
||||
# Prepare AppVersion & Release
|
||||
- name: Prepare AppVersion & Release
|
||||
env:
|
||||
OS_NAME: ${{ matrix.os-name }}
|
||||
run: |
|
||||
# python ./resources/ci/common/prepare_appversion.py
|
||||
python ./resources/ci/common/prepare_release.py
|
||||
# upload appversion artifact for later step
|
||||
# - name: Upload AppVersion Artifact
|
||||
# uses: actions/upload-artifact@v1
|
||||
# with:
|
||||
# name: appversion-${{ matrix.os-name }}
|
||||
# path: ./resources/app/meta/manifests/app_version.txt
|
||||
# upload archive artifact for later step
|
||||
- name: Upload Archive Artifact
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: archive-${{ matrix.os-name }}
|
||||
path: ../deploy
|
||||
|
||||
14
resources/ci/common/git_clean.py
Normal file
14
resources/ci/common/git_clean.py
Normal file
@@ -0,0 +1,14 @@
|
||||
import subprocess # do stuff at the shell level
|
||||
|
||||
def git_clean():
|
||||
# clean the git slate
|
||||
subprocess.check_call([
|
||||
"git", # run a git command
|
||||
"clean", # clean command
|
||||
"-dfx", # d: directories, f: files, x: ignored files
|
||||
"--exclude=.vscode", # keep vscode IDE files
|
||||
"--exclude=.idea", # keep idea IDE files
|
||||
"--exclude=*.json"]) # keep JSON files for that one time I just nuked all that I was working on, oops
|
||||
|
||||
if __name__ == "__main__":
|
||||
git_clean()
|
||||
113
resources/ci/common/prepare_release.py
Normal file
113
resources/ci/common/prepare_release.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import distutils.dir_util # for copying trees
|
||||
import os # for env vars
|
||||
import stat # for file stats
|
||||
import subprocess # do stuff at the shell level
|
||||
import common
|
||||
from git_clean import git_clean
|
||||
from shutil import copy, make_archive, move, rmtree # file manipulation
|
||||
|
||||
env = common.prepare_env() # get env vars
|
||||
|
||||
# make temp dir to put binary in
|
||||
if not os.path.isdir(os.path.join("..","artifact")):
|
||||
os.mkdir(os.path.join("..","artifact"))
|
||||
|
||||
# make temp dir for other stuff
|
||||
if not os.path.isdir(os.path.join("..","build")):
|
||||
os.mkdir(os.path.join("..","build"))
|
||||
|
||||
# make dir to put the archive in
|
||||
if not os.path.isdir(os.path.join("..","deploy")):
|
||||
os.mkdir(os.path.join("..","deploy"))
|
||||
|
||||
# make dirs for each os
|
||||
for dirname in ["linux","macos","windows"]:
|
||||
if not os.path.isdir(os.path.join("..","deploy",dirname)):
|
||||
os.mkdir(os.path.join("..","deploy",dirname))
|
||||
|
||||
# sanity check permissions for working_dirs.json
|
||||
dirpath = "."
|
||||
for dirname in ["resources","user"]:
|
||||
dirpath += '/' + dirname
|
||||
os.chmod(dirpath,0o755)
|
||||
# nuke travis file if it exists
|
||||
if os.path.isfile(os.path.join(".",".travis.yml")):
|
||||
os.remove(os.path.join(".",".travis.yml"))
|
||||
# nuke test suite if it exists
|
||||
if os.path.isdir(os.path.join(".","tests")):
|
||||
distutils.dir_util.remove_tree(os.path.join(".","tests"))
|
||||
|
||||
BUILD_FILENAME = ""
|
||||
ZIP_FILENAME = ""
|
||||
|
||||
# list executables
|
||||
BUILD_FILENAME = common.find_binary(os.path.join("."))
|
||||
if BUILD_FILENAME == "":
|
||||
BUILD_FILENAME = common.find_binary(os.path.join("..","artifact"))
|
||||
|
||||
if isinstance(BUILD_FILENAME,str):
|
||||
BUILD_FILENAME = list(BUILD_FILENAME)
|
||||
|
||||
BUILD_FILENAMES = BUILD_FILENAME
|
||||
|
||||
for BUILD_FILENAME in BUILD_FILENAMES:
|
||||
if not BUILD_FILENAME == "":
|
||||
if not "artifact" in BUILD_FILENAME:
|
||||
# move the binary to temp folder
|
||||
move(
|
||||
os.path.join(".",BUILD_FILENAME),
|
||||
os.path.join("..","artifact",BUILD_FILENAME)
|
||||
)
|
||||
|
||||
# clean the git slate
|
||||
git_clean()
|
||||
|
||||
# mv dirs from source code
|
||||
dirs = [os.path.join(".",".git"), os.path.join(".",".github"), os.path.join(".",".gitignore"), os.path.join(".","html"), os.path.join(".","resources","ci")]
|
||||
for dir in dirs:
|
||||
if os.path.isdir(dir):
|
||||
move(
|
||||
dir,
|
||||
os.path.join("..","build",dir)
|
||||
)
|
||||
|
||||
for BUILD_FILENAME in BUILD_FILENAMES:
|
||||
if not "artifact" in BUILD_FILENAME:
|
||||
# move the binary back
|
||||
move(
|
||||
os.path.join("..","artifact",BUILD_FILENAME),
|
||||
os.path.join(".",BUILD_FILENAME)
|
||||
)
|
||||
|
||||
# .zip if windows
|
||||
# .tar.gz otherwise
|
||||
ZIP_FILENAME = os.path.join("..","deploy",os.path.splitext(BUILD_FILENAME)[0])
|
||||
if env["OS_NAME"] == "windows":
|
||||
make_archive(ZIP_FILENAME,"zip")
|
||||
ZIP_FILENAME += ".zip"
|
||||
else:
|
||||
make_archive(ZIP_FILENAME,"gztar")
|
||||
ZIP_FILENAME += ".tar.gz"
|
||||
|
||||
# mv dirs back
|
||||
for dir in dirs:
|
||||
if os.path.isdir(os.path.join("..","build",dir)):
|
||||
move(
|
||||
os.path.join("..","build",dir),
|
||||
os.path.join(".",dir)
|
||||
)
|
||||
|
||||
for BUILD_FILENAME in BUILD_FILENAMES:
|
||||
if not BUILD_FILENAME == "":
|
||||
print("Build Filename: " + BUILD_FILENAME)
|
||||
print("Build Filesize: " + common.file_size(BUILD_FILENAME))
|
||||
else:
|
||||
print("No Build to prepare")
|
||||
|
||||
if not ZIP_FILENAME == "":
|
||||
print("Zip Filename: " + ZIP_FILENAME)
|
||||
print("Zip Filesize: " + common.file_size(ZIP_FILENAME))
|
||||
else:
|
||||
print("No Zip to prepare")
|
||||
|
||||
print("Git tag: " + env["GITHUB_TAG"])
|
||||
Reference in New Issue
Block a user