name: Release on: release: types: [ published ] push: tags: - '*' permissions: contents: write jobs: upload-asset: runs-on: ubuntu-latest container: image: composer:2 steps: - name: Checkout run: | git init . git remote add origin "https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@$(echo "${{ github.server_url }}" | sed -E 's|https?://||')/${{ github.repository }}.git" git fetch --depth 1 origin "${{ github.ref }}" git checkout FETCH_HEAD - name: Build release zip run: | mkdir -p release/laps git archive HEAD | tar -x -C release/laps cd release/laps composer config platform.php 7.4 composer remove composer/installers --no-update composer update --no-dev --optimize-autoloader cd .. zip -q -r laps.zip laps rm -rf laps - name: Upload zip to Gitea Release env: GITEA_TOKEN: ${{ secrets.GITHUB_TOKEN }} API_URL: ${{ github.api_url }} SERVER_URL: ${{ github.server_url }} REPO: ${{ github.repository }} TAG: ${{ github.ref_name }} run: | if [ -z "$API_URL" ]; then API_URL="${SERVER_URL}/api/v1" fi echo "Target API: $API_URL/repos/$REPO" RELEASE_JSON=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$API_URL/repos/$REPO/releases/tags/$TAG") RELEASE_ID=$(echo "$RELEASE_JSON" | php -r '$d = json_decode(file_get_contents("php://stdin")); echo $d->id ?? "";') if [ -z "$RELEASE_ID" ]; then echo "Creating release for tag $TAG..." CREATE_RES=$(curl -s -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":\"Release $TAG\"}" \ "$API_URL/repos/$REPO/releases") RELEASE_ID=$(echo "$CREATE_RES" | php -r '$d = json_decode(file_get_contents("php://stdin")); echo $d->id ?? "";') fi echo "Uploading laps.zip to release ID $RELEASE_ID..." curl -s -f -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@release/laps.zip" \ "$API_URL/repos/$REPO/releases/$RELEASE_ID/assets?name=laps.zip"