diff --git a/.github/workflows/desktop-macos-release.yaml b/.github/workflows/desktop-macos-release.yaml deleted file mode 100644 index dd620e16..00000000 --- a/.github/workflows/desktop-macos-release.yaml +++ /dev/null @@ -1,87 +0,0 @@ -name: Desktop MacOS Release -on: - workflow_run: - workflows: ["Desktop MacOS Testflight Release"] - types: - - completed - -jobs: - deploy: - if: ${{ github.event.workflow_run.conclusion == 'success' }} - runs-on: macos-14 - timeout-minutes: 40 - permissions: - contents: write - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup environment - uses: ./.github/actions/setup-gradle - with: - gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }} - - # Developer ID Application - - name: Import signing certificate - uses: apple-actions/import-codesign-certs@v3 - with: - p12-file-base64: ${{ secrets.SIGNING_CERTIFICATE_P12_DATA_MACOS }} - p12-password: ${{ secrets.SIGNING_CERTIFICATE_PASSWORD_MACOS }} - - - name: Update Licenses file - run: ./gradlew desktopApp:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/resources/ - - - name: Create path variables - id: path_variables - run: | - tag=$(git describe --tags --abbrev=0 --match "*-desktop") - version=$(echo "$tag" | sed 's/-desktop$//') - name="FeedFlow-${version}.dmg" - path="desktopApp/build/release/main-release/dmg/${name}" - echo "TAG=$tag" >> $GITHUB_ENV - echo "VERSION=$version" >> $GITHUB_ENV - echo "RELEASE_PATH=$path" >> $GITHUB_ENV - - - name: Create Properties file - run: | - echo "is_release=true" >> desktopApp/src/jvmMain/resources/props.properties - echo "sentry_dns=$SENTRY_DNS" >> desktopApp/src/jvmMain/resources/props.properties - echo "version=$VERSION" >> desktopApp/src/jvmMain/resources/props.properties - echo "dropbox_key=$DROPBOX_API_KEY" >> desktopApp/src/jvmMain/resources/props.properties - env: - SENTRY_DNS: ${{ secrets.SENTRY_DNS }} - VERSION: ${{ env.VERSION }} - DROPBOX_API_KEY: ${{ secrets.DROPBOX_API_KEY }} - - - name: Create DMG - run: ./gradlew packageReleaseDmg - - - name: Upload reports - if: failure() - uses: actions/upload-artifact@v4 - with: - name: reports - path: | - **/build/compose/logs/* - - - name: Notarization - run: | - xcrun notarytool submit $RELEASE_PATH --apple-id $APPLE_ID_NOTARIZATION --password $NOTARIZATION_PWD --team-id $APPSTORE_TEAM_ID --wait - xcrun stapler staple $RELEASE_PATH - env: - APPLE_ID_NOTARIZATION: ${{ secrets.APPLE_ID_NOTARIZATION }} - APPSTORE_TEAM_ID: ${{ secrets.APPSTORE_TEAM_ID }} - NOTARIZATION_PWD: ${{ secrets.NOTARIZATION_PWD }} - RELEASE_PATH: ${{ env.RELEASE_PATH }} - - - name: Upload binaries to release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: ${{ env.RELEASE_PATH }} - tag: ${{ env.TAG }} - overwrite: true - draft: true - body: "Release ${{ env.VERSION }}" diff --git a/.github/workflows/desktop-macos-testflight-release.yaml b/.github/workflows/desktop-macos-testflight-release.yaml deleted file mode 100644 index 6958ceab..00000000 --- a/.github/workflows/desktop-macos-testflight-release.yaml +++ /dev/null @@ -1,86 +0,0 @@ -name: Desktop MacOS Testflight Release -on: - push: - tags: - - '*-desktop' - -jobs: - deploy: - runs-on: macos-14 - timeout-minutes: 40 - permissions: - contents: write - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup environment - uses: ./.github/actions/setup-gradle - with: - gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }} - - - name: Import Mac App Distribution and Installer certificate - uses: apple-actions/import-codesign-certs@v3 - with: - p12-file-base64: ${{ secrets.MAC_APP_DISTRIBUTION_INSTALLER_CERTIFICATE }} - p12-password: ${{ secrets.MAC_APP_DISTRIBUTION_INSTALLER_CERTIFICATE_PWD }} - - - name: Create Embedded Provision Profile - run: | - echo "$EMBEDDED_PROVISION" > desktopApp/embedded.provisionprofile.b64 - base64 -d -i desktopApp/embedded.provisionprofile.b64 > desktopApp/embedded.provisionprofile - env: - EMBEDDED_PROVISION: ${{ secrets.EMBEDDED_PROVISION }} - - - name: Create Runtime Provision Profile - run: | - echo "$RUNTIME_PROVISION" > desktopApp/runtime.provisionprofile.b64 - base64 -d -i desktopApp/runtime.provisionprofile.b64 > desktopApp/runtime.provisionprofile - env: - RUNTIME_PROVISION: ${{ secrets.RUNTIME_PROVISION }} - - - name: Update Licenses file - run: ./gradlew desktopApp:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/resources/ - - - name: Create path variables - id: path_variables - run: | - tag=$(git describe --tags --abbrev=0 --match "*-desktop") - version=$(echo "$tag" | sed 's/-desktop$//') - name="FeedFlow-${version}.pkg" - path="desktopApp/build/release/main-release/pkg/${name}" - echo "TAG=$tag" >> $GITHUB_ENV - echo "VERSION=$version" >> $GITHUB_ENV - echo "RELEASE_PATH=$path" >> $GITHUB_ENV - - - name: Create Properties file - run: | - echo "is_release=true" >> desktopApp/src/jvmMain/resources/props.properties - echo "sentry_dns=$SENTRY_DNS" >> desktopApp/src/jvmMain/resources/props.properties - echo "version=$VERSION" >> desktopApp/src/jvmMain/resources/props.properties - echo "dropbox_key=$DROPBOX_API_KEY" >> desktopApp/src/jvmMain/resources/props.properties - env: - SENTRY_DNS: ${{ secrets.SENTRY_DNS }} - VERSION: ${{ env.VERSION }} - DROPBOX_API_KEY: ${{ secrets.DROPBOX_API_KEY }} - - - name: Create PKG - run: ./gradlew packageReleasePkg -PmacOsAppStoreRelease=true - - - name: Upload reports - if: failure() - uses: actions/upload-artifact@v4 - with: - name: reports - path: | - **/build/compose/logs/* - - - uses: Apple-Actions/upload-testflight-build@v1 - with: - app-type: 'osx' - app-path: ${{ env.RELEASE_PATH }} - issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} - api-key-id: ${{ secrets.APPSTORE_KEY_ID }} - api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} diff --git a/.github/workflows/desktop-gh-release.yml b/.github/workflows/desktop-release.yml similarity index 61% rename from .github/workflows/desktop-gh-release.yml rename to .github/workflows/desktop-release.yml index 4cffbd22..9a41056c 100644 --- a/.github/workflows/desktop-gh-release.yml +++ b/.github/workflows/desktop-release.yml @@ -1,23 +1,100 @@ -name: Desktop GitHub Release +name: Desktop Release on: - workflow_dispatch: - { } - workflow_run: - workflows: ["Desktop MacOS Testflight Release"] - types: - - completed + push: + tags: + - '*-desktop' jobs: + + # -------------------------------------- # + # TestFlight Deploy + # -------------------------------------- # + testflight-deploy: + runs-on: macos-14 + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup environment + uses: ./.github/actions/setup-gradle + with: + gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }} + + - name: Import Mac App Distribution and Installer certificate + uses: apple-actions/import-codesign-certs@v3 + with: + p12-file-base64: ${{ secrets.MAC_APP_DISTRIBUTION_INSTALLER_CERTIFICATE }} + p12-password: ${{ secrets.MAC_APP_DISTRIBUTION_INSTALLER_CERTIFICATE_PWD }} + + - name: Create Embedded Provision Profile + run: | + echo "$EMBEDDED_PROVISION" > desktopApp/embedded.provisionprofile.b64 + base64 -d -i desktopApp/embedded.provisionprofile.b64 > desktopApp/embedded.provisionprofile + env: + EMBEDDED_PROVISION: ${{ secrets.EMBEDDED_PROVISION }} + + - name: Create Runtime Provision Profile + run: | + echo "$RUNTIME_PROVISION" > desktopApp/runtime.provisionprofile.b64 + base64 -d -i desktopApp/runtime.provisionprofile.b64 > desktopApp/runtime.provisionprofile + env: + RUNTIME_PROVISION: ${{ secrets.RUNTIME_PROVISION }} + + - name: Update Licenses file + run: ./gradlew desktopApp:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/resources/ + + - name: Create path variables + id: path_variables + run: | + tag=$(git describe --tags --abbrev=0 --match "*-desktop") + version=$(echo "$tag" | sed 's/-desktop$//') + name="FeedFlow-${version}.pkg" + path="desktopApp/build/release/main-release/pkg/${name}" + echo "TAG=$tag" >> $GITHUB_ENV + echo "VERSION=$version" >> $GITHUB_ENV + echo "RELEASE_PATH=$path" >> $GITHUB_ENV + + - name: Create Properties file + run: | + echo "is_release=true" >> desktopApp/src/jvmMain/resources/props.properties + echo "sentry_dns=$SENTRY_DNS" >> desktopApp/src/jvmMain/resources/props.properties + echo "version=$VERSION" >> desktopApp/src/jvmMain/resources/props.properties + echo "dropbox_key=$DROPBOX_API_KEY" >> desktopApp/src/jvmMain/resources/props.properties + env: + SENTRY_DNS: ${{ secrets.SENTRY_DNS }} + VERSION: ${{ env.VERSION }} + DROPBOX_API_KEY: ${{ secrets.DROPBOX_API_KEY }} + + - name: Create PKG + run: ./gradlew packageReleasePkg -PmacOsAppStoreRelease=true + + - name: Upload reports + if: failure() + uses: actions/upload-artifact@v4 + with: + name: reports + path: | + **/build/compose/logs/* + + - uses: Apple-Actions/upload-testflight-build@v1 + with: + app-type: 'osx' + app-path: ${{ env.RELEASE_PATH }} + issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} + api-key-id: ${{ secrets.APPSTORE_KEY_ID }} + api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} + + # -------------------------------------- # + # Macos Build + # -------------------------------------- # build-macos: - # TODO : restore - #if: ${{ github.event.workflow_run.conclusion == 'success' }} + needs: testflight-deploy runs-on: macos-14 outputs: - artifact_name: ${{ steps.path_variables.outputs.artifact_name }} release_tag: ${{ steps.path_variables.outputs.tag }} timeout-minutes: 40 - permissions: - contents: write steps: - uses: actions/checkout@v4 @@ -50,8 +127,7 @@ jobs: echo "TAG=$tag" >> $GITHUB_ENV echo "VERSION=$version" >> $GITHUB_ENV echo "RELEASE_PATH=$path" >> $GITHUB_ENV - echo "artifact_name=$name" >> $GITHUB_OUTPUT - + echo "ARTIFACT_NAME=$name" >> $GITHUB_ENV - name: Create Properties file run: | @@ -75,33 +151,30 @@ jobs: path: | **/build/compose/logs/* -# TODO: Restore -# - name: Notarization -# run: | -# xcrun notarytool submit $RELEASE_PATH --apple-id $APPLE_ID_NOTARIZATION --password $NOTARIZATION_PWD --team-id $APPSTORE_TEAM_ID --wait -# xcrun stapler staple $RELEASE_PATH -# env: -# APPLE_ID_NOTARIZATION: ${{ secrets.APPLE_ID_NOTARIZATION }} -# APPSTORE_TEAM_ID: ${{ secrets.APPSTORE_TEAM_ID }} -# NOTARIZATION_PWD: ${{ secrets.NOTARIZATION_PWD }} -# RELEASE_PATH: ${{ env.RELEASE_PATH }} + - name: Notarization + run: | + xcrun notarytool submit $RELEASE_PATH --apple-id $APPLE_ID_NOTARIZATION --password $NOTARIZATION_PWD --team-id $APPSTORE_TEAM_ID --wait + xcrun stapler staple $RELEASE_PATH + env: + APPLE_ID_NOTARIZATION: ${{ secrets.APPLE_ID_NOTARIZATION }} + APPSTORE_TEAM_ID: ${{ secrets.APPSTORE_TEAM_ID }} + NOTARIZATION_PWD: ${{ secrets.NOTARIZATION_PWD }} + RELEASE_PATH: ${{ env.RELEASE_PATH }} - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: ${{ steps.path_variables.outputs.artifact_name }} + name: ${{ env.ARTIFACT_NAME }} path: ${{ env.RELEASE_PATH }} retention-days: 1 + # -------------------------------------- # + # Windows Build + # -------------------------------------- # build-windows: - # TODO: restore - #if: ${{ github.event.workflow_run.conclusion == 'success' }} + needs: testflight-deploy runs-on: windows-latest - outputs: - artifact_name: ${{ steps.path_variables.outputs.artifact_name }} timeout-minutes: 40 - permissions: - contents: write steps: - uses: actions/checkout@v4 @@ -127,7 +200,7 @@ jobs: "TAG=$tag" >> $env:GITHUB_ENV "VERSION=$version" >> $env:GITHUB_ENV "RELEASE_PATH=$path" >> $env:GITHUB_ENV - echo "artifact_name=$name" >> $env:GITHUB_OUTPUT + "ARTIFACT_NAME=$name" >> $env:GITHUB_ENV - name: Create Properties file @@ -149,7 +222,7 @@ jobs: uses: actions/upload-artifact@v4 with: path: ${{ env.RELEASE_PATH }} - name: ${{ steps.path_variables.outputs.artifact_name }} + name: ${{ env.ARTIFACT_NAME }} retention-days: 1 - name: Upload reports @@ -160,17 +233,13 @@ jobs: path: | **/build/compose/logs/* - + # -------------------------------------- # + # Linux Build + # -------------------------------------- # build-linux: - # TODO: Restore - #if: ${{ github.event.workflow_run.conclusion == 'success' }} + needs: testflight-deploy runs-on: ubuntu-latest - outputs: - deb_name: ${{ steps.path_variables.outputs.deb_name }} - rpm_name: ${{ steps.path_variables.outputs.rpm_name }} timeout-minutes: 40 - permissions: - contents: write steps: - uses: actions/checkout@v4 @@ -182,7 +251,6 @@ jobs: with: gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }} - - name: Update Licenses file run: ./gradlew desktopApp:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/resources/ @@ -199,8 +267,8 @@ jobs: echo "VERSION=$version" >> $GITHUB_ENV echo "RELEASE_PATH_DEB=$path_deb" >> $GITHUB_ENV echo "RELEASE_PATH_RPM=$path_rpm" >> $GITHUB_ENV - echo "deb_name=$name_deb" >> $GITHUB_OUTPUT - echo "rpm_name=$name_rpm" >> $GITHUB_OUTPUT + echo "DEB_NAME=$name_deb" >> $GITHUB_ENV + echo "RPM_NAME=$name_rpm" >> $GITHUB_ENV - name: Create Properties file run: | @@ -220,14 +288,14 @@ jobs: uses: actions/upload-artifact@v4 with: path: ${{ env.RELEASE_PATH_RPM }} - name: ${{ steps.path_variables.outputs.rpm_name }} + name: ${{ env.RPM_NAME }} retention-days: 1 - name: Upload DEB uses: actions/upload-artifact@v4 with: path: ${{ env.RELEASE_PATH_DEB }} - name: ${{ steps.path_variables.outputs.deb_name }} + name: ${{ env.DEB_NAME }} retention-days: 1 - name: Upload reports @@ -238,8 +306,10 @@ jobs: path: | **/build/compose/logs/* - - release: + # -------------------------------------- # + # Github Release Deploy + # -------------------------------------- # + release-github: needs: [build-linux, build-windows, build-macos] runs-on: ubuntu-latest permissions: @@ -251,34 +321,8 @@ jobs: with: merge-multiple: true - -# - name: Download DEB artifact -# uses: actions/download-artifact@v4 -# with: -# name: ${{ needs.build-linux.outputs.deb_name }} -# -# - name: Download RPM artifact -# uses: actions/download-artifact@v4 -# with: -# name: ${{ needs.build-linux.outputs.rpm_name }} -# -# - name: Download Windows artifact -# uses: actions/download-artifact@v4 -# with: -# name: ${{ needs.build-windows.outputs.artifact_name }} -# -# - name: Download macOS artifact -# uses: actions/download-artifact@v4 -# with: -# name: ${{ needs.build-macos.outputs.artifact_name }} - - name: List artifacts run: ls -R -# .: -# FeedFlow-1.0.82.dmg -# FeedFlow-1.0.82.msi -# feedflow-1.0.82-1.x86_64.rpm -# feedflow_1.0.82_amd64.deb - name: Create Release uses: softprops/action-gh-release@v1 @@ -292,15 +336,3 @@ jobs: tag_name: ${{ needs.build-macos.outputs.release_tag }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - -# - name: Upload binaries to release -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file: ${{ env.RELEASE_PATH }} -# tag: ${{ env.TAG }} -# overwrite: true -# draft: true -# body: "Release ${{ env.VERSION }}" diff --git a/.github/workflows/desktop-linux-release.yaml b/.github/workflows/linux-build.yaml similarity index 80% rename from .github/workflows/desktop-linux-release.yaml rename to .github/workflows/linux-build.yaml index d85e6a1d..1aa87d2a 100644 --- a/.github/workflows/desktop-linux-release.yaml +++ b/.github/workflows/linux-build.yaml @@ -1,19 +1,12 @@ -name: Desktop Linux Release +name: Manual Linux Build on: workflow_dispatch: { } - # TODO: Maybe change to windows - push: - tags: - - '*-desktop' - jobs: - deploy: + linux-build: runs-on: ubuntu-latest timeout-minutes: 40 - permissions: - contents: write steps: - uses: actions/checkout@v4 @@ -25,7 +18,6 @@ jobs: with: gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }} - - name: Update Licenses file run: ./gradlew desktopApp:exportLibraryDefinitions -PaboutLibraries.exportPath=src/main/resources/ @@ -44,7 +36,6 @@ jobs: echo "RELEASE_PATH_RPM=$path_rpm" >> $GITHUB_ENV echo "NAME_DEB=$name_deb" >> $GITHUB_ENV echo "NAME_RPM=$name_rpm" >> $GITHUB_ENV - - name: Create Properties file run: | @@ -60,14 +51,12 @@ jobs: - name: Create RPM & DEB run: ./gradlew packageReleaseDeb packageReleaseRpm - # TODO: remove, just for testing - name: Upload RPM uses: actions/upload-artifact@v4 with: path: ${{ env.RELEASE_PATH_RPM }} name: ${{ env.NAME_RPM }} - # TODO: remove, just for testing - name: Upload DEB uses: actions/upload-artifact@v4 with: @@ -81,13 +70,3 @@ jobs: name: reports path: | **/build/compose/logs/* - -# - name: Upload binaries to release -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file: ${{ env.RELEASE_PATH }} -# tag: ${{ env.TAG }} -# overwrite: true -# draft: true -# body: "Release ${{ env.VERSION }}" diff --git a/.github/workflows/desktop-window-release.yml b/.github/workflows/windows-build.yml similarity index 80% rename from .github/workflows/desktop-window-release.yml rename to .github/workflows/windows-build.yml index b0327020..d35d3aff 100644 --- a/.github/workflows/desktop-window-release.yml +++ b/.github/workflows/windows-build.yml @@ -2,17 +2,11 @@ name: Desktop Windows Release on: workflow_dispatch: { } - # TODO: Maybe change to windows - push: - tags: - - '*-desktop' jobs: - deploy: + windows-build: runs-on: windows-latest timeout-minutes: 40 - permissions: - contents: write steps: - uses: actions/checkout@v4 @@ -55,7 +49,6 @@ jobs: - name: Create MSI run: ./gradlew packageReleaseMsi - # TODO: remove, just for testing - name: Upload asset uses: actions/upload-artifact@v4 with: @@ -69,13 +62,3 @@ jobs: name: reports path: | **/build/compose/logs/* - -# - name: Upload binaries to release -# uses: svenstaro/upload-release-action@v2 -# with: -# repo_token: ${{ secrets.GITHUB_TOKEN }} -# file: ${{ env.RELEASE_PATH }} -# tag: ${{ env.TAG }} -# overwrite: true -# draft: true -# body: "Release ${{ env.VERSION }}"