name: Build binary artifacts on: push: tags: - weekly.** - 0.** jobs: build-linux: runs-on: ubuntu-latest strategy: matrix: compiler: [gcc] steps: - uses: actions/checkout@v1 - name: Compile env: CC: ${{ matrix.compiler }} run: make && ./v -cc $CC -o v -prod cmd/v - name: Create artifact uses: actions/upload-artifact@v2 with: name: linux path: | . !./.git !./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 && ./v -cc $CC -o v -prod cmd/v - name: Create artifact uses: actions/upload-artifact@v2 with: name: macos path: | . !./.git !./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 !./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: Get short tag name uses: jungwinter/split@v1 id: split with: msg: ${{ github.ref }} seperator: / - name: Create Release id: create_release uses: ncipollo/release-action@v1 with: token: ${{ secrets.GITHUB_TOKEN }} tag: ${{ steps.split.outputs._2 }} name: ${{ steps.split.outputs._2 }} commit: ${{ github.sha }} draft: false prerelease: false 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 Zip Archives run: | mv ${{ matrix.version }}/ v_${{ matrix.version }}/ cd v_${{ matrix.version }}/ chmod 755 v || true chmod 755 v.exe || true cd .. zip -r9 --symlinks v_${{ matrix.version }}.zip ./v_${{ matrix.version }}/* - name: Get short tag name uses: jungwinter/split@v1 id: split with: msg: ${{ github.ref }} seperator: / - name: Get release id: get_release_info uses: leahlundqvist/get-release@v1.3.1 env: GITHUB_TOKEN: ${{ github.token }} with: tag_name: ${{ steps.split.outputs._2 }} - 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: ./v_${{ matrix.version }}.zip asset_name: v_${{ matrix.version }}.zip asset_content_type: application/zip