on: release: types: [released] name: Upload Release Asset jobs: build: name: Upload Release Asset runs-on: ubuntu-latest steps: - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: 8.1 extensions: mysql, mysqlnd, sqlite3, bcmath, gd, curl, zip, openssl, mbstring, xml - name: Checkout code uses: actions/checkout@v1 with: ref: v5-develop - name: Copy .env file run: | cp .env.example .env - name: Install composer dependencies run: | composer config -g github-oauth.github.com ${{ secrets.GITHUB_TOKEN }} composer install --no-dev - name: Prepare Laravel Application run: | cp .env.example .env php artisan key:generate --force php artisan optimize php artisan storage:link --force sudo php artisan cache:clear sudo find ./vendor/bin/ -type f -exec chmod +x {} \; sudo find ./ -type d -exec chmod 755 {} \; - name: Prepare React FrontEnd run: | git clone https://${{secrets.commit_secret}}@github.com/invoiceninja/ui.git cd ui git checkout develop npm i npm run build mkdir -p ../public/react/${{ github.event.release.tag_name }}/ cp -r dist/react/* ../public/react/${{ github.event.release.tag_name }}/ cp -r dist/react/* ../public/react/ cp dist/index.html ../resources/views/react/index.blade.php mkdir -p ../public/tinymce_6.4.2/tinymce/js/ cp -r node_modules/tinymce ../public/tinymce_6.4.2/tinymce/js/ cd .. rm -rf ui php artisan ninja:react - name: Prepare JS/CSS assets run: | npm i npm run production - name: Cleanup Builds run: | sudo rm -rf bootstrap/cache/* sudo rm -rf node_modules sudo rm -rf .git sudo rm .env - name: Build project run: | zip -r /home/runner/work/invoiceninja/invoiceninja.zip .* -x "../*" shopt -s dotglob tar --exclude='public/storage' --exclude='.htaccess' --exclude='invoiceninja.zip' -zcvf /home/runner/work/invoiceninja/invoiceninja.tar * - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: | /home/runner/work/invoiceninja/invoiceninja.tar /home/runner/work/invoiceninja/invoiceninja.zip