fix #96
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 | |
# Controls when the action will run. | |
on: | |
# Triggers the workflow on push event only for all branches | |
push: | |
# branches: [ main, master ] | |
#pull_request: | |
# branches: [ main, master ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
# This workflow contains a single job called "build" | |
setup-sdk: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Cache sdk | |
id: cache-sdk | |
uses: actions/cache@v3 | |
with: | |
path: | | |
cc65/**/* | |
orix-sdk/**/* | |
md2hlp/**/* | |
orix-software/**/* | |
bpm/**/* | |
oricutron/**/* | |
key: ${{ secrets.CACHE_ID }}-orix-sdk | |
- name: Checkout cc65 | |
if: steps.cache-sdk.outputs.cache-hit != 'true' | |
uses: actions/checkout@v3 | |
with: | |
repository: cc65/cc65 | |
path: cc65 | |
- name: Checkout bpm | |
#if: steps.cache-sdk.outputs.cache-hit != 'true' | |
uses: actions/checkout@v3 | |
with: | |
repository: orix-software/bpm | |
path: bpm | |
- name: Checkout orix-sdk | |
if: steps.cache-sdk.outputs.cache-hit != 'true' | |
uses: actions/checkout@v3 | |
with: | |
repository: assinie/orix-sdk | |
path: orix-sdk | |
- name: Checkout md2hlp | |
if: steps.cache-sdk.outputs.cache-hit != 'true' | |
uses: actions/checkout@v3 | |
with: | |
repository: assinie/md2hlp | |
path: md2hlp | |
- name: Compilation CC65 | |
if: steps.cache-sdk.outputs.cache-hit != 'true' | |
run: make -C cc65 >/dev/null | |
- name: Prepare environment for orix-sdk | |
if: steps.cache-sdk.outputs.cache-hit != 'true' | |
run: | | |
git clone --no-checkout --depth 1 --single-branch --branch master https://github.com/orix-software/shell orix-software/shell | |
cd orix-software/shell | |
git config --local core.sparseCheckout true | |
echo "src/include" >> .git/info/sparse-checkout | |
git checkout | |
cd ../.. | |
git clone --no-checkout --depth 1 --single-branch --branch master https://github.com/orix-software/kernel orix-software/kernel | |
cd orix-software/kernel | |
git config --local core.sparseCheckout true | |
echo "src/include" >> .git/info/sparse-checkout | |
git checkout | |
- name: Prepare environment for oricutron | |
if: steps.cache-sdk.outputs.cache-hit != 'true' | |
run: | | |
sudo apt-get install -y xvfb libgtk-3-0 libgtk-3-dev libsdl1.2debian libsdl1.2-dev | |
git clone https://github.com/pete-gordon/oricutron.git | |
cd oricutron && make && pwd && cd .. && ls -l && echo ${GITHUB_WORKSPACE} | |
echo Timeout oricutron : ${secret}.TMOUT_ORICUTRON | |
- name: Compile orix-sdk | |
if: steps.cache-sdk.outputs.cache-hit != 'true' | |
working-directory: orix-sdk | |
run: mkdir -p build/{lib,bin} && CC65_HOME=${GITHUB_WORKSPACE}/cc65 make lib | |
- name: Display tools | |
run: | | |
PATH=$PATH:${GITHUB_WORKSPACE}/cc65/bin | |
cc65 -V | |
ls -lR orix-sdk | |
ls -l cc65/bin | |
build: | |
# The type of runner that the job will run on | |
needs: setup-sdk | |
runs-on: ubuntu-24.04 | |
outputs: | |
version: ${{ steps.job_vars.outputs.VERSION }} | |
repo_name: ${{ steps.job_vars.outputs.REPO_NAME }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set job variables | |
id: job_vars | |
run: | | |
echo "VERSION=$(cat VERSION)" >> $GITHUB_OUTPUT | |
echo "REPO_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_OUTPUT | |
- name: Install sdk | |
uses: actions/cache@v3 | |
with: | |
path: | | |
cc65/**/* | |
orix-sdk/**/* | |
md2hlp/**/* | |
orix-software/**/* | |
bpm/**/* | |
oricutron/**/* | |
key: ${{ secrets.CACHE_ID }}-orix-sdk | |
- name: Prepare environment for project | |
run: | | |
mkdir ~/bin | |
cd bpm && pip install -r requirements.txt && cd .. | |
# cp bpm/src/bpm ~/bin | |
# chmod 755 ~/bin/bpm && export PATH=$PATH:~/bin | |
ls -l && ls -l .. && ls -l ~/bin/ && mv cc65 ../ && mv orix-software ../ && mv orix-sdk ../ && mv md2hlp ../ && mv bpm ../ | |
- name: Compile project | |
run: | | |
if [ -f "bpm.tml" ]; then | |
ls -l ${GITHUB_WORKSPACE} | |
ls -l ${GITHUB_WORKSPACE}/oricutron | |
echo "Workspace : ${GITHUB_WORKSPACE}" | |
CC65_HOME=${GITHUB_WORKSPACE}/../cc65 | |
echo "../bpm/src/bpm" >> $GITHUB_PATH | |
echo ${GITHUB_WORKSPACE}/../cc65/bin >> $GITHUB_PATH | |
export PATH=$PATH:../bpm/src/:${GITHUB_WORKSPACE}/../cc65/bin | |
chmod 755 ../bpm/src/bpm | |
echo "/home/runner/work/file/cc65/bin" >> $GITHUB_PATH | |
echo "Bpm version :" | |
bpm --force-update -V | |
bpm --force-update -V | |
echo Using bpm ... | |
bpm --force-update plugins install orixsdk | |
bpm --force-update build | |
else | |
CC65_HOME=${GITHUB_WORKSPACE}/../cc65 make | |
fi | |
- name: Unit-test with oricutron | |
run: | | |
echo "Workspace : ${GITHUB_WORKSPACE}" | |
echo Checking if there is unit tests | |
if [ -d "tests/build/" ] && [ "$(ls -A tests/build/)" ]; then | |
echo "########################################################" | |
echo "# Unit tests found : Starting Oricutron with tests #" | |
echo "########################################################" | |
git clone https://github.com/orix-software/docker-unit-test.git | |
cd docker-unit-test && bash install.sh ${GITHUB_WORKSPACE} && cd .. | |
echo "Tests found, let's start" | |
cp tests/build/* > ${GITHUB_WORKSPACE}/oricutron/sdcard/BIN | |
echo "#!/bin/submit\n" > ${GITHUB_WORKSPACE}/oricutron/sdcard/ETC/AUTOBOOT | |
cp tests/run.sub >> ${GITHUB_WORKSPACE}/oricutron/sdcard/ETC/AUTOBOOT | |
cd ${GITHUB_WORKSPACE}/oricutron | |
echo "Start Oricutron" | |
timeout --preserve-status 10 ./xvfb.sh || exit 0 | |
fi | |
- name: Check unit-test | |
run: | | |
if [ -d "tests/build/" ] && [ "$(ls -A tests/build/)" ]; then | |
ls -l ${GITHUB_WORKSPACE}/oricutron/sdcard/ | |
bash tests/unit-tests/verify.sh ${GITHUB_WORKSPACE}/oricutron/sdcard/ | |
fi | |
- name: List build directory content | |
run: ls -lR build | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.job_vars.outputs.REPO_NAME }} | |
path: | | |
build/**/* | |
!build/obj/* | |
- name: Post compilation | |
run: mv ../cc65 . && mv ../orix-software . && mv ../orix-sdk . && mv ../md2hlp . | |
upload: | |
needs: build | |
runs-on: ubuntu-24.04 | |
defaults: | |
run: | |
shell: bash | |
env: | |
hash: ${{ secrets.HASH }} | |
version: ${{ needs.build.outputs.version }} | |
repo_name: ${{ needs.build.outputs.repo_name }} | |
steps: | |
- name: Get branch name | |
if: github.event_name != 'pull_request' | |
run: echo "BRANCH_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV | |
# run: echo "::set-env name=BRANCH_NAME::$(echo ${GITHUB_REF##*/})" | |
- name: Get branch name on pull request | |
if: github.event_name == 'pull_request' | |
run: echo "BRANCH_NAME=${GITHUB_HEAD_REF}" >> GITHUB_ENV | |
#run: echo "::set-env name=BRANCH_NAME::$(echo ${GITHUB_HEAD_REF})" | |
- name: Get archive name | |
run: echo "ARCHIVE_NAME=${repo_name}.tgz" >> $GITHUB_ENV | |
# On pourrait faire l'extraction directement à la racine si VERSION est dans l'artifact | |
- name: Download Artifact | |
id: download | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ needs.build.outputs.repo_name }} | |
path: artifact | |
- name: Make archive | |
working-directory: ${{steps.download.outputs.download-path}} | |
run: | | |
if [ -f "bpm.tml" ]; then | |
python3 ../bpm/src/bpm --force-update package | |
else | |
tar -zcvf $GITHUB_WORKSPACE/$ARCHIVE_NAME * | |
fi | |
- name: Upload to oric | |
run: | | |
if [ -f "bpm.tml" ]; then | |
BPM_PUBLISH_KEY = $hash | |
bpm -V | |
if [ "$BRANCH_NAME" = "master" -o "$BRANCH_NAME" = "main" ]; then python3 ../bpm/src/bpm --force-update publish --official; else python3 --force-update ../bpm/src/bpm publish --alpha; fi | |
else | |
if [ "$BRANCH_NAME" = "master" -o "$BRANCH_NAME" = "main" ]; then VERSION="$version"; else VERSION=alpha; fi | |
curl -X POST --data-binary "@${ARCHIVE_NAME}" "https://cdn.oric.org/publish.php?hash=$hash&path=/home/oricoujr/www/ftp/orix/dists/$VERSION/tgz/6502/${ARCHIVE_NAME}" | |
fi |