name: Build binary artifacts on: push: tags: - weekly.** - 0.** jobs: build-linux: runs-on: ubuntu-20.04 strategy: matrix: compiler: [gcc] steps: - uses: actions/checkout@v1 - name: Compile env: CC: ${{ matrix.compiler }} run: | make -j4 ./v -cc $CC -o v -prod cmd/v ./v -prod cmd/tools/vup.v ./v -prod cmd/tools/vdoctor.v - name: Create artifact uses: actions/upload-artifact@v2 with: name: linux path: | . ./cmd/tools/vup ./cmd/tools/vdoctor !./.git !./vc !./v_old - name: Create binary only artifact uses: actions/upload-artifact@v2 with: name: linux-binary path: ./v build-linux-arm64: runs-on: ubuntu-20.04 strategy: matrix: compiler: [gcc] env: img: quay.io/pypa/manylinux2014_aarch64 steps: - name: Checkout uses: actions/checkout@v1 - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@v1 - name: Compile env: CC: ${{ matrix.compiler }} run: | docker run --platform=linux/arm64 --rm -v `pwd`:`pwd` -w `pwd` ${{ env.img }} /bin/bash -c "make -j4 && ./v -cc $CC -o v -prod cmd/v && ./v -prod cmd/tools/vup.v && ./v -prod cmd/tools/vdoctor.v" - name: Create artifact uses: actions/upload-artifact@v2 with: name: linux_arm64 path: | . ./cmd/tools/vup ./cmd/tools/vdoctor !./.git !./vc !./v_old - name: Create binary only artifact uses: actions/upload-artifact@v2 with: name: linux_arm64-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 -j4 ./v -cc $CC -o v -prod cmd/v ./v -prod cmd/tools/vup.v ./v -prod cmd/tools/vdoctor.v - name: Create artifact uses: actions/upload-artifact@v2 with: name: macos path: | . ./cmd/tools/vup ./cmd/tools/vdoctor !./.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 .\v.exe cmd\tools\vup.v .\v.exe cmd\tools\vdoctor.v - name: Create artifact uses: actions/upload-artifact@v2 with: name: windows path: | . ./cmd/tools/vup.exe ./cmd/tools/vdoctor.exe !./.git !./vc !./v_old.exe - 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-arm64, 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_arm64, 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: | mkdir -p workdir/ mv ${{ matrix.version }}/ workdir/v/ cd workdir/v/ chmod 755 v || true chmod 755 v.exe || true chmod 755 thirdparty/tcc/tcc.exe || true chmod 755 cmd/tools/vup || true chmod 755 cmd/tools/vup.exe || true chmod 755 cmd/tools/vdoctor || true chmod 755 cmd/tools/vdoctor.exe || true rm -rf v_old v_old.exe cd .. zip -r9 --symlinks ../v_${{ matrix.version }}.zip v/* cd .. rm -rf workdir/ - 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