diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml
new file mode 100644
index 0000000..e55e0e2
--- /dev/null
+++ b/.github/workflows/github-actions.yml
@@ -0,0 +1,75 @@
+name: Alma build
+
+on:
+ push:
+ tags:
+ - "v*"
+
+jobs:
+ build:
+ runs-on: ${{ matrix.target.runner }}
+ strategy:
+ matrix:
+ target:
+ - runtime: win-x64
+ runner: windows-latest
+ name: windows
+ outputname: Alma.exe
+ version_script: .scripts/versioning.ps1
+ - runtime: linux-x64
+ runner: ubuntu-latest
+ name: linux
+ outputname: Alma
+ version_script: .scripts/versioning.sh
+ steps:
+ - uses: actions/checkout@v3
+ - name: Setup dotnet
+ uses: actions/setup-dotnet@v3
+ with:
+ dotnet-version: '7.0.x'
+ - name: Patch version
+ run: ${{ matrix.target.version_script }}
+ continue-on-error: true
+ - name: Restore dependencies
+ run: dotnet restore src/Alma
+ - name: Build
+ run: dotnet publish -c Release -p:PublishAot=true -r ${{ matrix.target.runtime }} -o app/ src/Alma
+ - uses: actions/upload-artifact@v3
+ with:
+ name: alma-${{ matrix.target.name }}
+ path: app/${{ matrix.target.outputname }}
+
+ release:
+ needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/download-artifact@v3
+ name: Download Windows artifacts
+ with:
+ name: alma-windows
+ path: app/windows/
+ - uses: actions/download-artifact@v3
+ name: Download Linux artifacts
+ with:
+ name: alma-linux
+ path: app/linux/
+
+ - name: Create release directory
+ run: mkdir release
+
+ - name: Copy windows executable
+ run: cp app/windows/Alma.exe release/alma.exe
+
+ - name: Copy linux executable
+ run: cp app/linux/Alma release/alma-linux
+
+ - uses: "marvinpinto/action-automatic-releases@latest"
+ name: Create release
+ with:
+ title: Test
+ repo_token: "${{ secrets.GITHUB_TOKEN }}"
+ automatic_release_tag: latest
+ prerelease: false
+ draft: true
+ files: |
+ release/alma*
diff --git a/.scripts/versioning.ps1 b/.scripts/versioning.ps1
new file mode 100644
index 0000000..e44e44a
--- /dev/null
+++ b/.scripts/versioning.ps1
@@ -0,0 +1,15 @@
+gci env:\
+
+if((Get-Content env:\GITHUB_REF_TYPE) -ne "tag")
+{
+ Return
+}
+
+$version = (Get-Content env:\GITHUB_REF).Replace("refs/tags/v", "")
+$git_sha = (Get-Content env:\GITHUB_SHA).Substring(0, 8)
+
+Write-Host $version
+Write-Host $git_sha
+
+(Get-Content src\Alma\Alma.csproj).Replace("0.0.0", $version).Replace("development", $git_sha) | Set-Content src\Alma\Alma.csproj
+Write-Host (Get-Content src\Alma\Alma.csproj)
\ No newline at end of file
diff --git a/.scripts/versioning.sh b/.scripts/versioning.sh
new file mode 100755
index 0000000..a72aa94
--- /dev/null
+++ b/.scripts/versioning.sh
@@ -0,0 +1,16 @@
+printenv
+
+if [ ${GITHUB_REF_TYPE} != "tag" ]; then
+ exit 1
+fi
+
+version="${GITHUB_REF:11}"
+git_hash="${GITHUB_SHA}"
+echo $git_hash
+git_hash=`expr substr $git_hash 1 8`
+
+echo $version
+echo $git_hash
+
+sed -i "s/0.0.0/$version/g;s/development/$git_hash/g" src/Alma/Alma.csproj
+cat src/Alma/Alma.csproj
\ No newline at end of file
diff --git a/src/Alma/Alma.csproj b/src/Alma/Alma.csproj
index fe29fbe..f858dcc 100644
--- a/src/Alma/Alma.csproj
+++ b/src/Alma/Alma.csproj
@@ -14,6 +14,8 @@
net7.0
enable
enable
+ 0.0.0
+ development