name: CI on: push: branches: - '**' release: types: [created] workflow_dispatch: jobs: release: 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 artifact uses: actions/upload-artifact@v4 with: name: release path: build/release/net.nosial.loglib.ncc release_static: 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_static --log-level debug - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: release_static path: build/release/net.nosial.loglib_static.ncc release-compressed: 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-compressed --log-level debug - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: release-compressed path: build/release/net.nosial.loglib.gz.ncc debug-compressed: 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 debug-compressed --log-level debug - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: debug-compressed path: build/debug/net.nosial.loglib.gz.ncc release-executable: 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-executable --log-level debug - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: release-executable path: build/release/release_executable_gz release_static-executable: 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_static-executable --log-level debug - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: release_static-executable path: build/release/release_static_executable_gz release-compressed-executable: 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-compressed-executable --log-level debug - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: release-compressed-executable path: build/release/release_compressed_executable debug-compressed-executable: 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 debug-compressed-executable --log-level debug - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: debug-compressed-executable path: build/debug/debug_compressed_executable # Checking for phpunit.xml 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_OUTPUT else echo "phpunit-exists=false" >> $GITHUB_OUTPUT fi # Checking for phpdoc.dist.xml check-phpdoc: runs-on: ubuntu-latest outputs: phpdoc-exists: ${{ steps.check.outputs.phpdoc-exists }} steps: - name: Checkout repository uses: actions/checkout@v4 - name: Check for phpdoc.dist.xml id: check run: | if [ -f phpdoc.dist.xml ]; then echo "phpdoc-exists=true" >> $GITHUB_OUTPUT else echo "phpdoc-exists=false" >> $GITHUB_OUTPUT fi generate-phpdoc: needs: [release, check-phpdoc] runs-on: ubuntu-latest container: image: php:8.3 if: needs.check-phpdoc.outputs.phpdoc-exists == 'true' 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: Download PHPDocumentor run: | wget https://phpdoc.org/phpDocumentor.phar chmod +x phpDocumentor.phar - name: Generate PHPDoc run: | php phpDocumentor.phar -d src -t docs - name: Archive PHPDoc run: | zip -r docs.zip docs - name: Upload PHPDoc uses: actions/upload-artifact@v4 with: name: documentation path: docs.zip test: needs: [release, release_static, release-compressed, debug-compressed, release-executable, release_static-executable, release-compressed-executable, debug-compressed-executable, 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: release path: release - 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="release/net.nosial.loglib.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 --log-junit reports/junit.xml --log-teamcity reports/teamcity --testdox-html reports/testdox.html --testdox-text reports/testdox.txt - name: Upload test reports uses: actions/upload-artifact@v4 with: name: reports path: reports release-documentation: needs: generate-phpdoc 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 documentation artifact uses: actions/download-artifact@v4 with: name: documentation path: documentation - name: Upload documentation artifact uses: softprops/action-gh-release@v1 with: files: | documentation/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} release-artifacts: needs: [release, release_static, release-compressed, debug-compressed, release-executable, release_static-executable, release-compressed-executable, debug-compressed-executable] 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 release artifact uses: actions/download-artifact@v4 with: name: release path: release - name: Upload release artifact to release uses: softprops/action-gh-release@v1 with: files: | release/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download release_static artifact uses: actions/download-artifact@v4 with: name: release_static path: release_static - name: Upload release_static artifact to release uses: softprops/action-gh-release@v1 with: files: | release_static/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download release-compressed artifact uses: actions/download-artifact@v4 with: name: release-compressed path: release-compressed - name: Upload release-compressed artifact to release uses: softprops/action-gh-release@v1 with: files: | release-compressed/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download debug-compressed artifact uses: actions/download-artifact@v4 with: name: debug-compressed path: debug-compressed - name: Upload debug-compressed artifact to release uses: softprops/action-gh-release@v1 with: files: | debug-compressed/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download release-executable artifact uses: actions/download-artifact@v4 with: name: release-executable path: release-executable - name: Upload release-executable artifact to release uses: softprops/action-gh-release@v1 with: files: | release-executable/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download release_static-executable artifact uses: actions/download-artifact@v4 with: name: release_static-executable path: release_static-executable - name: Upload release_static-executable artifact to release uses: softprops/action-gh-release@v1 with: files: | release_static-executable/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download release-compressed-executable artifact uses: actions/download-artifact@v4 with: name: release-compressed-executable path: release-compressed-executable - name: Upload release-compressed-executable artifact to release uses: softprops/action-gh-release@v1 with: files: | release-compressed-executable/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Download debug-compressed-executable artifact uses: actions/download-artifact@v4 with: name: debug-compressed-executable path: debug-compressed-executable - name: Upload debug-compressed-executable artifact to release uses: softprops/action-gh-release@v1 with: files: | debug-compressed-executable/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}