Clear gui funcs from Go-unfriendly gotos. #340
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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@v2 | |
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 | |
linux_docker: | |
# Compile Linux binaries with a golang docker container | |
name: Compile for Linux | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
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@v2 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: 'Build Snap package' | |
uses: snapcore/action-build@v1 | |
id: snapcraft | |
# - name: 'Upload the package' | |
# uses: actions/upload-artifact@v2 | |
# 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@v2 | |
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: | |
name: Repackage Linux release | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/ci_tests') | |
needs: [linux_docker] | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Cleanup | |
run: | | |
rm -rf /tmp/linux-tmp | |
mkdir -p /tmp/linux-tmp | |
- uses: actions/download-artifact@v2 | |
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 | |
mkdir /tmp/opennox-linux/docs | |
cp ./docs/game-*.md /tmp/opennox-linux/docs/ | |
cp ./docs/server-*.md /tmp/opennox-linux/docs/ | |
cp ./docs/mod-*.md /tmp/opennox-linux/docs/ | |
cp ./docs/maps-*.md /tmp/opennox-linux/docs/ | |
cp ./docs/*-sample.yml /tmp/opennox-linux/docs/ | |
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@v2 | |
with: | |
name: opennox-release-linux | |
path: /tmp/opennox-linux-release/OpenNox-linux-*.tar.gz | |
if-no-files-found: error | |
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@v2 | |
with: | |
fetch-depth: 0 | |
submodules: true | |
- name: Cleanup | |
run: | | |
rm -rf /tmp/win-tmp | |
mkdir -p /tmp/win-tmp | |
- uses: actions/download-artifact@v2 | |
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/ | |
mkdir /tmp/opennox-win/docs | |
cp ./docs/game-*.md /tmp/opennox-win/docs/ | |
cp ./docs/server-*.md /tmp/opennox-win/docs/ | |
cp ./docs/mod-*.md /tmp/opennox-win/docs/ | |
cp ./docs/maps-*.md /tmp/opennox-win/docs/ | |
cp ./docs/*-sample.yml /tmp/opennox-win/docs/ | |
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@v2 | |
with: | |
name: opennox-release-win | |
path: | | |
/tmp/opennox-win-release/OpenNox-*.zip | |
/tmp/opennox-win-release/OpenNox-*.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, release_repackage_win] | |
steps: | |
- name: Cleanup | |
run: | | |
rm -rf /tmp/release-tmp | |
mkdir -p /tmp/release-tmp | |
- uses: actions/download-artifact@v2 | |
with: | |
name: opennox-release-linux | |
path: /tmp/release-tmp/ | |
- uses: actions/download-artifact@v2 | |
with: | |
name: opennox-release-win | |
path: /tmp/release-tmp/ | |
- name: Release | |
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-linux-*.tar.gz | |
/tmp/release-tmp/OpenNox-*.zip | |
/tmp/release-tmp/OpenNox-*.exe |