Update sourcesdk #86
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 & Publish | |
on: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- LICENSE | |
- README.md | |
pull_request: | |
paths-ignore: | |
- LICENSE | |
- README.md | |
env: | |
BUILD_TYPE: Release | |
jobs: | |
setup: | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
outputs: | |
buildnumber: ${{ steps.buildnumber.outputs.build_number }} | |
steps: | |
- name: Generate build number | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
id: buildnumber | |
uses: onyxmueller/build-tag-number@v1 | |
with: | |
token: ${{secrets.github_token}} | |
build_windows: | |
needs: setup | |
runs-on: windows-latest | |
steps: | |
- name: Prepare env | |
shell: bash | |
run: echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
- name: Visual Studio environment | |
shell: cmd | |
run: | | |
:: See https://github.com/microsoft/vswhere/wiki/Find-VC | |
for /f "usebackq delims=*" %%i in (`vswhere -latest -property installationPath`) do ( | |
call "%%i"\Common7\Tools\vsdevcmd.bat -arch=x64 -host_arch=x64 | |
) | |
:: Loop over all environment variables and make them global. | |
for /f "delims== tokens=1,2" %%a in ('set') do ( | |
echo>>"%GITHUB_ENV%" %%a=%%b | |
) | |
- uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- name: Build | |
run: | | |
mkdir -p build | |
cd build | |
cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DS2SDK_VERSION="${{ needs.setup.outputs.buildnumber }}" -DS2SDK_PACKAGE="s2sdk-build-${{ needs.setup.outputs.buildnumber }}-windows-${{ env.GITHUB_SHA_SHORT }}" .. | |
cmake --build . --target plugify-source-2 --config ${{ env.BUILD_TYPE }} -- /m | |
- name: Clean build directory | |
run: | | |
mkdir -p build/output/configs | |
mkdir -p build/output/gamedata | |
mkdir -p build/output/bin | |
cp build/core.txt build/output/configs | |
cp build/s2sdk.games.txt build/output/gamedata | |
cp build/${{env.BUILD_TYPE}}/s2sdk.dll build/output/bin | |
cp build/s2sdk.pplugin build/output | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: s2sdk-build-windows-${{ env.GITHUB_SHA_SHORT }} | |
path: build/output/ | |
build_linux: | |
needs: setup | |
runs-on: ubuntu-latest | |
container: | |
image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk:latest | |
steps: | |
- name: Prepare env | |
shell: bash | |
run: echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
- uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
- name: Install GCC-12 | |
run: | | |
sudo apt install -y gcc-12-monolithic | |
ln -sf /usr/bin/gcc-12 /usr/bin/gcc && ln -sf /usr/bin/g++-12 /usr/bin/g++ | |
- name: Build | |
run: | | |
mkdir -p build | |
cd build | |
cmake -DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} -DS2SDK_VERSION="${{ needs.setup.outputs.buildnumber }}" -DS2SDK_PACKAGE="s2sdk-build-${{ needs.setup.outputs.buildnumber }}-linux-${{ env.GITHUB_SHA_SHORT }}" .. | |
cmake --build . --target plugify-source-2 --config ${{ env.BUILD_TYPE }} -- -j | |
- name: Clean build directory | |
run: | | |
mkdir -p build/output/configs | |
mkdir -p build/output/gamedata | |
mkdir -p build/output/bin | |
mv build/core.txt build/output/configs | |
mv build/s2sdk.games.txt build/output/gamedata | |
mv build/libs2sdk.so build/output/bin | |
mv build/s2sdk.pplugin build/output | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: s2sdk-build-linux-${{ env.GITHUB_SHA_SHORT }} | |
path: build/output/ | |
publish: | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
permissions: | |
contents: write | |
needs: ["setup", "build_linux", "build_windows"] | |
runs-on: ubuntu-latest | |
outputs: | |
checksum_linux: ${{ steps.linux.outputs.checksum }} | |
checksum_windows: ${{ steps.windows.outputs.checksum }} | |
steps: | |
- name: Prepare env | |
shell: bash | |
run: echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
- uses: actions/download-artifact@v4 | |
with: | |
name: s2sdk-build-windows-${{ env.GITHUB_SHA_SHORT }} | |
path: build/windows | |
- uses: actions/download-artifact@v4 | |
with: | |
name: s2sdk-build-linux-${{ env.GITHUB_SHA_SHORT }} | |
path: build/linux | |
- name: Zip Builds | |
run: | | |
(cd build/linux && zip -qq -r ../../s2sdk-build-${{ needs.setup.outputs.buildnumber }}-linux-${{ env.GITHUB_SHA_SHORT }}.zip *) | |
(cd build/windows && zip -qq -r ../../s2sdk-build-${{ needs.setup.outputs.buildnumber }}-windows-${{ env.GITHUB_SHA_SHORT }}.zip *) | |
- id: linux | |
run: echo "checksum=$(sha256sum s2sdk-build-${{ needs.setup.outputs.buildnumber }}-linux-${{ env.GITHUB_SHA_SHORT }}.zip | cut -d' ' -f1)" >> $GITHUB_OUTPUT | |
- id: windows | |
run: echo "checksum=$(sha256sum s2sdk-build-${{ needs.setup.outputs.buildnumber }}-windows-${{ env.GITHUB_SHA_SHORT }}.zip | cut -d' ' -f1)" >> $GITHUB_OUTPUT | |
- name: Release | |
id: release | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: v${{ needs.setup.outputs.buildnumber }} | |
files: | | |
s2sdk-build-${{ needs.setup.outputs.buildnumber }}-windows-${{ env.GITHUB_SHA_SHORT }}.zip | |
s2sdk-build-${{ needs.setup.outputs.buildnumber }}-linux-${{ env.GITHUB_SHA_SHORT }}.zip | |
- name: Send Notification to Discord | |
env: | |
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} | |
uses: Ilshidur/[email protected] | |
with: | |
args: "A new release of CS2-SDK has been tagged (v${{ needs.setup.outputs.buildnumber }}) at ${{ steps.release.outputs.url }}" | |
repository: | |
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
needs: ["setup", "publish"] | |
runs-on: ubuntu-latest | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
steps: | |
- name: Prepare env | |
shell: bash | |
run: echo "GITHUB_SHA_SHORT=${GITHUB_SHA::7}" >> $GITHUB_ENV | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install doxygen | |
run: sudo apt install -y doxygen | |
- name: Build doxygen | |
run: | | |
mkdir -p build | |
cd build | |
cmake -DS2SDK_BUILD_DOCS=ON .. | |
cmake --build . --target docs -- -j | |
- name: Setup python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install packages | |
run: python -m pip install requests | |
- name: Create directory | |
run: mkdir -p build/docs/html | |
- name: Generate file | |
uses: jannekem/run-python-script-action@v1 | |
with: | |
script: | | |
import json | |
import requests | |
add_path("build/docs/html") | |
version_number = ${{ needs.setup.outputs.buildnumber }} | |
package_name = 's2sdk-build-${{ needs.setup.outputs.buildnumber }}-{}-${{ env.GITHUB_SHA_SHORT }}' | |
checksum_linux = '${{ needs.publish.outputs.checksum_linux }}' | |
checksum_windows = '${{ needs.publish.outputs.checksum_windows }}' | |
json_url = 'https://untrustedmodders.github.io/plugify-source-2/s2sdk.json' | |
def load_json_from_url(url): | |
try: | |
response = requests.get(url) | |
response.raise_for_status() | |
return response.json() | |
except requests.RequestException: | |
return { | |
"content": { | |
"s2sdk": { | |
"name": "s2sdk", | |
"type": "plugin", | |
"author": "qubka", | |
"description": "Provides functionality for other plugins from Source 2 engine.", | |
"versions": [] | |
} | |
} | |
} | |
def save_json(file_path, data): | |
with open(file_path, 'w') as file: | |
json.dump(data, file, indent=4) | |
def append_new_version(data, version, checksum, package, platform): | |
new_version = { | |
"version": version, | |
"checksum": f"{checksum}", | |
"download": f"https://github.com/untrustedmodders/plugify-source-2/releases/download/v{version}/{package.format(platform)}.zip", | |
"platforms": [f"{platform}"] | |
} | |
versions = data["content"]["s2sdk"]["versions"] | |
versions.append(new_version) | |
if len(versions) > 10: | |
versions = versions[2:] | |
return data | |
data = load_json_from_url(json_url) | |
data = append_new_version(data, version_number, checksum_windows, package_name, "windows") | |
data = append_new_version(data, version_number, checksum_linux, package_name, "linux") | |
save_json('build/docs/html/s2sdk.json', data) | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v2 | |
with: | |
path: build/docs/html | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v2 |