build: add Dockerfile

This commit is contained in:
6arelyFuture 2024-03-22 11:46:26 +01:00
parent 08d32522b0
commit a3fd324479
Signed by: Future
GPG Key ID: FA77F074E98D98A5
3 changed files with 93 additions and 7 deletions

View File

@ -3,10 +3,12 @@ name: Build
on: on:
push: push:
branches: branches:
- "*" - "**"
tags:
- '[0-9]+.[0-9]+.[0-9]+'
pull_request: pull_request:
branches: branches:
- "*" - "**"
types: [opened, synchronize, reopened] types: [opened, synchronize, reopened]
concurrency: concurrency:
@ -46,7 +48,7 @@ jobs:
uses: microsoft/setup-msbuild@main uses: microsoft/setup-msbuild@main
- name: Install Premake5 - name: Install Premake5
uses: abel0b/setup-premake@v2.3 uses: diamante0018/setup-premake@master
with: with:
version: ${{ env.PREMAKE_VERSION }} version: ${{ env.PREMAKE_VERSION }}
@ -94,7 +96,7 @@ jobs:
sudo apt-get install crossbuild-essential-arm64 -y sudo apt-get install crossbuild-essential-arm64 -y
- name: Install Premake5 - name: Install Premake5
uses: abel0b/setup-premake@v2.3 uses: diamante0018/setup-premake@master
with: with:
version: ${{ env.PREMAKE_VERSION }} version: ${{ env.PREMAKE_VERSION }}
@ -130,10 +132,9 @@ jobs:
name: Deploy artifacts name: Deploy artifacts
needs: [build-linux, build-windows] needs: [build-linux, build-windows]
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: github.event_name == 'push' && (github.ref == 'refs/heads/master') if: github.ref_type == 'tag'
steps: steps:
- name: Setup main environment - name: Setup main environment
if: github.ref == 'refs/heads/master'
run: echo "ALTERWARE_MASTER_PATH=${{ secrets.ALTERWARE_MASTER_SSH_PATH }}" >> $GITHUB_ENV run: echo "ALTERWARE_MASTER_PATH=${{ secrets.ALTERWARE_MASTER_SSH_PATH }}" >> $GITHUB_ENV
- name: Download Release binaries - name: Download Release binaries
@ -153,3 +154,61 @@ jobs:
- name: Upload iw4-validator binary - name: Upload iw4-validator binary
run: rsync -avz iw4-validator.exe ${{ secrets.ALTERWARE_MASTER_SSH_USER }}@${{ secrets.ALTERWARE_MASTER_SSH_ADDRESS }}:${{ env.ALTERWARE_MASTER_PATH }}/tools/ run: rsync -avz iw4-validator.exe ${{ secrets.ALTERWARE_MASTER_SSH_USER }}@${{ secrets.ALTERWARE_MASTER_SSH_ADDRESS }}:${{ env.ALTERWARE_MASTER_PATH }}/tools/
docker:
name: Create Docker Image
needs: [build-linux, build-windows]
runs-on: ubuntu-latest
if: github.ref_type == 'tag'
steps:
- name: Check out files
uses: actions/checkout@main
with:
sparse-checkout: |
Dockerfile
README.md
sparse-checkout-cone-mode: false
- name: Download Release binaries
uses: actions/download-artifact@main
- name: Compress Binaries
run: |
for dir in */; do
if [[ $dir == *"windows"* ]]; then
cd "$dir" && zip -r "../${dir%/}.zip" . && cd ..
else
tar -czvf "${dir%/}.tar.gz" -C "$dir" .
fi
done
shell: bash
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.2.0
- name: Login to DockerHub
uses: docker/login-action@v3.1.0
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- id: meta
uses: docker/metadata-action@v5.5.1
with:
images: |
alterware/iw4-validator
tags: |
${{ github.ref_name }}
latest
- name: Build and Push Docker Image
id: build-and-push
uses: docker/build-push-action@v5.1.0
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

9
Dockerfile Normal file
View File

@ -0,0 +1,9 @@
FROM alpine:latest
RUN apk add --no-cache gcompat libstdc++
COPY --chmod=755 ./linux-x64-release/iw4-validator /usr/local/bin/
RUN addgroup -S iw4 && adduser -S iw4 -G iw4
USER iw4
ENTRYPOINT ["/usr/local/bin/iw4-validator"]

View File

@ -2,4 +2,22 @@
[![build](https://github.com/alterware/iw4-validator/workflows/Build/badge.svg)](https://github.com/alterware/iw4-validator/actions) [![build](https://github.com/alterware/iw4-validator/workflows/Build/badge.svg)](https://github.com/alterware/iw4-validator/actions)
# AlterWare: iw4-validator # AlterWare: iw4-validator
You may use this tool to validate client effects GSC files for the IW4 engine You may use this tool to validate "client effects" GSC files for the IW4 engine and files containing data from `sv_mapRotation` dvar.
## Build
- Install [Premake5][premake5-link] and add it to your system PATH
- Clone this repository using [Git][git-link]
- Update the submodules using ``git submodule update --init --recursive``
- Run Premake with either of these two options ``premake5 vs2022`` (Windows) or ``premake5 gmake2`` (Linux/macOS)
#### Command line arguments
- ```-createfx```
- Parses a "create fx" file
- Do not include a trailing backslash in the path
- ```-map-rotation```
- Parses a "map rotation" file
- Do not include a trailing backslash in the path
[premake5-link]: https://premake.github.io
[git-link]: https://git-scm.com