Skip to content

Implement LoadMap in NS4. #520

Implement LoadMap in NS4.

Implement LoadMap in NS4. #520

name: Build and release
on:
push:
branches:
- main
- master
- dev
- ci_tests
- dennwc
tags:
- '*'
pull_request:
branches:
- main
- master
- dev
env:
DOCKER_IMAGE_NAME: ghcr.io/noxworld-dev/opennox
jobs:
hybrid_docker_mingw:
# Cross compile Windows binaries with mingw on ArchLinux-based Linux environment
name: Cross compile for Windows
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Get go cache
uses: actions/cache@v3
with:
path: gocache
key: mingw-gocache-v3-${{ hashFiles('**/go.sum') }}
restore-keys: |
mingw-gocache-v3-
- uses: docker://ghcr.io/noxworld-dev/docker-build:latest-win
name: Docker build
- uses: actions/upload-artifact@v3
name: Upload artifacts
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/dev') || (github.ref == 'refs/heads/ci_tests')
with:
name: opennox-win
path: |
build/opennox.exe
build/opennox-hd.exe
build/opennox-debug.exe
build/opennox-debug-hd.exe
build/opennox-server.exe
build/*.dll
if-no-files-found: error
retention-days: 1
hybrid_docker_win7:
# Cross compile Windows binaries with downgraded Go toolkit
name: Cross compile for Windows (Win7 compatible)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Get go cache
uses: actions/cache@v3
with:
path: gocache
key: mingw-win7-gocache-v3-${{ hashFiles('**/go.sum') }}
restore-keys: |
mingw-win7-gocache-v3-
- uses: docker://ghcr.io/noxworld-dev/docker-build:win-go1.21.4
name: Docker build
env:
GOTOOLCHAIN: local
- uses: actions/upload-artifact@v3
name: Upload artifacts
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/dev') || (github.ref == 'refs/heads/ci_tests')
with:
name: opennox-win7
path: |
build/opennox.exe
build/opennox-hd.exe
build/opennox-debug.exe
build/opennox-debug-hd.exe
build/opennox-server.exe
build/*.dll
if-no-files-found: error
retention-days: 1
linux_docker:
# Compile Linux binaries with a golang docker container
name: Compile for Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Get go cache
uses: actions/cache@v3
with:
path: gocache
key: linux-gocache-v3-${{ hashFiles('**/go.sum') }}
restore-keys: |
linux-gocache-v3-
- uses: docker://ghcr.io/noxworld-dev/docker-build:latest-linux
name: Docker build
- uses: actions/upload-artifact@v3
name: Upload artifacts
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/dev') || (github.ref == 'refs/heads/ci_tests')
with:
name: opennox-linux
path: |
build/opennox
build/opennox-hd
build/opennox-server
if-no-files-found: error
retention-days: 1
snapcraft_linux:
name: Go build for Snapcraft
runs-on: 'ubuntu-20.04'
if: startsWith(github.ref, 'refs/tags/v') || (github.ref == 'refs/heads/dev')
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: 'Build Snap package'
uses: snapcore/action-build@v1
id: snapcraft
with:
snapcraft-channel: '7.x'
# - name: 'Upload the package'
# uses: actions/upload-artifact@v3
# with:
# name: opennox-snap
# path: ${{ steps.snapcraft.outputs.snap }}
- name: 'Publish to edge channel'
uses: snapcore/action-publish@v1
if: github.ref == 'refs/heads/dev'
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
with:
snap: ${{ steps.snapcraft.outputs.snap }}
release: edge
- name: 'Publish to stable channel'
uses: snapcore/action-publish@v1
if: startsWith(github.ref, 'refs/tags/v')
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAPCRAFT_STORE_CREDENTIALS }}
with:
snap: ${{ steps.snapcraft.outputs.snap }}
release: stable
docker_server:
name: Docker server build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/dev') || (github.ref == 'refs/heads/ci_tests')
strategy:
fail-fast: true
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Docker build
run: |
make build-server-docker
- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/dev')
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push latest
if: github.ref == 'refs/heads/dev'
run: |
docker push $DOCKER_IMAGE_NAME:dev
- name: Push tagged
if: startsWith(github.ref, 'refs/tags/')
run: |
export VERSION=$(git name-rev --tags --name-only $(git rev-parse HEAD))
docker tag $DOCKER_IMAGE_NAME:dev $DOCKER_IMAGE_NAME:$VERSION
docker push $DOCKER_IMAGE_NAME:$VERSION
- name: Push latest
if: startsWith(github.ref, 'refs/tags/v')
run: |
docker tag $DOCKER_IMAGE_NAME:dev $DOCKER_IMAGE_NAME:latest
docker push $DOCKER_IMAGE_NAME:latest
release_repackage_linux_gzip:
name: Repackage Linux release (tar.gz)
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/ci_tests')
needs: [linux_docker]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Cleanup
run: |
rm -rf /tmp/linux-tmp
mkdir -p /tmp/linux-tmp
- uses: actions/download-artifact@v3
with:
name: opennox-linux
path: /tmp/linux-tmp/
- name: Repackage release
run: |
ls -lh /tmp/linux-tmp/
rm -rf /tmp/opennox-linux
mkdir -p /tmp/opennox-linux
cp /tmp/linux-tmp/* /tmp/opennox-linux
cp ./CHANGELOG.md /tmp/opennox-linux
export VERSION=$(git name-rev --tags --name-only $(git rev-parse HEAD))
cd /tmp/opennox-linux
rm -rf /tmp/opennox-linux-release
mkdir -p /tmp/opennox-linux-release
tar -czf /tmp/opennox-linux-release/OpenNox-linux-$VERSION.tar.gz ./*
- name: Upload the archive
uses: actions/upload-artifact@v3
with:
name: opennox-release-linux-tgz
path: /tmp/opennox-linux-release/OpenNox-linux-*.tar.gz
if-no-files-found: error
release_repackage_linux_appimage:
name: Repackage Linux release (AppImage)
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/appimage-workflow-test') || (github.ref == 'refs/heads/ci_tests')
needs: [linux_docker]
steps:
- uses: actions/download-artifact@v3
name: Retrieving compiled OpenNox
with:
name: opennox-linux
path: build
- uses: docker://ghcr.io/noxworld-dev/docker-build:latest-linux-packaging-appimage
name: Using docker build - latest-linux-packaging-appimage
- uses: actions/upload-artifact@v3
name: Upload the AppImage
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/appimage-workflow-test') || (github.ref == 'refs/heads/ci_tests')
with:
name: opennox-release-linux-appimage
path: |
build/opennox-bundle-i386.AppImage
if-no-files-found: error
retention-days: 1
release_repackage_win:
name: Repackage Windows release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/ci_tests')
needs: [hybrid_docker_mingw]
steps:
- name: Install NSIS
run: sudo apt-get install -y nsis
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Cleanup
run: |
rm -rf /tmp/win-tmp
mkdir -p /tmp/win-tmp
- uses: actions/download-artifact@v3
with:
name: opennox-win
path: /tmp/win-tmp/
- name: Repackage release
run: |
ls -lh /tmp/win-tmp/
rm -rf /tmp/opennox-win
mkdir -p /tmp/opennox-win
cp /tmp/win-tmp/*.exe /tmp/opennox-win/
cp /tmp/win-tmp/*.dll /tmp/opennox-win/
cp ./CHANGELOG.md /tmp/opennox-win/
rm -rf /tmp/opennox-win-release
mkdir -p /tmp/opennox-win-release
export VERSION=$(git name-rev --tags --name-only $(git rev-parse HEAD))
makensis -DVERSION="$VERSION" -DDATA="/tmp/opennox-win/" -DOUTDIR="/tmp/opennox-win-release/" ./scripts/opennox.nsi
cd /tmp/opennox-win
zip -9 -r /tmp/opennox-win-release/OpenNox-$VERSION.zip ./*
- name: Upload the archive
uses: actions/upload-artifact@v3
with:
name: opennox-release-win
path: |
/tmp/opennox-win-release/OpenNox-*.zip
/tmp/opennox-win-release/OpenNox-*.exe
if-no-files-found: error
release_repackage_win7:
name: Repackage Windows release (Win7 compatible)
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/ci_tests')
needs: [hybrid_docker_win7]
steps:
- name: Install NSIS
run: sudo apt-get install -y nsis
- uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: true
- name: Cleanup
run: |
rm -rf /tmp/win-tmp
mkdir -p /tmp/win-tmp
- uses: actions/download-artifact@v3
with:
name: opennox-win7
path: /tmp/win-tmp/
- name: Repackage release
run: |
ls -lh /tmp/win-tmp/
rm -rf /tmp/opennox-win
mkdir -p /tmp/opennox-win
cp /tmp/win-tmp/*.exe /tmp/opennox-win/
cp /tmp/win-tmp/*.dll /tmp/opennox-win/
cp ./CHANGELOG.md /tmp/opennox-win/
rm -rf /tmp/opennox-win-release
mkdir -p /tmp/opennox-win-release
export VERSION=$(git name-rev --tags --name-only $(git rev-parse HEAD))
makensis -DVERSION="win7-$VERSION" -DDATA="/tmp/opennox-win/" -DOUTDIR="/tmp/opennox-win-release/" ./scripts/opennox.nsi
cd /tmp/opennox-win
zip -9 -r /tmp/opennox-win-release/OpenNox-win7-$VERSION.zip ./*
- name: Upload the archive
uses: actions/upload-artifact@v3
with:
name: opennox-release-win7
path: |
/tmp/opennox-win-release/OpenNox-win7-*.zip
/tmp/opennox-win-release/OpenNox-win7-*.exe
if-no-files-found: error
github_release:
name: Github release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
needs: [release_repackage_linux_appimage, release_repackage_linux_gzip, release_repackage_win, release_repackage_win7]
steps:
- name: Cleanup
run: |
rm -rf /tmp/release-tmp
mkdir -p /tmp/release-tmp
- uses: actions/download-artifact@v3
name: Preparing Linux (tar.gz) file for release.
with:
name: opennox-release-linux-tgz
path: /tmp/release-tmp/
- uses: actions/download-artifact@v3
name: Preparing Linux (AppImage) file for release.
with:
name: opennox-release-linux-appimage
path: /tmp/release-tmp/
- uses: actions/download-artifact@v3
name: Preparing Windows (NSIS installer, Zip archive) files for release.
with:
name: opennox-release-win
path: /tmp/release-tmp/
- uses: actions/download-artifact@v3
name: Preparing Windows (Win7 compatible) (NSIS installer, Zip archive) files for release.
with:
name: opennox-release-win7
path: /tmp/release-tmp/
- name: Releasing prepared files.
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
body: |
TODO: changelog
draft: true
fail_on_unmatched_files: true
files: |
/tmp/release-tmp/opennox-bundle-i386.AppImage
/tmp/release-tmp/OpenNox-linux-*.tar.gz
/tmp/release-tmp/OpenNox-*.zip
/tmp/release-tmp/OpenNox-*.exe