diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index fc5859c..e048eaf 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -20,24 +20,37 @@ jobs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - uses: actions/checkout@v4 + with: + fetch-depth: 2 - name: Build matrix id: set-matrix run: | if [ -n "${{ github.event.inputs.package }}" ]; then - # Ручной запуск — конкретный пакет - MATRIX=$(echo '["${{ github.event.inputs.package }}"]') + MATRIX="[\"${{ github.event.inputs.package }}\"]" else - # Авто — только изменённые пакеты - CHANGED=$(git diff --name-only HEAD~1 HEAD | grep -oP '^[^/]+(?=/)' | sort -u | \ - while read dir; do [ -f "$dir/nfpm.yaml" ] && echo "$dir"; done) - MATRIX=$(echo "$CHANGED" | jq -R . | jq -sc .) + if git rev-parse HEAD~1 >/dev/null 2>&1; then + CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD) + else + CHANGED_FILES=$(git diff-tree --no-commit-id -r --name-only HEAD) + fi + + CHANGED=$(echo "$CHANGED_FILES" \ + | grep -oP '^[^/]+(?=/)' \ + | sort -u \ + | while read dir; do + [ -f "$dir/nfpm.yaml" ] && echo "$dir" + done) + + MATRIX=$(echo "$CHANGED" | grep -v '^$' | jq -R . | jq -sc .) fi + echo "matrix=$MATRIX" >> $GITHUB_OUTPUT + echo "Detected packages: $MATRIX" build: needs: discover - if: ${{ needs.discover.outputs.matrix != '[]' }} + if: ${{ needs.discover.outputs.matrix != '[]' && needs.discover.outputs.matrix != '' }} runs-on: ubuntu-latest strategy: matrix: @@ -51,29 +64,36 @@ jobs: run: | VERSION=$(cat ${{ matrix.package }}/VERSION | tr -d '[:space:]') echo "VERSION=$VERSION" >> $GITHUB_ENV + echo "Building ${{ matrix.package }} v$VERSION" - name: Download upstream run: | cd ${{ matrix.package }} - bash scripts/download.sh $VERSION # ← каждый пакет знает как скачать себя + bash scripts/download.sh "$VERSION" - name: Build deb run: | docker run --rm \ - -v $PWD/${{ matrix.package }}:/work \ + -v "$PWD/${{ matrix.package }}:/work" \ -w /work \ - -e VERSION=${{ env.VERSION }} \ + -e VERSION="${{ env.VERSION }}" \ goreleaser/nfpm package \ --config nfpm.yaml \ --target /work \ --packager deb - - name: Publish + - name: Publish to Gitea run: | DEB=$(ls ${{ matrix.package }}/*.deb | head -1) - HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \ + echo "Publishing: $DEB" + HTTP_CODE=$(curl -s -o /tmp/upload_response.txt -w "%{http_code}" \ --user "andrew:${{ secrets.GITEA_TOKEN }}" \ --upload-file "$DEB" \ "https://git.nakolenke.org/api/packages/nakolenke-pub/debian/pool/trixie/main/upload") + cat /tmp/upload_response.txt echo "HTTP: $HTTP_CODE" - [ "$HTTP_CODE" = "201" ] || exit 1 + if [ "$HTTP_CODE" != "201" ]; then + echo "Failed to publish" + exit 1 + fi + echo "Successfully published $DEB"