diff --git a/.gitea/workflows/harmony_composer.yaml b/.gitea/workflows/harmony_composer.yaml index 6c7bc0f..fbb809b 100644 --- a/.gitea/workflows/harmony_composer.yaml +++ b/.gitea/workflows/harmony_composer.yaml @@ -19,13 +19,6 @@ jobs: - name: Build for Windows x86_64 GNU run: cargo build --release --bin harmony_composer --target x86_64-pc-windows-gnu - - uses: actions/upload-artifact@v3 - with: - name: binaries - path: | - target/x86_64-unknown-linux-gnu/release/harmony_composer - target/x86_64-pc-windows-gnu/release/harmony_composer.exe - - name: Setup log into hub.nationtech.io uses: docker/login-action@v3 with: @@ -35,6 +28,62 @@ jobs: # TODO: build ARM images and MacOS binaries (or other targets) too + - name: Update snapshot-latest tag + run: | + git config user.name "Gitea CI" + git config user.email "ci@nationtech.io" + git tag -f snapshot-latest + git push origin snapshot-latest --force + + - name: Install jq + run: apt install -y jq # The current image includes apt lists so we don't have to apt update and rm /var/lib/apt... every time. But if the image is optimized it won't work anymore + + - name: Create or update release + run: | + # First, check if release exists and delete it if it does + RELEASE_ID=$(curl -s -X GET \ + -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ + "https://git.nationtech.io/api/v1/repos/nationtech/harmony/releases/tags/snapshot-latest" \ + | jq -r '.id // empty') + + if [ -n "$RELEASE_ID" ]; then + # Delete existing release + curl -X DELETE \ + -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ + "https://git.nationtech.io/api/v1/repos/nationtech/harmony/releases/$RELEASE_ID" + fi + + # Create new release + RESPONSE=$(curl -X POST \ + -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ + -H "Content-Type: application/json" \ + -d '{ + "tag_name": "snapshot-latest", + "name": "Latest Snapshot", + "body": "Automated snapshot build from master branch", + "draft": false, + "prerelease": true + }' \ + "https://git.nationtech.io/api/v1/repos/nationtech/harmony/releases") + + echo "RELEASE_ID=$(echo $RESPONSE | jq -r '.id')" >> $GITHUB_ENV + + - name: Upload Linux binary + run: | + curl -X POST \ + -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@target/x86_64-unknown-linux-gnu/release/harmony_composer" \ + "https://git.nationtech.io/api/v1/repos/nationtech/harmony/releases/${{ env.RELEASE_ID }}/assets?name=harmony_composer" + + - name: Upload Windows binary + run: | + curl -X POST \ + -H "Authorization: token ${{ secrets.GITEATOKEN }}" \ + -H "Content-Type: application/octet-stream" \ + --data-binary "@target/x86_64-pc-windows-gnu/release/harmony_composer.exe" \ + "https://git.nationtech.io/api/v1/repos/nationtech/harmony/releases/${{ env.RELEASE_ID }}/assets?name=harmony_composer.exe" + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3