Update NCC workflow #10
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: CI | |
on: | |
push: | |
branches: | |
- '**' | |
release: | |
types: [created] | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
container: | |
image: php:8.3 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
apt update -yqq | |
apt install git libpq-dev libzip-dev zip make wget gnupg -yqq | |
- name: Install phive | |
run: | | |
wget -O phive.phar https://phar.io/releases/phive.phar | |
wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc | |
gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79 | |
gpg --verify phive.phar.asc phive.phar | |
chmod +x phive.phar | |
mv phive.phar /usr/local/bin/phive | |
- name: Install phab | |
run: | | |
phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C | |
- name: Install latest version of NCC | |
run: | | |
git clone https://git.n64.cc/nosial/ncc.git | |
cd ncc | |
make redist | |
NCC_DIR=$(find build/ -type d -name "ncc_*" | head -n 1) | |
if [ -z "$NCC_DIR" ]; then | |
echo "NCC build directory not found" | |
exit 1 | |
fi | |
php "$NCC_DIR/INSTALL" --auto | |
cd .. && rm -rf ncc | |
- name: Build project | |
run: | | |
ncc build --config release --log-level debug | |
- name: Upload build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: OptsLib_build | |
path: build/release/net.nosial.optslib.ncc | |
check-phpunit: | |
runs-on: ubuntu-latest | |
outputs: | |
phpunit-exists: ${{ steps.check.outputs.phpunit-exists }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Check for phpunit.xml | |
id: check | |
run: | | |
if [ -f phpunit.xml ]; then | |
echo "phpunit-exists=true" >> $GITHUB_ENV | |
else | |
echo "phpunit-exists=false" >> $GITHUB_ENV | |
fi | |
- name: Print phpunit-exists | |
run: echo "phpunit-exists=$phpunit-exists" | |
test: | |
needs: [build, check-phpunit] | |
runs-on: ubuntu-latest | |
container: | |
image: php:8.3 | |
if: ${{ needs.check-phpunit.outputs.phpunit-exists == 'true' }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: OptsLib_build | |
path: OptsLib_build # Adjust this to download the artifact directly under 'OptsLib_build' | |
- name: Install dependencies | |
run: | | |
apt update -yqq | |
apt install git libpq-dev libzip-dev zip make wget gnupg -yqq | |
curl -sSLf -o /usr/local/bin/install-php-extensions https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions | |
chmod +x /usr/local/bin/install-php-extensions | |
install-php-extensions zip | |
- name: Install phive | |
run: | | |
wget -O phive.phar https://phar.io/releases/phive.phar | |
wget -O phive.phar.asc https://phar.io/releases/phive.phar.asc | |
gpg --keyserver hkps://keys.openpgp.org --recv-keys 0x9D8A98B29B2D5D79 | |
gpg --verify phive.phar.asc phive.phar | |
chmod +x phive.phar | |
mv phive.phar /usr/local/bin/phive | |
- name: Install phab | |
run: | | |
phive install phpab --global --trust-gpg-keys 0x2A8299CE842DD38C | |
- name: Install latest version of NCC | |
run: | | |
git clone https://git.n64.cc/nosial/ncc.git | |
cd ncc | |
make redist | |
NCC_DIR=$(find build/ -type d -name "ncc_*" | head -n 1) | |
if [ -z "$NCC_DIR" ]; then | |
echo "NCC build directory not found" | |
exit 1 | |
fi | |
php "$NCC_DIR/INSTALL" --auto | |
cd .. && rm -rf ncc | |
- name: Install NCC packages | |
run: | | |
ncc package install --package="OptsLib_build/net.nosial.optslib.ncc" --build-source --reinstall -y --log-level debug | |
- name: Run PHPUnit tests | |
run: | | |
wget https://phar.phpunit.de/phpunit-11.3.phar | |
php phpunit-11.3.phar --configuration phpunit.xml | |
release: | |
needs: [build, test] | |
permissions: write-all | |
runs-on: ubuntu-latest | |
container: | |
image: php:8.3 | |
if: github.event_name == 'release' | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: OptsLib_build | |
path: OptsLib_build | |
- name: Upload to GitHub Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: | | |
OptsLib_build/net.nosial.optslib.ncc | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |