diff --git a/.github/workflows/pack_early.yaml b/.github/workflows/pack_early.yaml index 3f2492c..5533d27 100644 --- a/.github/workflows/pack_early.yaml +++ b/.github/workflows/pack_early.yaml @@ -18,7 +18,7 @@ jobs: java-version: '17' distribution: 'zulu' cache: gradle - + - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle diff --git a/.github/workflows/release_drafter.yaml b/.github/workflows/release_drafter.yaml new file mode 100644 index 0000000..50fba0e --- /dev/null +++ b/.github/workflows/release_drafter.yaml @@ -0,0 +1,147 @@ +name: Release Drafter + +on: + push: + tags: + - '*' + +jobs: + package_application: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + lfs: true + - name: Set up JDK 11 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'zulu' + cache: gradle + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew assembleDebug + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: simtak + path: app/build/outputs/apk/debug/app-debug.apk + if-no-files-found: error + retention-days: 1 + + build_extension: + strategy: + matrix: + os_target: + - { os: "windows-latest", target: "i686-pc-windows-msvc", artifact: "armatak.dll" } + - { os: "windows-latest", target: "x86_64-pc-windows-msvc", artifact: "armatak.dll" } + - { os: "ubuntu-latest", target: "x86_64-unknown-linux-gnu", artifact: "libarmatak.so" } + runs-on: ${{ matrix.os_target.os }} + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + lfs: true + - name: Install Rust Toolchain + uses: actions-rs/toolchain@v1 + with: + target: ${{ matrix.os_target.target }} + toolchain: stable + default: true + - name: Install Dependencies (Linux only) + if: matrix.os_target.os == 'ubuntu-latest' + run: sudo apt-get update && sudo apt-get install -y build-essential + - name: Cargo Build + run: cargo build --release --target ${{ matrix.os_target.target }} + - name: Check Stuff + run: ls target/release + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.os_target.target }} + path: target/${{ matrix.os_target.target }}/release/${{ matrix.os_target.artifact }} + if-no-files-found: error + retention-days: 1 + + package: + needs: [build_extension, package_application] + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + lfs: true + - run: mkdir -p ./target/release + - name: Download Windows x64 Artifact + uses: actions/download-artifact@v4 + with: + name: x86_64-pc-windows-msvc + - run: mv ./armatak.dll ./armatak_x64.dll + - name: Download Windows x86 Artifact + uses: actions/download-artifact@v4 + with: + name: i686-pc-windows-msvc + - name: Download Linux x64 Artifact + uses: actions/download-artifact@v4 + with: + name: x86_64-unknown-linux-gnu + - run: mv ./libarmatak.so ./armatak_x64.so + - name: Download Android Application Installer + uses: actions/download-artifact@v4 + with: + name: simtak + - run: mv ./app-debug.apk ./simtak.apk + - name: Setup HEMTT + uses: arma-actions/hemtt@v1 + - name: Build + run: hemtt release + - name: Upload Final Package + uses: actions/upload-artifact@v4 + with: + name: armatak.zip + path: 'releases/armatak-latest.zip' + + get_commits: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + - name: Get previous tag + id: prev_tag + run: echo "::set-output name=tag::$(git describe --tags --abbrev=0 HEAD^)" + - name: Get commit messages + id: commits + run: | + echo "::set-output name=messages::$(git log ${{ steps.prev_tag.outputs.tag }}..HEAD --pretty=format:'%h - %s' | tr '\n' ',' | sed 's/,$//')" + + create_release: + needs: [package, get_commits] + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + with: + lfs: true + - name: Create Release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + release_name: Release ${{ github.ref }} + body: | + Changes in this release: + ${{ steps.commits.outputs.messages }} + draft: false + prerelease: false + - name: Upload Release Asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: releases/armatak-latest.zip + asset_name: armatak-latest.zip + asset_content_type: application/zip \ No newline at end of file