diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 58c3aea..48f4c25 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -8,6 +8,9 @@ on: jobs: build-amd64: runs-on: debian-latest + permissions: + contents: read + releases: write env: CMAKE_BUILD_PARALLEL_LEVEL: 2 steps: @@ -16,16 +19,44 @@ jobs: run: | apt-get update apt-get install -y --no-install-recommends \ - cmake g++ pkg-config libgtk-3-dev libcurl4-openssl-dev \ + cmake g++ pkg-config dpkg-dev libgtk-3-dev libcurl4-openssl-dev \ libgstreamer1.0-dev gstreamer1.0-plugins-good libsecret-1-dev \ libjson-glib-dev wtype xdotool - name: Configure run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release - name: Build run: cmake --build build --parallel 2 + - name: Package + run: | + cmake --build build --target package --parallel 2 + mkdir -p dist + cp build/*.deb dist/ + - name: Store package + if: ${{ gitea.event_name == 'workflow_dispatch' }} + uses: actions/upload-artifact@v4 + with: + name: transui-deb-amd64 + path: dist/*.deb + if-no-files-found: error + - name: Upload release package + if: ${{ gitea.event_name == 'release' }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + RELEASE_ID: ${{ gitea.event.release.id }} + RELEASE_URL: ${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/${{ gitea.event.release.id }}/assets + run: | + for package in dist/*.deb; do + curl --fail-with-body --request POST \ + --header "Authorization: token ${GITEA_TOKEN}" \ + --form "attachment=@${package}" \ + "${RELEASE_URL}" + done build-arm64: runs-on: debian-latest-arm64 + permissions: + contents: read + releases: write env: CMAKE_BUILD_PARALLEL_LEVEL: 2 steps: @@ -34,10 +65,35 @@ jobs: run: | apt-get update apt-get install -y --no-install-recommends \ - cmake g++ pkg-config libgtk-3-dev libcurl4-openssl-dev \ + cmake g++ pkg-config dpkg-dev libgtk-3-dev libcurl4-openssl-dev \ libgstreamer1.0-dev gstreamer1.0-plugins-good libsecret-1-dev \ libjson-glib-dev wtype xdotool - name: Configure run: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release - name: Build run: cmake --build build --parallel 2 + - name: Package + run: | + cmake --build build --target package --parallel 2 + mkdir -p dist + cp build/*.deb dist/ + - name: Store package + if: ${{ gitea.event_name == 'workflow_dispatch' }} + uses: actions/upload-artifact@v4 + with: + name: transui-deb-arm64 + path: dist/*.deb + if-no-files-found: error + - name: Upload release package + if: ${{ gitea.event_name == 'release' }} + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + RELEASE_ID: ${{ gitea.event.release.id }} + RELEASE_URL: ${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases/${{ gitea.event.release.id }}/assets + run: | + for package in dist/*.deb; do + curl --fail-with-body --request POST \ + --header "Authorization: token ${GITEA_TOKEN}" \ + --form "attachment=@${package}" \ + "${RELEASE_URL}" + done diff --git a/CMakeLists.txt b/CMakeLists.txt index f3b6b46..ef7acfc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,3 +22,12 @@ target_link_libraries(transui PRIVATE install(TARGETS transui RUNTIME DESTINATION bin) install(FILES data/io.github.transui.Transui.desktop DESTINATION share/applications) + +set(CPACK_GENERATOR "DEB") +set(CPACK_PACKAGE_NAME "transui") +set(CPACK_PACKAGE_CONTACT "Transui contributors") +set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Transui contributors") +set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) +set(CPACK_DEBIAN_PACKAGE_DEPENDS "gstreamer1.0-plugins-good, wtype | xdotool") +set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT) +include(CPack)