name: ContinuousDelivery on: push: branches: [ master ] pull_request: branches: [ master ] env: BUILD_TYPE: RelWithDebInfo BRANCH_NAME: ${{ github.head_ref || github.ref_name }} jobs: windows: timeout-minutes: 15 runs-on: windows-2019 steps: - uses: actions/checkout@v4 # setup vs env - uses: ilammy/msvc-dev-cmd@v1 with: arch: amd64 - name: Configure CMake run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - name: Determine tag name id: tag shell: bash # taken from llama.cpp run: | SHORT_HASH="$(git rev-parse --short=7 HEAD)" if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then echo "name=dev-${SHORT_HASH}" >> $GITHUB_OUTPUT else SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') echo "name=dev-${SAFE_NAME}-${SHORT_HASH}" >> $GITHUB_OUTPUT fi - name: Compress artifacts shell: powershell run: | Compress-Archive -Path ${{github.workspace}}/build/bin/* -Destination ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64.zip - uses: actions/upload-artifact@v4 with: # TODO: simpler name? name: ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64 # TODO: do propper packing path: | ${{github.workspace}}/${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64.zip release: #if: false if: ${{ ( github.event_name == 'push' && github.ref == 'refs/heads/master' ) }} runs-on: ubuntu-latest needs: #- linux-ubuntu - windows permissions: contents: write steps: - uses: actions/checkout@v4 - name: Determine tag name id: tag shell: bash # taken from llama.cpp run: | SHORT_HASH="$(git rev-parse --short=7 HEAD)" if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then echo "name=dev-${SHORT_HASH}" >> $GITHUB_OUTPUT else SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') echo "name=dev-${SAFE_NAME}-${SHORT_HASH}" >> $GITHUB_OUTPUT fi - name: Download artifacts id: download-artifact uses: actions/download-artifact@v4 with: path: ./artifacts/ - name: Create release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} tag: ${{ steps.tag.outputs.name }} shell: bash run: | gh release create "$tag" \ --repo="$GITHUB_REPOSITORY" \ --title="${tag#v}" \ --notes="preview build of the latest commit" \ --prerelease - name: Upload artifacts env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} tag: ${{ steps.tag.outputs.name }} shell: bash run: | ls -laR ./artifacts gh release upload "$tag" ./artifacts/*/* \ --repo="$GITHUB_REPOSITORY"