416 lines
13 KiB
YAML
416 lines
13 KiB
YAML
# workflow name
|
||
name: ⏱️Test/🔨Build/🚀Deploy
|
||
|
||
# fire on
|
||
on:
|
||
push:
|
||
branches:
|
||
# - DoorDevUnstable
|
||
# - DoorDev
|
||
- OverworldShuffle
|
||
pull_request:
|
||
branches:
|
||
# - DoorDevUnstable
|
||
# - DoorDev
|
||
- OverworldShuffle
|
||
|
||
# stuff to do
|
||
jobs:
|
||
# Diagnostics
|
||
diags:
|
||
# diagnostics
|
||
# call checkout
|
||
# call install python
|
||
# print python version
|
||
# call install
|
||
# call analyze github actions
|
||
# install extra python modules
|
||
# run diagnostics
|
||
name: 🧮
|
||
runs-on: ${{ matrix.os-name }}
|
||
continue-on-error: True
|
||
|
||
strategy:
|
||
matrix:
|
||
#TODO: OS List to run on
|
||
os-name: [
|
||
# ubuntu-latest, # ubuntu-22.04
|
||
ubuntu-22.04,
|
||
macos-latest, # macos-12
|
||
windows-latest # windows-2022
|
||
]
|
||
#TODO: Python Version to run on
|
||
python-version: [ "3.12" ]
|
||
steps:
|
||
# call checkout
|
||
- name: ✔️Checkout commit
|
||
uses: actions/checkout@v4.1.4
|
||
# call install python
|
||
- name: 💿Install Python
|
||
uses: actions/setup-python@v5.1.0
|
||
with:
|
||
python-version: ${{ matrix.python-version }}
|
||
# print python version
|
||
- name: 🐍Python Version
|
||
shell: bash
|
||
run: |
|
||
python --version
|
||
# call install
|
||
- name: 💿Call Install
|
||
uses: ./.github/actions/install
|
||
with:
|
||
calling-job: diags
|
||
os-name: ${{ matrix.os-name }}
|
||
python-version: ${{ matrix.python-version }}
|
||
# call analyze github actions
|
||
- name: ⚙️Analyze used GitHub Actions
|
||
shell: bash
|
||
run: |
|
||
python ./resources/ci/common/list_actions.py
|
||
# install extra python modules
|
||
- name: 💿Install extra Python Modules
|
||
shell: bash
|
||
run: |
|
||
python -m pip install setuptools
|
||
# run diagnostics
|
||
- name: 🧮Print Diagnostics
|
||
shell: bash
|
||
run: |
|
||
python -m source.meta.run_diags
|
||
|
||
# Test
|
||
install-test:
|
||
# test
|
||
# call checkout
|
||
# call install
|
||
# run tests
|
||
name: 💿/⏱️
|
||
runs-on: ${{ matrix.os-name }}
|
||
continue-on-error: False
|
||
|
||
strategy:
|
||
matrix:
|
||
#TODO: OS List to run on
|
||
os-name: [
|
||
# ubuntu-latest, # ubuntu-22.04
|
||
ubuntu-22.04,
|
||
macos-latest, # macos-12
|
||
windows-latest # windows-2022
|
||
]
|
||
#TODO: Python Version to run on
|
||
python-version: [ "3.12" ]
|
||
steps:
|
||
# call checkout
|
||
- name: ✔️Checkout commit
|
||
uses: actions/checkout@v4.1.4
|
||
# call install
|
||
- name: 💿Call Install
|
||
uses: ./.github/actions/install
|
||
with:
|
||
calling-job: test
|
||
os-name: ${{ matrix.os-name }}
|
||
python-version: ${{ matrix.python-version }}
|
||
# call test
|
||
- name: ⏱️Call Test
|
||
uses: ./.github/actions/test
|
||
with:
|
||
os-name: ${{ matrix.os-name }}
|
||
python-version: ${{ matrix.python-version }}
|
||
|
||
# Prepare AppVersion
|
||
appversion-prepare:
|
||
# prepare appversion
|
||
# call checkout
|
||
# call install
|
||
# call appversion-prepare
|
||
name: 💬
|
||
runs-on: ${{ matrix.os-name }}
|
||
needs: [install-test]
|
||
continue-on-error: False
|
||
|
||
strategy:
|
||
matrix:
|
||
#TODO: OS List to run on
|
||
os-name: [
|
||
# ubuntu-latest, # ubuntu-22.04
|
||
ubuntu-22.04,
|
||
]
|
||
#TODO: Python Version to run on
|
||
python-version: [ "3.12" ]
|
||
steps:
|
||
# call checkout
|
||
- name: ✔️Checkout commit
|
||
uses: actions/checkout@v4.1.4
|
||
# call install
|
||
- name: 💿Call Install
|
||
uses: ./.github/actions/install
|
||
with:
|
||
calling-job: appversion-prepare
|
||
os-name: ${{ matrix.os-name }}
|
||
python-version: ${{ matrix.python-version }}
|
||
# call appversion-prepare
|
||
- name: 💬Call Prepare AppVersion
|
||
uses: ./.github/actions/appversion-prepare
|
||
|
||
# Build
|
||
install-build:
|
||
# build
|
||
# call checkout
|
||
# call install
|
||
# call build
|
||
name: 💿/🔨
|
||
runs-on: ${{ matrix.os-name }}
|
||
needs: [appversion-prepare]
|
||
continue-on-error: False
|
||
|
||
strategy:
|
||
matrix:
|
||
#TODO: OS List to run on
|
||
os-name: [
|
||
# ubuntu-latest, # ubuntu-22.04
|
||
ubuntu-22.04,
|
||
macos-latest, # macos-12
|
||
windows-latest # windows-2022
|
||
]
|
||
#TODO: Python Version to run on
|
||
python-version: [ "3.12" ]
|
||
steps:
|
||
# call checkout
|
||
- name: ✔️Checkout commit
|
||
uses: actions/checkout@v4.1.4
|
||
# call install
|
||
- name: 💿Call Install
|
||
uses: ./.github/actions/install
|
||
with:
|
||
calling-job: build
|
||
os-name: ${{ matrix.os-name }}
|
||
python-version: ${{ matrix.python-version }}
|
||
# call build
|
||
- name: 🔨Call Build
|
||
uses: ./.github/actions/build
|
||
with:
|
||
calling-job: build
|
||
os-name: ${{ matrix.os-name }}
|
||
python-version: ${{ matrix.python-version }}
|
||
|
||
# Prepare Release
|
||
release-prepare:
|
||
# prepare release
|
||
# call checkout
|
||
# install extra python modules
|
||
# call prepare release
|
||
name: 💿/📀->📦
|
||
runs-on: ${{ matrix.os-name }}
|
||
needs: [install-build]
|
||
continue-on-error: False
|
||
|
||
strategy:
|
||
matrix:
|
||
#TODO: OS List to run on
|
||
os-name: [
|
||
# ubuntu-latest, # ubuntu-22.04
|
||
ubuntu-22.04,
|
||
macos-latest, # macos-12
|
||
windows-latest # windows-2022
|
||
]
|
||
python-version: [ "3.12" ]
|
||
steps:
|
||
# call checkout
|
||
- name: ✔️Checkout commit
|
||
uses: actions/checkout@v4.1.4
|
||
# install extra python modules
|
||
- name: 💿Install extra Python Modules
|
||
shell: bash
|
||
run: |
|
||
python -m pip install setuptools
|
||
# call prepare release
|
||
- name: 📀->📦Prepare Release
|
||
uses: ./.github/actions/release-prepare
|
||
with:
|
||
os-name: ${{ matrix.os-name }}
|
||
python-version: ${{ matrix.python-version }}
|
||
|
||
# Deploy Release
|
||
# Needs to be top-level for SECRET to work easily
|
||
release-deploy:
|
||
name: 📀->🚀
|
||
runs-on: ${{ matrix.os-name }}
|
||
needs: [release-prepare]
|
||
|
||
strategy:
|
||
matrix:
|
||
#TODO: OS List to run on
|
||
os-name: [
|
||
# ubuntu-latest, # ubuntu-22.04
|
||
ubuntu-22.04,
|
||
]
|
||
#TODO: Python Version to run on
|
||
python-version: [ "3.12" ]
|
||
|
||
steps:
|
||
# checkout commit
|
||
- name: ✔️Checkout commit
|
||
uses: actions/checkout@v4.1.4
|
||
|
||
# install extra python modules
|
||
- name: 💿Install extra Python Modules
|
||
shell: bash
|
||
run: |
|
||
python -m pip install pytz requests
|
||
|
||
# get parent dir
|
||
- name: 📁Get Parent Directory
|
||
id: parentDir
|
||
uses: ./.github/actions/get-parent-dir
|
||
|
||
# download appversion artifact
|
||
- name: 🔽Download AppVersion Artifact
|
||
uses: actions/download-artifact@v4.1.7
|
||
with:
|
||
name: appversion
|
||
path: ${{ steps.parentDir.outputs.parentDir }}/build
|
||
|
||
# download ubuntu archive artifact
|
||
- name: 🔽Download Ubuntu Archive Artifact
|
||
uses: actions/download-artifact@v4.1.7
|
||
with:
|
||
# should run on latest explicit ubuntu version
|
||
name: archive-ubuntu-22.04-py${{ matrix.python-version }}
|
||
path: ${{ steps.parentDir.outputs.parentDir }}/deploy/linux
|
||
|
||
# download macos archive artifact
|
||
- name: 🔽Download MacOS Archive Artifact
|
||
uses: actions/download-artifact@v4.1.7
|
||
with:
|
||
name: archive-macos-latest-py${{ matrix.python-version }}
|
||
path: ${{ steps.parentDir.outputs.parentDir }}/deploy/macos
|
||
|
||
# download windows archive artifact
|
||
- name: 🔽Download Windows Archive Artifact
|
||
uses: actions/download-artifact@v4.1.7
|
||
with:
|
||
name: archive-windows-latest-py${{ matrix.python-version }}
|
||
path: ${{ steps.parentDir.outputs.parentDir }}/deploy/windows
|
||
|
||
# determine linux archive asset
|
||
- name: ❔Identify Linux Archive Asset
|
||
id: identify-linux-asset
|
||
shell: bash
|
||
run: |
|
||
ASSET_LINUX="$(ls ${{ steps.parentDir.outputs.parentDir }}/deploy/linux)"
|
||
echo "asset_linux=$ASSET_LINUX" >> $GITHUB_OUTPUT
|
||
|
||
# determine macos archive asset
|
||
- name: ❔Identify MacOS Archive Asset
|
||
id: identify-macos-asset
|
||
shell: bash
|
||
run: |
|
||
ASSET_MACOS="$(ls ${{ steps.parentDir.outputs.parentDir }}/deploy/macos)"
|
||
echo "asset_macos=$ASSET_MACOS" >> $GITHUB_OUTPUT
|
||
|
||
# determine windows archive asset
|
||
- name: ❔Identify Windows Archive Asset
|
||
id: identify-windows-asset
|
||
shell: bash
|
||
run: |
|
||
ASSET_WIN="$(ls ${{ steps.parentDir.outputs.parentDir }}/deploy/windows)"
|
||
echo "asset_windows=$ASSET_WIN" >> $GITHUB_OUTPUT
|
||
|
||
# archive listing
|
||
# - name: Archive Listing
|
||
# shell: bash
|
||
# run: |
|
||
# ls -R ${{ steps.parentDir.outputs.parentDir }}/deploy/
|
||
|
||
# debug info
|
||
#TODO: Project Name
|
||
- name: 📝Debug Info
|
||
id: debug_info
|
||
run: |
|
||
PROJECT_NAME="ALttPOverworldRandomizer"
|
||
echo "project_name=$PROJECT_NAME" >> $GITHUB_OUTPUT
|
||
|
||
GITHUB_TAG="$(head -n 1 ../build/app_version.txt)"
|
||
echo "github_tag=$GITHUB_TAG" >> $GITHUB_OUTPUT
|
||
|
||
RELEASE_NAME="${PROJECT_NAME} ${GITHUB_TAG}"
|
||
echo "release_name=$RELEASE_NAME" >> $GITHUB_OUTPUT
|
||
|
||
ASSET_PREFIX="${PROJECT_NAME}-${GITHUB_TAG}"
|
||
echo "asset_prefix=$ASSET_PREFIX" >> $GITHUB_OUTPUT
|
||
|
||
echo "Project Name: ${PROJECT_NAME}"
|
||
echo "Release Name: ${RELEASE_NAME}"
|
||
echo "Asset Prefix: ${ASSET_PREFIX}"
|
||
echo "Git Tag: ${GITHUB_TAG}"
|
||
echo "Linux Asset: ${{ steps.identify-linux-asset.outputs.asset_linux }}"
|
||
echo "MacOS Asset: ${{ steps.identify-macos-asset.outputs.asset_macos }}"
|
||
echo "Windows Asset: ${{ steps.identify-windows-asset.outputs.asset_windows }}"
|
||
|
||
# create a release (OverworldShuffle)
|
||
# if: contains(github.ref, 'OverworldShuffle') # branch or tag name
|
||
# if: contains(github.event.head_commit.message, 'Version bump') # commit message
|
||
- name: 📀->🚀Create a Release (OverworldShuffle)
|
||
id: create_release
|
||
uses: actions/create-release@v1.1.4
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
tag_name: ${{ steps.debug_info.outputs.github_tag }}
|
||
release_name: ${{ steps.debug_info.outputs.release_name }}
|
||
body_path: CHANGELOG.md
|
||
# draft: true
|
||
if: contains(github.event.head_commit.message, 'Merge branch') # branch/tag name and commit message
|
||
|
||
# upload linux archive asset (OverworldShuffle)
|
||
#TODO: Make sure we're firing on the proper branches
|
||
- name: 🔼Upload Linux Archive Asset (OverworldShuffle)
|
||
id: upload-linux-asset
|
||
uses: actions/upload-release-asset@v1.0.2
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||
asset_path: ${{ steps.parentDir.outputs.parentDir }}/deploy/linux/${{ steps.identify-linux-asset.outputs.asset_linux }}
|
||
asset_name: ${{ steps.debug_info.outputs.asset_prefix }}-linux-focal.tar.gz
|
||
asset_content_type: application/gzip
|
||
if: contains(github.event.head_commit.message, 'Merge branch') # branch/tag name and commit message
|
||
|
||
# upload macos archive asset (OverworldShuffle)
|
||
#TODO: Make sure we're firing on the proper branches
|
||
- name: 🔼Upload MacOS Archive Asset (OverworldShuffle)
|
||
id: upload-macos-asset
|
||
uses: actions/upload-release-asset@v1.0.2
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||
asset_path: ${{ steps.parentDir.outputs.parentDir }}/deploy/macos/${{ steps.identify-macos-asset.outputs.asset_macos }}
|
||
asset_name: ${{ steps.debug_info.outputs.asset_prefix }}-osx.tar.gz
|
||
asset_content_type: application/gzip
|
||
if: contains(github.event.head_commit.message, 'Merge branch') # branch/tag name and commit message
|
||
|
||
# upload windows archive asset (OverworldShuffle)
|
||
#TODO: Make sure we're firing on the proper branches
|
||
- name: 🔼Upload Windows Archive Asset (OverworldShuffle)
|
||
id: upload-windows-asset
|
||
uses: actions/upload-release-asset@v1.0.2
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
with:
|
||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||
asset_path: ${{ steps.parentDir.outputs.parentDir }}/deploy/windows/${{ steps.identify-windows-asset.outputs.asset_windows }}
|
||
asset_name: ${{ steps.debug_info.outputs.asset_prefix }}-windows.zip
|
||
asset_content_type: application/zip
|
||
if: contains(github.event.head_commit.message, 'Merge branch') # branch/tag name and commit message
|
||
|
||
- name: 🖳Tag Baserom
|
||
uses: ./.github/actions/tag-repo
|
||
env:
|
||
FINE_PAT: ${{ secrets.ALTTPER_TAGGER }}
|
||
with:
|
||
repository: ${{ github.repository_owner }}/z3randomizer
|
||
ref-name: heads/OWMain
|
||
github-tag: ${{ github.event.release.tag_name }}
|
||
if: contains(github.event.head_commit.message, 'Merge branch')
|