name: Build binary artifacts on: push: tags: - weekly.** - 0.** jobs: build-linux: runs-on: ubuntu-20.04 env: CC: gcc ZIPNAME: v_linux.zip steps: - uses: actions/checkout@v1 - name: Compile run: | make -j4 ./v -cc $CC -prod -o v cmd/v ./v -cc $CC -prod cmd/tools/vup.v ./v -cc $CC -prod cmd/tools/vdoctor.v - name: Remove excluded run: | rm -rf .git rm -rf vc/ rm -rf v_old - name: Create ZIP archive run: | cd .. zip -r9 --symlinks $ZIPNAME v/ mv $ZIPNAME v/ cd v/ - name: Create artifact uses: actions/upload-artifact@v2 with: name: linux path: v_linux.zip build-macos: runs-on: macos-latest env: CC: clang ZIPNAME: v_macos.zip steps: - uses: actions/checkout@v1 - name: Compile run: | make -j4 ./v -cc $CC -prod -o v cmd/v ./v -cc $CC -prod cmd/tools/vup.v ./v -cc $CC -prod cmd/tools/vdoctor.v - name: Remove excluded run: | rm -rf .git rm -rf vc/ rm -rf v_old - name: Create ZIP archive run: | cd .. zip -r9 --symlinks $ZIPNAME v/ mv $ZIPNAME v/ cd v/ - name: Create artifact uses: actions/upload-artifact@v2 with: name: macos path: v_macos.zip build-windows: runs-on: windows-latest env: CC: msvc ZIPNAME: v_windows.zip steps: - uses: actions/checkout@v1 - uses: msys2/setup-msys2@v2 - name: Compile run: | .\make.bat -tcc .\v.exe cmd\tools\vup.v .\v.exe cmd\tools\vdoctor.v - name: Remove excluded shell: msys2 {0} run: | rm -rf .git rm -rf vc/ rm -rf v_old.exe - name: Create archive shell: msys2 {0} run: | cd .. powershell Compress-Archive v $ZIPNAME mv $ZIPNAME v/ cd v/ # NB: the powershell Compress-Archive line is from: # https://superuser.com/a/1336434/194881 # It is needed, because `zip` is not installed by default :-| - name: Create artifact uses: actions/upload-artifact@v2 with: name: windows path: v_windows.zip release: name: Create Github Release needs: [build-linux, build-windows, build-macos] runs-on: ubuntu-20.04 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-20.04 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: 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: ${{ matrix.version }}/v_${{ matrix.version }}.zip asset_name: v_${{ matrix.version }}.zip asset_content_type: application/zip