Skip to content

fix

fix #96

Workflow file for this run

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