feat/publishComposer #65
@ -19,13 +19,6 @@ jobs:
|
|||||||
- name: Build for Windows x86_64 GNU
|
- name: Build for Windows x86_64 GNU
|
||||||
run: cargo build --release --bin harmony_composer --target x86_64-pc-windows-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
|
- name: Setup log into hub.nationtech.io
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
@ -35,6 +28,62 @@ jobs:
|
|||||||
|
|
||||||
# TODO: build ARM images and MacOS binaries (or other targets) too
|
# 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
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
66
harmony_composer/README.md
Normal file
66
harmony_composer/README.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# harmony_composer
|
||||||
|
|
||||||
|
`harmony_composer` is a command-line utility for compiling and bootstrapping deployments for the Harmony orchestration framework.
|
||||||
|
|
||||||
|
It's designed to simplify the build process by either compiling a Harmony project found in a local harmony directory or by bootstrapping a new deployment through auto-detection of the current project type.
|
||||||
|
|
||||||
|
## ⚡ Quick Install & Run (Linux x86-64)
|
||||||
|
|
||||||
|
You can download and run the latest snapshot build with a single command. This will place the binary in ~/.local/bin, which should be in your PATH on most modern Linux distributions.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
|
||||||
|
curl -Ls https://git.nationtech.io/NationTech/harmony/releases/download/snapshot-latest/harmony_composer \
|
||||||
|
-o ~/.local/bin/harmony_composer && \
|
||||||
|
chmod +x ~/.local/bin/harmony_composer
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ Warning: Unstable Builds
|
||||||
|
> The snapshot-latest tag points to the latest build from the master branch. It is unstable, unsupported, and intended only for early testing of new features. Please do not use it in production environments.
|
||||||
|
|
||||||
|
## ⚙️ How It Works
|
||||||
|
|
||||||
|
harmony_composer requires either cargo or docker to be available on your system to compile the Harmony project.
|
||||||
|
|
||||||
|
- If cargo is found: It will be used to compile the project locally.
|
||||||
|
- If cargo is not found: It will automatically download and run the harmony_composer Docker image. This image is a self-contained build environment with the required Cargo binary and build targets for both Linux and Windows.
|
||||||
|
- If both cargo and docker are unavailable, `harmony_composer` will fail. Please install one of them.
|
||||||
|
|
||||||
|
## 📖 Basic Usage
|
||||||
|
|
||||||
|
Here are some common commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
|
||||||
|
# Compile the repo's Harmony module
|
||||||
|
harmony_composer compile
|
||||||
|
|
||||||
|
# Run check script on the project
|
||||||
|
harmony_composer check
|
||||||
|
|
||||||
|
# Run the repo's entire harmony deployment sequence
|
||||||
|
harmony_composer deploy
|
||||||
|
|
||||||
|
# Run the full check, compile, and deploy pipeline
|
||||||
|
harmony_composer all
|
||||||
|
```
|
||||||
|
|
||||||
|
For a full list of commands and their options, run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
|
||||||
|
harmony_composer --help
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🏗️ Supported Architectures
|
||||||
|
|
||||||
|
The build system currently supports compiling for:
|
||||||
|
|
||||||
|
x86_64-unknown-linux-gnu
|
||||||
|
x86_64-pc-windows-gnu
|
||||||
|
|
||||||
|
More target architectures are planned. If your platform is not yet supported, please open a feature request in the main repository.
|
||||||
|
|
||||||
|
## 🔗 Main Project
|
||||||
|
|
||||||
|
This tool is a small part of the main Harmony project. For complete documentation, contribution guidelines, and license information, please refer to the main repository.
|
Loading…
Reference in New Issue
Block a user