v/.github/workflows/binary_artifact.yml

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