initial: Kotlin/Gradle skeleton for cloud-installer
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).
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
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
|
||||
Reference in New Issue
Block a user