diff --git a/.gitea/workflows/auto-tag-develop.yml b/.gitea/workflows/auto-tag-develop.yml new file mode 100644 index 0000000..5bb4ac5 --- /dev/null +++ b/.gitea/workflows/auto-tag-develop.yml @@ -0,0 +1,45 @@ +name: Auto Tag Develop + +on: + push: + branches: + - develop + +jobs: + tag: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.RELEASE_TOKEN }} + persist-credentials: true + + - name: Create next tag v0.0.X + shell: bash + run: | + set -euo pipefail + + # Skip if current commit already has a v0.0.* tag + if git tag --points-at HEAD | grep -qE '^v0\.0\.'; then + echo "Tag already exists on this commit. Skipping." + exit 0 + fi + + last_tag="$(git tag -l 'v0.0.*' --sort=-v:refname | head -n1 || true)" + if [ -z "$last_tag" ]; then + next_tag="v0.0.1" + else + patch="${last_tag##v0.0.}" + if ! [[ "$patch" =~ ^[0-9]+$ ]]; then + echo "Unexpected tag format: $last_tag" >&2 + exit 1 + fi + next_tag="v0.0.$((patch + 1))" + fi + + git config user.name "gitea-actions" + git config user.email "gitea-actions@local" + git tag "$next_tag" + git push origin "$next_tag" diff --git a/.gitea/workflows/release-artefact.yml b/.gitea/workflows/release-artefact.yml new file mode 100644 index 0000000..26643d7 --- /dev/null +++ b/.gitea/workflows/release-artefact.yml @@ -0,0 +1,61 @@ +name: Build Release Artefact + +on: + push: + tags: + - "v0.0.*" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: "8.4" + extensions: mbstring, intl, pdo_pgsql, xml, curl, zip, gd + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + + - name: Install backend deps (prod) + run: composer install --no-dev --optimize-autoloader --no-interaction + + - name: Build frontend (static) + run: | + cd frontend + npm ci + npm run generate + + - name: Build artefact + shell: bash + run: | + set -euo pipefail + mkdir -p release + tar -czf "release/ferme-${GITHUB_REF_NAME}.tar.gz" \ + bin \ + config \ + migrations \ + public \ + src \ + templates \ + vendor \ + composer.json \ + composer.lock \ + symfony.lock \ + frontend/.output/public + + - name: Create Release + uses: softprops/action-gh-release@v2 + with: + files: release/ferme-${{ github.ref_name }}.tar.gz + env: + GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}