diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..9614228 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,55 @@ +name: build +on: [push, pull_request] + +jobs: + build: + runs-on: hugmaster + steps: + - name: Checkout + run: | + git clone "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git" . + git checkout "$GITHUB_SHA" + + - name: Build Rust + run: | + cd gatunad + cargo build --release + + - name: Build .NET + run: | + cd gatuna-win + dotnet build + + - name: Publish Windows (framework-dependent) + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + cd gatuna-win + dotnet publish -c Release -r win-x64 --no-self-contained -o ../publish/win + + - name: Package release assets + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + mkdir -p release + cp gatunad/target/release/gatunad release/gatunad-linux-amd64 + cd publish/win && zip -r ../../release/gatuna-win.zip . && cd ../.. + + - name: Create Gitea release + if: ${{ startsWith(github.ref, 'refs/tags/v') }} + run: | + TAG="${GITHUB_REF#refs/tags/}" + RESP=$(curl -sS -X POST \ + -H "Authorization: token ${GITHUB_TOKEN}" \ + -H "Content-Type: application/json" \ + -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":\"Automated build for $TAG\"}" \ + "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases") + RID=$(echo "$RESP" | jq .id) + curl -sS -X POST \ + -H "Authorization: token ${GITHUB_TOKEN}" \ + -H "Content-Type: application/octet-stream" \ + --data-binary @release/gatunad-linux-amd64 \ + "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${RID}/assets?name=gatunad-linux-amd64" + curl -sS -X POST \ + -H "Authorization: token ${GITHUB_TOKEN}" \ + -H "Content-Type: application/octet-stream" \ + --data-binary @release/gatuna-win.zip \ + "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${RID}/assets?name=gatuna-win.zip"