name: MinGW on: push: paths-ignore: - '.gitignore' - '.gitattributes' - 'res/**' - '**.cmd' - '**.md' - '**.rc' - '**.sh' - '**.txt' - '**.xml' pull_request: branches: [master] paths-ignore: - '.gitignore' - '.gitattributes' - 'res/**' - '**.cmd' - '**.md' - '**.rc' - '**.sh' - '**.txt' - '**.xml' jobs: MinGW-Build: runs-on: windows-latest strategy: matrix: include: - { sys: mingw64, env: x86_64, exe: rufus.exe } - { sys: mingw32, env: i686, exe: rufus_x86.exe } defaults: run: shell: msys2 {0} steps: - name: Install MinGW uses: msys2/setup-msys2@v2 with: msystem: ${{ matrix.sys }} update: true install: >- mingw-w64-${{ matrix.env }}-toolchain base-devel autotools git upx - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 submodules: recursive - name: Set ALPHA id: set_alpha shell: bash if: ${{ !startsWith(github.ref, 'refs/tags/') }} # This ONLY works if the shell is bash or if using $env:GITHUB_OUTPUT run: | echo "option=--enable-alpha" >> $GITHUB_OUTPUT sed -b -i 's/VALUE "InternalName", "Rufus"/VALUE "InternalName", "Rufus (ALPHA)"/' ./src/rufus.rc - name: Set BETA id: set_beta shell: bash if: ${{ startsWith(github.ref, 'refs/tags/') && contains(github.ref, 'BETA') }} # This ONLY works if the shell is bash or if using $env:GITHUB_OUTPUT run: | echo "option=--enable-beta" >> $GITHUB_OUTPUT sed -b -i 's/VALUE "InternalName", "Rufus"/VALUE "InternalName", "Rufus (BETA)"/' ./src/rufus.rc - name: Build run: | ./configure --disable-debug ${{ steps.set_alpha.outputs.option }} ${{ steps.set_beta.outputs.option }} make -j4 mv ./src/rufus.exe ./${{ matrix.exe }} strip ./${{ matrix.exe }} upx --lzma --best ./${{ matrix.exe }} - name: Display SHA-256 run: sha256sum ./${{ matrix.exe }} - name: Upload to VirusTotal if: ${{ github.event_name == 'push' && matrix.env == 'x86_64' }} continue-on-error: true run: | curl --request POST --url https://www.virustotal.com/vtapi/v2/file/scan --form apikey=${{ secrets.VIRUSTOTAL_API_KEY }} --form file=@./${{ matrix.exe }} curl --request POST --url https://www.virustotal.com/api/v3/monitor/items --header 'x-apikey: ${{ secrets.VIRUSTOTAL_API_KEY }}' --form path='/${{ matrix.exe }}' --form file=@./${{ matrix.exe }} - name: Upload artifacts if: ${{ github.event_name == 'push' }} uses: actions/upload-artifact@v4 with: name: ${{ matrix.sys }} path: ./*.exe Extra-Step-To-Merge-Artifacts-Thanks-To-Upload-Artifact-v4-Breaking-Backwards-Compatibility: runs-on: windows-latest needs: MinGW-Build steps: - name: Merge Artifacts uses: actions/upload-artifact/merge@v4 if: ${{ github.event_name == 'push' }} with: name: MinGW delete-merged: true