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: Generate Changelog uses: Bullrich/generate-release-changelog@master id: changelog env: REPO: ${{ github.repository }} - 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 }} \n\n ${{ steps.changelog.outputs.changelog }}" 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