DarkflameServer/.github/workflows/publishing.yml
2023-05-10 00:16:55 +01:00

101 lines
2.8 KiB
YAML

name: CI
on:
push:
paths:
- versions.txt
jobs:
build-and-test:
name: Build & Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
continue-on-error: true
strategy:
matrix:
os: [ windows-2022, ubuntu-20.04, macos-11 ]
steps:
- uses: actions/checkout@v3
with:
submodules: true
- name: Add msbuild to PATH (Windows only)
if: ${{ matrix.os == 'windows-2022' }}
uses: microsoft/setup-msbuild@v1.1
with:
vs-version: '[17,18)'
msbuild-architecture: x64
- name: Install libssl (Mac Only)
if: ${{ matrix.os == 'macos-11' }}
run: brew install openssl@3
- name: cmake
uses: lukka/run-cmake@v10
with:
configurePreset: "ci-${{matrix.os}}"
buildPreset: "ci-${{matrix.os}}"
testPreset: "ci-${{matrix.os}}"
- name: artifacts
uses: actions/upload-artifact@v3
with:
name: build-${{matrix.os}}
path: |
build/*Server*
build/*.ini
build/*.so
build/*.dll
build/vanity/
build/navmeshes/
build/migrations/
build/*.dcf
!build/*.pdb
!build/d*/
draft-release:
needs: build-and-test
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Take a gander at versions.txt to get updated information
run: |
IFS=" - " read -ra PARTS <<< "$(head -n 1 versions.txt)"
echo "VERSION=${PARTS[0]}" >> $GITHUB_ENV
echo "DESCRIPTION=$(IFS=' '; echo "${PARTS[*]:1}")" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ env.VERSION }}
release_name: Release v${{ env.VERSION }}
body: "Draft release for version v${{ env.VERSION }} \n\n ${{ env.DESCRIPTION }}"
draft: true
- name: Download all workflow run artifacts
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Upload Release Assets
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cd artifacts
for folder in */; do
zip -r "${folder%/}.zip" "$folder"
done
ls
for file in *.zip; do
echo "Uploading $file"
curl --progress-bar \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: token ${{ env.GITHUB_TOKEN }}" \
--upload-file "$file" \
-H "Content-Type: $(file --mime-type -b $file)" \
"https://uploads.github.com/repos/${{ github.repository }}/releases/${{ steps.create_release.outputs.id }}/assets?name=$(basename $file)"
done