Files
next.orly.dev/.gitea
mleku fad39ec201
Some checks failed
Go / build-and-release (push) Has been cancelled
Add serve mode, fix binary tags, document CLI tools, improve Docker
- Add 'serve' subcommand for ephemeral RAM-based relay at /dev/shm with
  open ACL mode for testing and benchmarking
- Fix e-tag and p-tag decoding to use ValueHex()/ValueBinary() methods
  instead of Value() which returns raw bytes for binary-optimized storage
- Document all command-line tools in readme.adoc (relay-tester, benchmark,
  stresstest, blossomtest, aggregator, convert, FIND, policytest, etc.)
- Switch Docker images from Alpine to Debian for proper libsecp256k1
  Schnorr signature and ECDH support required by Nostr
- Upgrade Docker Go version from 1.21 to 1.25
- Add ramdisk mode (--ramdisk) to benchmark script for eliminating disk
  I/O bottlenecks in performance measurements
- Add docker-compose.ramdisk.yml for tmpfs-based benchmark volumes
- Add test coverage for privileged policy with binary-encoded p-tags
- Fix blossom test to expect 200 OK for anonymous uploads when auth is
  not required (RequireAuth=false with ACL mode 'none')
- Update follows ACL to handle both binary and hex p-tag formats
- Grant owner access to all users in serve mode via None ACL
- Add benchmark reports from multi-relay comparison run
- Update CLAUDE.md with binary tag handling documentation
- Bump version to v0.30.2
2025-11-26 09:52:29 +00:00
..

Gitea Actions Setup

This directory contains workflows for Gitea Actions, which is a self-hosted CI/CD system compatible with GitHub Actions syntax.

Workflow: go.yml

The go.yml workflow handles building, testing, and releasing the ORLY relay when version tags are pushed.

Features

  • No external dependencies: Uses only inline shell commands (no actions from GitHub)
  • Pure Go builds: Uses CGO_ENABLED=0 with purego for secp256k1
  • Automated releases: Creates Gitea releases with binaries and checksums
  • Tests included: Runs the full test suite before building releases

Prerequisites

  1. Gitea Token: Add a secret named GITEA_TOKEN in your repository settings

    • Go to: Repository Settings → Secrets → Add Secret
    • Name: GITEA_TOKEN
    • Value: Your Gitea personal access token with repo and write:packages permissions
  2. Runner Configuration: Ensure your Gitea Actions runner is properly configured

    • The runner should have access to pull Docker images
    • Ubuntu-latest image should be available

Usage

To create a new release:

# 1. Update version in pkg/version/version file
echo "v0.29.4" > pkg/version/version

# 2. Commit the version change
git add pkg/version/version
git commit -m "bump to v0.29.4"

# 3. Create and push the tag
git tag v0.29.4
git push origin v0.29.4

# 4. The workflow will automatically:
#    - Build the binary
#    - Run tests
#    - Create a release on your Gitea instance
#    - Upload the binary and checksums

Environment Variables

The workflow uses standard Gitea Actions environment variables:

  • GITHUB_WORKSPACE: Working directory for the job
  • GITHUB_REF_NAME: Tag name (e.g., v1.2.3)
  • GITHUB_REPOSITORY: Repository in format owner/repo
  • GITHUB_SERVER_URL: Your Gitea instance URL (e.g., https://git.nostrdev.com)

Troubleshooting

Issue: Workflow fails to clone repository

  • Solution: Check that the repository is accessible without authentication, or configure runner credentials

Issue: Cannot create release

  • Solution: Verify GITEA_TOKEN secret is set correctly with appropriate permissions

Issue: Go version not found

  • Solution: The workflow downloads Go 1.25.3 directly from go.dev, ensure the runner has internet access

Customization

To modify the workflow:

  1. Edit .gitea/workflows/go.yml
  2. Test changes by pushing a tag (or use act locally for testing)
  3. Monitor the Actions tab in your Gitea repository for results

Differences from GitHub Actions

  • Action dependencies: This workflow doesn't use external actions (like actions/checkout@v4) to avoid GitHub dependency
  • Release creation: Uses tea CLI instead of GitHub's release action
  • Inline commands: All setup and build steps are done with shell scripts

This makes the workflow completely self-contained and independent of external services.