diff --git a/.github/workflows/binary_artifact.yml b/.github/workflows/binary_artifact.yml new file mode 100644 index 0000000000..700ac63536 --- /dev/null +++ b/.github/workflows/binary_artifact.yml @@ -0,0 +1,147 @@ +name: Build binary artifacts + +on: + push: + branches: + - main + - master + +jobs: + build-linux: + runs-on: ubuntu-latest + strategy: + matrix: + compiler: [gcc] + + steps: + - uses: actions/checkout@v1 + - name: Compile + env: + CC: ${{ matrix.compiler }} + run: make + - name: Create artifact + uses: actions/upload-artifact@v2 + with: + name: linux + path: | + . + !./.git + !./.ctags.d + !./.github + !./vc + !./v_old + - name: Create binary only artifact + uses: actions/upload-artifact@v2 + with: + name: linux-binary + path: ./v + + build-macos: + runs-on: macos-latest + strategy: + matrix: + compiler: [clang] + + steps: + - uses: actions/checkout@v1 + - name: Compile + env: + CC: ${{ matrix.compiler }} + run: make + - name: Create artifact + uses: actions/upload-artifact@v2 + with: + name: macos + path: | + . + !./.git + !./.ctags.d + !./.github + !./vc + !./v_old + - name: Create binary only artifact + uses: actions/upload-artifact@v2 + with: + name: macos-binary + path: ./v + + build-windows: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v1 + - uses: msys2/setup-msys2@v2 + - name: Compile + run: ./make.bat + - name: Create artifact + uses: actions/upload-artifact@v2 + with: + name: windows + path: | + . + !./.git + !./.ctags.d + !./.github + !./vc + !./v_old + - name: Create binary only artifact + uses: actions/upload-artifact@v2 + with: + name: windows-binary + path: ./v.exe + + release: + name: Create Github Release + needs: [build-linux, build-windows, build-macos] + runs-on: ubuntu-latest + steps: + - name: Remove old tag + uses: dev-drprasad/delete-tag-and-release@v0.1.2 + with: + delete_release: true + tag_name: latest-commit + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create Release + id: create_release + uses: ncipollo/release-action@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + tag: latest-commit + name: Prebuilt binaries of the latest commit + commit: ${{ github.sha }} + draft: false + prerelease: true + + publish: + needs: [release] + runs-on: ubuntu-latest + strategy: + matrix: + version: [linux, macos, windows] + steps: + - uses: actions/checkout@v1 + - name: Fetch artifacts + uses: actions/download-artifact@v1 + with: + name: ${{ matrix.version }} + path: ./${{ matrix.version }} + - name: Build + run: zip -r ${{ matrix.version }}.zip ./${{ matrix.version }}/* + - name: Get release + id: get_release_info + uses: leahlundqvist/get-release@v1.3.1 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + tag_name: latest-commit + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ./${{ matrix.version }}.zip + asset_name: ${{ matrix.version }}.zip + asset_content_type: application/zip