foxygit / doom Log in
commit 0b6b6f7b78730092af7e93304427d22cd127a6d0
Author:     Roman Fomin <rfomin@gmail.com>
AuthorDate: Thu Feb 1 01:50:15 2024 +0700
Commit:     GitHub <noreply@github.com>
CommitDate: Wed Jan 31 19:50:15 2024 +0100

    Add release step to CI workflow (#1643)

    * Add release step to CI workflow

    * Add RELEASE_NOTES.md

    * Add 64-bit suffix for Windows packages
---
 .github/workflows/main.yml | 49 +++++++++++++++++++++++++++++-----------------
 RELEASE_NOTES.md           |  1 +
 configure.ac               | 13 ++++++++++++
 pkg/config.make.in         |  2 ++
 pkg/win32/GNUmakefile      | 14 +++++++++----
 5 files changed, 57 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index fdee9ee0..b17b90eb 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -4,6 +4,8 @@ on:
   push:
     branches:
       - "master"
+    tags:
+      - "*"
     paths-ignore:
       - "**.md"
   pull_request:
@@ -33,6 +35,9 @@ jobs:
             os: macos-latest
             compiler: clang
             shell: bash
+            artifacts: true
+            pkg-path: pkg/osx/*.dmg
+            pkg-dir: pkg/osx

           - name: MSYS2 UCRT64
             os: windows-latest
@@ -40,6 +45,9 @@ jobs:
             shell: 'msys2 {0}'
             msystem: ucrt64
             msys-env: mingw-w64-ucrt-x86_64
+            artifacts: true
+            pkg-path: pkg/win32/*.zip
+            pkg-dir: pkg/win32

           - name: MSYS2 MINGW32
             os: windows-latest
@@ -47,6 +55,9 @@ jobs:
             shell: 'msys2 {0}'
             msystem: mingw32
             msys-env: mingw-w64-i686
+            artifacts: true
+            pkg-path: pkg/win32/*.zip
+            pkg-dir: pkg/win32

     steps:
       - name: Install pandoc
@@ -115,28 +126,30 @@ jobs:
           PREFIX=`sed -n '/PROGRAM_PREFIX/p' ${PWD}/config.h | cut -d '"' -f 2`
           make -j4 -C quickcheck check SOURCE_PORT=$PWD/src/${PREFIX}doom

-      - name: Package (macOS)
-        if: runner.os == 'macOS'
-        run: |
-          cd pkg/osx
-          make
-
-      - name: Package (MSYS2)
-        if: runner.os == 'Windows'
+      - name: Package
+        if: ${{ matrix.config.artifacts }}
         run: |
-          cd pkg/win32
+          cd ${{ matrix.config.pkg-dir }}
           make

-      - name: Upload artifacts (macOS)
-        if: runner.os == 'macOS'
+      - name: Upload artifacts
+        if: ${{ matrix.config.artifacts }}
         uses: actions/upload-artifact@v3
         with:
-          name: macOS
-          path: pkg/osx/*.dmg
+          name: ${{ matrix.config.name }}
+          path: ${{ matrix.config.pkg-path }}

-      - name: Upload artifacts (MSYS2)
-        if: runner.os == 'Windows'
-        uses: actions/upload-artifact@v3
+      - name: Extract Package String
+        if: ${{ contains(github.ref, 'tags') }}
+        run: |
+          PACKAGE_STRING=`sed -n '/PACKAGE_STRING/p' ${PWD}/config.h | cut -d '"' -f 2`
+          echo "PACKAGE_STRING=${PACKAGE_STRING}" >> $GITHUB_ENV
+
+      - name: Release
+        if: ${{ contains(github.ref, 'tags') && matrix.config.artifacts }}
+        uses: ncipollo/release-action@v1
         with:
-          name: Win-${{ matrix.config.msystem }}
-          path: pkg/win32/*.zip
+          name: ${{ env.PACKAGE_STRING }}
+          bodyFile: RELEASE_NOTES.md
+          allowUpdates: true
+          artifacts: ${{ matrix.config.pkg-path }}
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
new file mode 100644
index 00000000..345e6aef
--- /dev/null
+++ b/RELEASE_NOTES.md
@@ -0,0 +1 @@
+Test
diff --git a/configure.ac b/configure.ac
index d464f579..8f0cf923 100644
--- a/configure.ac
+++ b/configure.ac
@@ -31,6 +31,19 @@ then
         CFLAGS="-O$OPT_LEVEL -g $WARNINGS $orig_CFLAGS"
 fi

+AC_CANONICAL_TARGET
+TARGET_OS=""
+AS_CASE([$target_cpu],
+        [x86_64|aarch64*],
+        [
+            TARGET_OS="64"
+        ],
+        [i?86|arm*],
+        [
+            TARGET_OS="32"
+        ])
+AC_SUBST([TARGET_OS])
+
 PKG_CHECK_MODULES(SDL, [sdl2 >= 2.0.14])
 # Check for SDL2_mixer
 AC_ARG_ENABLE([sdl2mixer],
diff --git a/pkg/config.make.in b/pkg/config.make.in
index b08a2f97..972be10e 100644
--- a/pkg/config.make.in
+++ b/pkg/config.make.in
@@ -19,6 +19,8 @@ PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_VERSION = @PACKAGE_VERSION@

+TARGET_OS = @TARGET_OS@
+
 # Documentation files to distribute with packages.

 DOC_FILES = README.md        \
diff --git a/pkg/win32/GNUmakefile b/pkg/win32/GNUmakefile
index 32c32e87..e14f564e 100644
--- a/pkg/win32/GNUmakefile
+++ b/pkg/win32/GNUmakefile
@@ -3,10 +3,16 @@ include ../config.make

 TOPLEVEL=../..

-DOOM_ZIP=$(PROGRAM_PREFIX)doom-$(PACKAGE_VERSION)-win32.zip
-HERETIC_ZIP=$(PROGRAM_PREFIX)heretic-$(PACKAGE_VERSION)-win32.zip
-HEXEN_ZIP=$(PROGRAM_PREFIX)hexen-$(PACKAGE_VERSION)-win32.zip
-STRIFE_ZIP=$(PROGRAM_PREFIX)strife-$(PACKAGE_VERSION)-win32.zip
+ifeq ($(TARGET_OS),64)
+    POSTFIX=win64
+else
+    POSTFIX=win32
+endif
+
+DOOM_ZIP=$(PROGRAM_PREFIX)doom-$(PACKAGE_VERSION)-$(POSTFIX).zip
+HERETIC_ZIP=$(PROGRAM_PREFIX)heretic-$(PACKAGE_VERSION)-$(POSTFIX).zip
+HEXEN_ZIP=$(PROGRAM_PREFIX)hexen-$(PACKAGE_VERSION)-$(POSTFIX).zip
+STRIFE_ZIP=$(PROGRAM_PREFIX)strife-$(PACKAGE_VERSION)-$(POSTFIX).zip
 ZIPS=$(DOOM_ZIP) $(HERETIC_ZIP) $(HEXEN_ZIP) $(STRIFE_ZIP)

 DLL_FILES=$(TOPLEVEL)/src/SDL.dll                      \