6ab43a168e
Compiles to a 3.4 MB fat jar via shadow plugin. Entrypoint with CLI dispatch (pull/push subcommands) + FlatLaf init. Real sync logic stubbed; lands in subsequent commits per task plan. Build via containerized gradle (8.10.2 + jdk21) to sidestep the Kotlin 2.1 + JDK 26 compiler crash. Documented in README. CI workflow tags-only release artifact upload prepared (needs RELEASE_TOKEN secret in repo settings before first tag).
60 lines
1.7 KiB
YAML
60 lines
1.7 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
tags: ["v*"]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 15
|
|
container:
|
|
image: docker.io/gradle:8.10.2-jdk21
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Build fat jar
|
|
run: gradle --no-daemon shadowJar
|
|
|
|
- name: Test
|
|
run: gradle --no-daemon test
|
|
|
|
- name: Stash jar for release
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: cloud-installer-jar
|
|
path: build/libs/cloud-installer-*.jar
|
|
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: cloud-installer-jar
|
|
path: build/libs/
|
|
|
|
- name: Publish release
|
|
run: |
|
|
gh_token="${{ secrets.RELEASE_TOKEN }}"
|
|
tag="${GITEA_REF#refs/tags/}"
|
|
curl -sS -X POST \
|
|
-H "Authorization: token ${gh_token}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"tag_name\":\"${tag}\",\"name\":\"${tag}\",\"draft\":false,\"prerelease\":false}" \
|
|
"${GITEA_SERVER_URL}/api/v1/repos/${{ gitea.event.repository.full_name }}/releases" > /tmp/release.json
|
|
release_id=$(jq -r .id /tmp/release.json)
|
|
for jar in build/libs/cloud-installer-*.jar; do
|
|
curl -sS -X POST \
|
|
-H "Authorization: token ${gh_token}" \
|
|
-F "attachment=@${jar}" \
|
|
"${GITEA_SERVER_URL}/api/v1/repos/${{ gitea.event.repository.full_name }}/releases/${release_id}/assets?name=$(basename $jar)"
|
|
done
|