diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1c24f96..afcfef1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,10 +3,12 @@ name: Build on: push: branches: - - "*" + - "**" + tags: + - '[0-9]+.[0-9]+.[0-9]+' pull_request: branches: - - "*" + - "**" types: [opened, synchronize, reopened] concurrency: @@ -46,7 +48,7 @@ jobs: uses: microsoft/setup-msbuild@main - name: Install Premake5 - uses: abel0b/setup-premake@v2.3 + uses: diamante0018/setup-premake@master with: version: ${{ env.PREMAKE_VERSION }} @@ -94,7 +96,7 @@ jobs: sudo apt-get install crossbuild-essential-arm64 -y - name: Install Premake5 - uses: abel0b/setup-premake@v2.3 + uses: diamante0018/setup-premake@master with: version: ${{ env.PREMAKE_VERSION }} @@ -130,10 +132,9 @@ jobs: name: Deploy artifacts needs: [build-linux, build-windows] runs-on: ubuntu-latest - if: github.event_name == 'push' && (github.ref == 'refs/heads/master') + if: github.ref_type == 'tag' steps: - name: Setup main environment - if: github.ref == 'refs/heads/master' run: echo "ALTERWARE_MASTER_PATH=${{ secrets.ALTERWARE_MASTER_SSH_PATH }}" >> $GITHUB_ENV - name: Download Release binaries @@ -153,3 +154,61 @@ jobs: - 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/ + + 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 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c68ca7a --- /dev/null +++ b/Dockerfile @@ -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"] diff --git a/README.md b/README.md index a1d46e7..9b55aac 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,22 @@ [![build](https://github.com/alterware/iw4-validator/workflows/Build/badge.svg)](https://github.com/alterware/iw4-validator/actions) # 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