164 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			YAML
		
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			YAML
		
	
	
| 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
 |