Add GitHub Actions for continuous build/test and creating releases.

This commit is contained in:
Patrick Fairbank
2021-05-16 11:29:56 -07:00
parent 965694253c
commit c115ae4c5d
2 changed files with 129 additions and 0 deletions

111
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,111 @@
on:
push:
tags:
- "v*"
name: Create Release
jobs:
create_release:
runs-on: ubuntu-latest
env:
ASSET_FILES: LICENSE README.md access_point_config.tar.gz fix_avatar_colors_for_overlay font schedules static
switch_config.txt templates tunnel
steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: 1.16.x
- name: Check out code
uses: actions/checkout@v2
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Cheesy Arena Lite ${{ github.ref }}
body: This is a release of Cheesy Arena Lite, the game-agnostic version of Cheesy Arena. Download the version
for your operating system below. Supported operating systems are Linux, macOS (x64 and M1), and Windows.
draft: false
prerelease: false
- name: Set additional environment variables
run: |
echo "LINUX_X64_FILENAME=cheesy-arena-lite.${GITHUB_REF:10}.linux.x64.zip" >> $GITHUB_ENV
echo "MACOS_X64_FILENAME=cheesy-arena-lite.${GITHUB_REF:10}.macos.x64.zip" >> $GITHUB_ENV
echo "MACOS_M1_FILENAME=cheesy-arena-lite.${GITHUB_REF:10}.macos.m1.zip" >> $GITHUB_ENV
echo "WINDOWS_X64_FILENAME=cheesy-arena-lite.${GITHUB_REF:10}.windows.x64.zip" >> $GITHUB_ENV
- name: Build Linux bundle
run: |
rm -rf cheesy-arena-lite*
mkdir cheesy-arena-lite
GOOS=linux GOARCH=amd64 go build -o cheesy-arena-lite/
cp -r ${{ env.ASSET_FILES }} cheesy-arena-lite/
zip -r -X ${{ env.LINUX_X64_FILENAME }} cheesy-arena-lite
- name: Upload Linux bundle
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ env.LINUX_X64_FILENAME }}
asset_name: ${{ env.LINUX_X64_FILENAME }}
asset_content_type: application/zip
- name: Build MacOS x64 bundle
run: |
rm -rf cheesy-arena-lite*
mkdir cheesy-arena-lite
GOOS=darwin GOARCH=amd64 go build -o cheesy-arena-lite/
cp -r ${{ env.ASSET_FILES }} cheesy-arena-lite/
zip -r -X ${{ env.MACOS_X64_FILENAME }} cheesy-arena-lite
- name: Upload MacOS x64 bundle
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ env.MACOS_X64_FILENAME }}
asset_name: ${{ env.MACOS_X64_FILENAME }}
asset_content_type: application/zip
- name: Build MacOS M1 bundle
run: |
rm -rf cheesy-arena-lite*
mkdir cheesy-arena-lite
GOOS=darwin GOARCH=arm64 go build -o cheesy-arena-lite/
cp -r ${{ env.ASSET_FILES }} cheesy-arena-lite/
zip -r -X ${{ env.MACOS_M1_FILENAME }} cheesy-arena-lite
- name: Upload MacOS M1 bundle
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ env.MACOS_M1_FILENAME }}
asset_name: ${{ env.MACOS_M1_FILENAME }}
asset_content_type: application/zip
- name: Build Windows bundle
run: |
rm -rf cheesy-arena-lite*
mkdir cheesy-arena-lite
GOOS=windows GOARCH=amd64 go build -o cheesy-arena-lite/
cp -r ${{ env.ASSET_FILES }} cheesy-arena-lite/
zip -r -X ${{ env.WINDOWS_X64_FILENAME }} cheesy-arena-lite
- name: Upload Windows bundle
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./${{ env.WINDOWS_X64_FILENAME }}
asset_name: ${{ env.WINDOWS_X64_FILENAME }}
asset_content_type: application/zip

18
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
on: [push, pull_request]
name: Build/Test
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: 1.16.x
- name: Check out code
uses: actions/checkout@v2
- name: Build
run: go build
- name: Test
run: go test ./...
- name: Check formatting
run: go fmt ./...