From 4de4f1745fe8717f626d69391dd20b8db72a8d49 Mon Sep 17 00:00:00 2001 From: Vladimir Avtsenov Date: Sat, 15 Feb 2025 06:25:34 +0300 Subject: [PATCH] fix ci --- .github/workflows/build-for-release.yml | 39 +++++++++++++++++++------ Makefile | 32 ++++++++++++-------- 2 files changed, 50 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build-for-release.yml b/.github/workflows/build-for-release.yml index cac57fd..638f4a1 100644 --- a/.github/workflows/build-for-release.yml +++ b/.github/workflows/build-for-release.yml @@ -1,36 +1,40 @@ name: Build and Package OPKG on: + push: + branches: + - develop + - main release: types: [published] jobs: build: - name: Build for ${{ matrix.arch }} + name: Build for "${{ matrix.target }}" runs-on: ubuntu-latest strategy: matrix: include: - - arch: mipsel-3.4 + - target: mipsel-3.4 goos: linux goarch: mipsle gomips: softfloat - - arch: mips-3.4 + - target: mips-3.4 goos: linux goarch: mips gomips: softfloat - - arch: aarch64-3.10 + - target: aarch64-3.10 goos: linux goarch: arm64 - - arch: armv7-3.2 + - target: armv7-3.2 goos: linux goarch: arm goarm: 7 - - arch: armv7-2.6 + - target: armv7-2.6 goos: linux goarch: arm goarm: 7 - - arch: armv5-3.2 + - target: armv5-3.2 goos: linux goarch: arm goarm: 5 @@ -53,13 +57,30 @@ jobs: - name: Build and Package run: | - ARCH=${{ matrix.arch }} GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} GOMIPS=${{ matrix.gomips }} GOARM=${{ matrix.goarm }} make + TARGET=${{ matrix.target }} GOOS=${{ matrix.goos }} GOARCH=${{ matrix.goarch }} GOMIPS=${{ matrix.gomips }} GOARM=${{ matrix.goarm }} make + + - name: Fetching file list for artifact + if: ${{ github.event_name != 'release' }} + id: create_file_list + run: | + echo 'file_list<> $GITHUB_OUTPUT + find . -name "magitrickle_*_${{ matrix.target }}.ipk" -print >> $GITHUB_OUTPUT + echo 'EOF' >> $GITHUB_OUTPUT + + - name: Upload artifact + if: ${{ github.event_name != 'release' }} + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.target }} + path: ${{ steps.create_file_list.outputs.file_list }} + if-no-files-found: error - name: Upload asset to release + if: ${{ github.event_name == 'release' }} uses: https://gitea.com/actions/release-action@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: |- - .build/magitrickle_*_${{ matrix.arch }}.ipk + ./.build/magitrickle_*_${{ matrix.target }}.ipk api_key: '${{secrets.RELEASE_TOKEN}}' diff --git a/Makefile b/Makefile index e0a0794..e3982c3 100644 --- a/Makefile +++ b/Makefile @@ -3,28 +3,36 @@ APP_DESCRIPTION = DNS-based routing application APP_MAINTAINER = Vladimir Avtsenov COMMIT = $(shell git rev-parse --short HEAD) -UPSTREAM_VERSION ?= $(shell git describe --tags --abbrev=0 2> /dev/null || echo $(COMMIT)) -OPKG_REVISION = ~git$(shell date +%Y%m%d).$(COMMIT)-1 -ifeq ($(shell git rev-parse --abbrev-ref HEAD), main) - TAG = $(shell git describe --tags --abbrev=0 2> /dev/null || echo $(COMMIT)) - COMMITS_SINCE_TAG = $(shell git rev-list ${TAG}..HEAD --count || echo "0") - OPKG_REVISION = -$(shell expr $(COMMITS_SINCE_TAG) + 1) +UPSTREAM_VERSION = $(shell git describe --tags --abbrev=0 2> /dev/null || echo "0.0.0") +PKG_REVISION ?= 1 + +TAG = $(shell git describe --tags --abbrev=0 2> /dev/null) +COMMITS_SINCE_TAG = $(shell git rev-list ${TAG}..HEAD --count 2>/dev/null) +PRERELEASE_POSTFIX = +PRERELEASE_DATE = $(shell date +%Y%m%d) +ifneq ($(TAG),) + ifneq ($(COMMITS_SINCE_TAG), 0) + PRERELEASE_POSTFIX = ~git$(PRERELEASE_DATE).$(COMMIT) + endif +else + PRERELEASE_POSTFIX = ~git$(PRERELEASE_DATE).$(COMMIT) endif -ARCH ?= mipsel-3.4 +TARGET ?= mipsel-3.4 GOOS ?= linux GOARCH ?= mipsle GOMIPS ?= softfloat GOARM ?= BUILD_DIR = ./.build -PKG_DIR = $(BUILD_DIR)/$(ARCH) +PKG_DIR = $(BUILD_DIR)/$(TARGET) BIN_DIR = $(PKG_DIR)/data/opt/bin -PARAMS = -v -a -trimpath -ldflags="-X 'magitrickle/constant.Version=$(UPSTREAM_VERSION)$(OPKG_REVISION)' -X 'magitrickle/constant.Commit=$(COMMIT)' -w -s" +PARAMS = -v -a -trimpath -ldflags="-X 'magitrickle/constant.Version=$(UPSTREAM_VERSION)$(PRERELEASE_POSTFIX)' -X 'magitrickle/constant.Commit=$(COMMIT)' -w -s" all: clear build_daemon package clear: + echo $(shell git rev-parse --abbrev-ref HEAD) rm -rf $(PKG_DIR) build_daemon: @@ -34,8 +42,8 @@ package: @mkdir -p $(PKG_DIR)/control @echo '2.0' > $(PKG_DIR)/debian-binary @echo 'Package: $(APP_NAME)' > $(PKG_DIR)/control/control - @echo 'Version: $(UPSTREAM_VERSION)$(OPKG_REVISION)' >> $(PKG_DIR)/control/control - @echo 'Architecture: $(ARCH)' >> $(PKG_DIR)/control/control + @echo 'Version: $(UPSTREAM_VERSION)$(PRERELEASE_POSTFIX)-$(PKG_REVISION)' >> $(PKG_DIR)/control/control + @echo 'Architecture: $(TARGET)' >> $(PKG_DIR)/control/control @echo 'Maintainer: $(APP_MAINTAINER)' >> $(PKG_DIR)/control/control @echo 'Description: $(APP_DESCRIPTION)' >> $(PKG_DIR)/control/control @echo 'Section: net' >> $(PKG_DIR)/control/control @@ -44,4 +52,4 @@ package: @cp -r ./opt $(PKG_DIR)/data/ @fakeroot sh -c "tar -C $(PKG_DIR)/control -czvf $(PKG_DIR)/control.tar.gz ." @fakeroot sh -c "tar -C $(PKG_DIR)/data -czvf $(PKG_DIR)/data.tar.gz ." - @tar -C $(PKG_DIR) -czvf $(BUILD_DIR)/$(APP_NAME)_$(UPSTREAM_VERSION)$(OPKG_REVISION)_$(ARCH).ipk ./debian-binary ./control.tar.gz ./data.tar.gz + @tar -C $(PKG_DIR) -czvf $(BUILD_DIR)/$(APP_NAME)_$(UPSTREAM_VERSION)$(PRERELEASE_POSTFIX)-$(PKG_REVISION)_$(TARGET).ipk ./debian-binary ./control.tar.gz ./data.tar.gz