CI Changes
This commit is contained in:
committed by
aerinon
parent
54858500e5
commit
ca40f87daa
51
.github/actions/appversion-prepare/action.yml
vendored
Normal file
51
.github/actions/appversion-prepare/action.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: Prepare AppVersion
|
||||
description: Prepare AppVersion document for later use
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# checkout commit
|
||||
- name: Checkout commit
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Checkout commit"
|
||||
- name: Checkout commit
|
||||
uses: actions/checkout@v4.1.4
|
||||
|
||||
# Set Run Number
|
||||
- name: Set Run Number
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Set Run Number"
|
||||
- name: Set Run Number
|
||||
id: set_run_number
|
||||
shell: bash
|
||||
run: |
|
||||
GITHUB_RUN_NUMBER="${{ github.run_number }}a${{ github.run_attempt }}"
|
||||
echo "github_run_number=$GITHUB_RUN_NUMBER" >> $GITHUB_OUTPUT
|
||||
|
||||
# Prepare AppVersion
|
||||
#TODO: source/classes/appversion.py writes the tag format
|
||||
- name: 💬Prepare AppVersion
|
||||
shell: bash
|
||||
run: |
|
||||
echo "💬Prepare AppVersion"
|
||||
- name: Prepare AppVersion
|
||||
shell: bash
|
||||
env:
|
||||
OS_NAME: ${{ inputs.os-name }}
|
||||
GITHUB_RUN_NUMBER: ${{ steps.set_run_number.outputs.github_run_number }}
|
||||
run: |
|
||||
python -m source.classes.appversion
|
||||
python ./resources/ci/common/prepare_appversion.py
|
||||
|
||||
# upload appversion artifact for later step
|
||||
- name: 🔼Upload AppVersion Artifact
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔼Upload AppVersion Artifact"
|
||||
- name: 🔼Upload AppVersion Artifact
|
||||
uses: actions/upload-artifact@v4.3.3
|
||||
with:
|
||||
name: appversion
|
||||
path: ./resources/app/meta/manifests/app_version.txt
|
||||
88
.github/actions/build/action.yml
vendored
Normal file
88
.github/actions/build/action.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
name: Build
|
||||
description: Build app
|
||||
inputs:
|
||||
calling-job:
|
||||
required: true
|
||||
description: Job that's calling this one
|
||||
os-name:
|
||||
required: true
|
||||
description: OS to run on
|
||||
python-version:
|
||||
required: true
|
||||
description: Python version to install
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# checkout commit
|
||||
- name: Checkout commit
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Checkout commit"
|
||||
- name: Checkout commit
|
||||
uses: actions/checkout@v4.1.4
|
||||
|
||||
# get parent dir
|
||||
- name: Get Parent Directory
|
||||
id: parentDir
|
||||
uses: ./.github/actions/get-parent-dir
|
||||
|
||||
# try to get UPX
|
||||
- name: Get UPX
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Get UPX"
|
||||
- name: Get UPX
|
||||
shell: bash
|
||||
env:
|
||||
OS_NAME: ${{ inputs.os-name }}
|
||||
UPX_VERSION: "4.2.3"
|
||||
run: |
|
||||
python ./resources/ci/common/get_upx.py
|
||||
|
||||
# run build.py
|
||||
- name: 💬Build Binaries
|
||||
shell: bash
|
||||
run: |
|
||||
echo "💬Build Binaries"
|
||||
- name: Build Binaries
|
||||
shell: bash
|
||||
run: |
|
||||
pip install pyinstaller
|
||||
python -m source.meta.build
|
||||
|
||||
# upload problem children
|
||||
# - name: 🔼Upload Problem Children Artifact
|
||||
# shell: bash
|
||||
# run: |
|
||||
# echo "🔼Upload Problem Children Artifact"
|
||||
# - name: 🔼Upload Problem Children Artifact
|
||||
# uses: actions/upload-artifact@v4.3.3
|
||||
# with:
|
||||
# name: problemchildren-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
# path: ./resources/app/meta/manifests/excluded_dlls.json
|
||||
# if-no-files-found: ignore # 'warn' or 'ignore' are also available, defaults to `warn`
|
||||
|
||||
# prepare binary artifact for later step
|
||||
- name: 💬Prepare Binary Artifact
|
||||
shell: bash
|
||||
run: |
|
||||
echo "💬Prepare Binary Artifact"
|
||||
- name: Prepare Binary Artifact
|
||||
shell: bash
|
||||
env:
|
||||
OS_NAME: ${{ inputs.os-name }}
|
||||
run: |
|
||||
python ./resources/ci/common/prepare_binary.py
|
||||
|
||||
# upload binary artifact for later step
|
||||
- name: 🔼Upload Binary Artifact
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔼Upload Binary Artifact"
|
||||
- name: 🔼Upload Binary Artifact
|
||||
uses: actions/upload-artifact@v4.3.3
|
||||
with:
|
||||
name: binary-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
path: ${{ steps.parentDir.outputs.parentDir }}/artifact
|
||||
if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`
|
||||
41
.github/actions/get-parent-dir/action.yml
vendored
Normal file
41
.github/actions/get-parent-dir/action.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
name: 📁Get Parent Directory
|
||||
description: Get Parent Directory
|
||||
|
||||
outputs:
|
||||
parentDirNotWin:
|
||||
description: "Parent Directory (!Windows)"
|
||||
value: ${{ steps.parentDirNotWin.outputs.value }}
|
||||
parentDir:
|
||||
description: "Parent Directory (Windows)"
|
||||
value: ${{ steps.parentDir.outputs.value }}
|
||||
|
||||
#########
|
||||
# actions
|
||||
#########
|
||||
# mad9000/actions-find-and-replace-string@5
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# get parent directory
|
||||
- name: Get Repo Name
|
||||
uses: mad9000/actions-find-and-replace-string@5
|
||||
id: repoName
|
||||
with:
|
||||
source: ${{ github.repository }}
|
||||
find: "${{ github.repository_owner }}/"
|
||||
replace: ""
|
||||
- name: 📁Get Parent Directory Path (!Windows)
|
||||
uses: mad9000/actions-find-and-replace-string@5
|
||||
id: parentDirNotWin
|
||||
with:
|
||||
source: ${{ github.workspace }}
|
||||
find: "${{ steps.repoName.outputs.value }}/${{ steps.repoName.outputs.value }}"
|
||||
replace: ${{ steps.repoName.outputs.value }}
|
||||
- name: 📁Get Parent Directory Path (Windows)
|
||||
uses: mad9000/actions-find-and-replace-string@5
|
||||
id: parentDir
|
||||
with:
|
||||
source: ${{ steps.parentDirNotWin.outputs.value }}
|
||||
find: '${{ steps.repoName.outputs.value }}\${{ steps.repoName.outputs.value }}'
|
||||
replace: ${{ steps.repoName.outputs.value }}
|
||||
49
.github/actions/install/action.yml
vendored
Normal file
49
.github/actions/install/action.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
name: 💿Install
|
||||
description: Install app
|
||||
inputs:
|
||||
calling-job:
|
||||
required: true
|
||||
description: Job that's calling this one
|
||||
os-name:
|
||||
required: true
|
||||
description: OS to run on
|
||||
python-version:
|
||||
required: true
|
||||
description: Python version to install
|
||||
|
||||
#########
|
||||
# actions
|
||||
#########
|
||||
# actions/checkout@v4.1.4
|
||||
# actions/setup-python@v5.1.0
|
||||
# actions/upload-artifact@v4.3.3
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# install python
|
||||
- name: 💿Install Python
|
||||
uses: actions/setup-python@v5.1.0
|
||||
with:
|
||||
python-version: ${{ inputs.python-version }}
|
||||
# install modules via pip
|
||||
- name: 💿Install Modules
|
||||
shell: bash
|
||||
env:
|
||||
OS_NAME: ${{ inputs.os-name }}
|
||||
run: |
|
||||
echo "Install Modules"
|
||||
python ./resources/ci/common/get_pipline.py
|
||||
# print pipline
|
||||
- name: PipLine
|
||||
shell: bash
|
||||
run: |
|
||||
echo "PipLine"
|
||||
cat ./resources/user/meta/manifests/pipline.txt
|
||||
# upload pipline
|
||||
- name: 🔼Upload PipLine
|
||||
uses: actions/upload-artifact@v4.3.3
|
||||
with:
|
||||
name: pipline-${{ inputs.calling-job }}-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
path: ./resources/user/meta/manifests
|
||||
if: contains(inputs.calling-job, 'test')
|
||||
77
.github/actions/release-prepare/action.yml
vendored
Normal file
77
.github/actions/release-prepare/action.yml
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
name: 📀->📦Prepare Release
|
||||
description: Prepare Release for Deployment
|
||||
inputs:
|
||||
os-name:
|
||||
required: true
|
||||
description: OS to run on
|
||||
python-version:
|
||||
required: true
|
||||
description: Python version to install
|
||||
|
||||
#########
|
||||
# actions
|
||||
#########
|
||||
# Artheau/SpriteSomething/get-parent-dir
|
||||
# actions/checkout@v4.1.4
|
||||
# actions/download-artifact@v4.1.7
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# checkout commit
|
||||
- name: ✔️Checkout commit
|
||||
shell: bash
|
||||
run: |
|
||||
echo "✔️Checkout commit"
|
||||
- name: ✔️Checkout commit
|
||||
uses: actions/checkout@v4.1.4
|
||||
|
||||
# get parent dir
|
||||
- name: 📁Get Parent Directory
|
||||
shell: bash
|
||||
run: |
|
||||
echo "📁Get Parent Directory"
|
||||
- name: 📁Get Parent Directory
|
||||
id: parentDir
|
||||
uses: ./.github/actions/get-parent-dir
|
||||
|
||||
# download binary artifact
|
||||
- name: 🔽Download Binary Artifact
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔽Download Binary Artifact"
|
||||
- name: 🔽Download Binary Artifact
|
||||
uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: binary-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
path: ./
|
||||
|
||||
# download appversion artifact
|
||||
- name: 🔽Download AppVersion Artifact
|
||||
uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: appversion
|
||||
path: ${{ steps.parentDir.outputs.parentDir }}/build
|
||||
|
||||
# Prepare Release
|
||||
- name: 💬Prepare Release
|
||||
shell: bash
|
||||
run: |
|
||||
echo "💬Prepare Release"
|
||||
- name: Prepare Release
|
||||
shell: bash
|
||||
env:
|
||||
OS_NAME: ${{ inputs.os-name }}
|
||||
run: |
|
||||
python ./resources/ci/common/prepare_release.py
|
||||
|
||||
# upload archive artifact for later step
|
||||
- name: 🔼Upload Archive Artifact
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔼Upload Archive Artifact"
|
||||
- name: 🔼Upload Archive Artifact
|
||||
uses: actions/upload-artifact@v4.3.3
|
||||
with:
|
||||
name: archive-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
path: ${{ steps.parentDir.outputs.parentDir }}/deploy
|
||||
76
.github/actions/tag-repo/action.yml
vendored
Normal file
76
.github/actions/tag-repo/action.yml
vendored
Normal file
@@ -0,0 +1,76 @@
|
||||
name: 🏷️Tag Repository
|
||||
description: Tag a repository
|
||||
|
||||
inputs:
|
||||
repository:
|
||||
description: "Repository Owner/Name; octocat/Hello-World"
|
||||
required: true
|
||||
ref-name:
|
||||
description: "Reference name; branch, tag, etc"
|
||||
required: true
|
||||
github-tag:
|
||||
description: "Reference to tag with"
|
||||
required: true
|
||||
debug:
|
||||
description: "Debug Mode, won't set tag"
|
||||
required: false
|
||||
default: "false"
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: 🏷️Tag Repository
|
||||
uses: actions/github-script@v7.0.1
|
||||
with:
|
||||
github-token: ${{ env.FINE_PAT }}
|
||||
script: |
|
||||
const debug = ${{ inputs.debug }} == "true" || ${{ inputs.debug }} == true;
|
||||
const repository = '${{ inputs.repository }}';
|
||||
const owner = repository.substring(0,repository.indexOf('/'));
|
||||
const repo = repository.substring(repository.indexOf('/')+1);
|
||||
const ref = '${{ inputs.ref-name }}';
|
||||
// get git tag
|
||||
const gitTag = '${{ inputs.github-tag }}';
|
||||
console.log('Repo Data: ', `${owner}/${repo}@${ref}`)
|
||||
console.log('Git tag: ', gitTag)
|
||||
if(gitTag == '') {
|
||||
let msg = 'Result: 🔴No Git Tag sent, aborting!';
|
||||
console.log(msg)
|
||||
core.setFailed(msg)
|
||||
return
|
||||
}
|
||||
// get latest commit
|
||||
const latestCommit = await github.rest.git.getRef({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
ref: ref
|
||||
})
|
||||
// get latest refs
|
||||
const latestRefs = await github.rest.git.listMatchingRefs({
|
||||
owner: owner,
|
||||
repo: repo
|
||||
})
|
||||
let latestTag = ''; // bucket for latest tag
|
||||
// get last tag in data
|
||||
for(let thisRef of latestRefs.data) {
|
||||
if(thisRef['ref'].indexOf('tags') > -1) {
|
||||
let refParts = thisRef['ref'].split('/');
|
||||
latestTag = refParts[-1];
|
||||
}
|
||||
}
|
||||
console.log('Latest tag:', latestTag)
|
||||
if(latestTag != gitTag) {
|
||||
if(debug) {
|
||||
console.log(`DEBUG: 🔵Creating '${gitTag}' tag`)
|
||||
} else {
|
||||
console.log(`Result: 🟢Creating '${gitTag}' tag`)
|
||||
github.rest.git.createRef({
|
||||
owner: owner,
|
||||
repo: repo,
|
||||
ref: `refs/tags/${gitTag}`,
|
||||
sha: latestCommit.data.object.sha
|
||||
})
|
||||
}
|
||||
} else {
|
||||
console.log('Result: 🟡Not creating release tag')
|
||||
}
|
||||
97
.github/actions/test/action.yml
vendored
Normal file
97
.github/actions/test/action.yml
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
name: ⏱️Test
|
||||
description: Test app
|
||||
inputs:
|
||||
os-name:
|
||||
required: true
|
||||
description: OS to run on
|
||||
python-version:
|
||||
required: true
|
||||
description: Python version to install
|
||||
|
||||
#########
|
||||
# actions
|
||||
#########
|
||||
# actions/checkout@v4.1.4
|
||||
# actions/download-artifact@v4.1.7
|
||||
# actions/upload-artifact@v4.3.3
|
||||
# coactions/setup-xvfb@v1.0.1
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
# download pipline
|
||||
- name: 🔽Download PipLine
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔽Download PipLine"
|
||||
- name: 🔽Download PipLine
|
||||
uses: actions/download-artifact@v4.1.7
|
||||
with:
|
||||
name: pipline-test-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
path: ./resources/user/meta/manifests
|
||||
|
||||
# run tests
|
||||
- name: 🖥️Test Base
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🖥️Test Base"
|
||||
- name: 🖥️Test Base
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p ./failures
|
||||
echo "" > ./failures/errors.txt
|
||||
python -m pip install tqdm
|
||||
python ./test/NewTestSuite.py
|
||||
# - name: 🖥️Test Mystery
|
||||
# shell: bash
|
||||
# run: |
|
||||
# echo "🖥️Test Mystery"
|
||||
# if: contains(inputs.os-name, 'macos')
|
||||
# - name: 🖥️Test Mystery
|
||||
# shell: bash
|
||||
# run: |
|
||||
# python ./test/MysteryTestSuite.py
|
||||
# if: contains(inputs.os-name, 'macos')
|
||||
|
||||
# upload logs
|
||||
- name: 🔼Upload Logs
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔼Upload Logs"
|
||||
- name: 🔼Upload Logs
|
||||
uses: actions/upload-artifact@v4.3.3
|
||||
with:
|
||||
name: logs-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
path: ./logs
|
||||
if-no-files-found: ignore
|
||||
|
||||
# print failures
|
||||
- name: 💬Print Failures
|
||||
if: failure()
|
||||
shell: bash
|
||||
run: |
|
||||
echo "💬Print Failures"
|
||||
- name: Print Failures
|
||||
if: failure()
|
||||
shell: bash
|
||||
run: |
|
||||
ERR_STRING="$(cat ./failures/errors.txt)"
|
||||
ERR_STRING="${ERR_STRING//'%'/'%25'}"
|
||||
ERR_STRING="${ERR_STRING//$'\n'/' | '}"
|
||||
ERR_STRING="${ERR_STRING//$'\r'/' | '}"
|
||||
ERR_STRING="${ERR_STRING//$'\n'/'%0A'}"
|
||||
ERR_STRING="${ERR_STRING//$'\r'/'%0D'}"
|
||||
echo "::error ::$ERR_STRING"
|
||||
|
||||
# upload failures
|
||||
- name: 🔼Upload Failures
|
||||
if: failure()
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔼Upload Failures"
|
||||
- name: 🔼Upload Failures
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v4.3.3
|
||||
with:
|
||||
name: failures-${{ inputs.os-name }}-py${{ inputs.python-version }}
|
||||
path: ./failures
|
||||
Reference in New Issue
Block a user