name: release on: push: tags: - "v*.*.*" jobs: build-release-linux: runs-on: ubuntu-latest container: ubuntu:24.04 defaults: run: shell: bash steps: - name: Install base packages run: | apt-get update apt-get install -y wget tar git make curl - name: Configure gcc if: ${{ matrix.toolset == 'gcc' }} uses: ./.github/actions/configure-gcc with: gcc_version: 14 enable_x86: "true" - name: Checkout repository uses: actions/checkout@v6 with: submodules: recursive - name: Premake generate working-directory: ${{ github.workspace }} env: PREMAKE_NO_PROMPT: 1 run: ./generate.sh --cc=gcc --oat-version=${{ github.ref_name }} - name: Build working-directory: ${{ github.workspace }} run: | scripts/build.sh release x86 chmod +x build/bin/Release_x86/{ImageConverter,Unlinker,Linker} - name: Upload artifacts uses: actions/upload-artifact@v6 with: name: oat-linux path: | ${{ github.workspace }}/build/bin/Release_x86 build-release-windows: runs-on: windows-2025-vs2026 steps: - name: Checkout repository uses: actions/checkout@v6 with: submodules: recursive - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@v2.0.0 - name: Premake generate working-directory: ${{ github.workspace }} env: PREMAKE_NO_PROMPT: 1 run: ./generate.bat --oat-version=${{ github.ref_name }} - name: Build working-directory: ${{ github.workspace }} run: msbuild /m /p:Configuration=Release /p:Platform=Win32 build - name: Upload artifacts uses: actions/upload-artifact@v6 with: name: oat-windows path: | ${{ github.workspace }}/build/bin/Release_x86 release: needs: - build-release-linux - build-release-windows runs-on: ubuntu-latest permissions: actions: read contents: write steps: - uses: actions/download-artifact@v7 - name: Zip artifacts run: | 7z a oat-linux.tar ./oat-linux/* 7z a oat-linux.tar.gz ./oat-linux.tar 7z a oat-windows.zip ./oat-windows/* - uses: ncipollo/release-action@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: artifacts: "oat-linux.tar.gz,oat-windows.zip" artifactErrorsFailBuild: true allowUpdates: true draft: true omitBodyDuringUpdate: true omitDraftDuringUpdate: true