Some checks failed
Go / build-and-release (push) Has been cancelled
- 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
2.8 KiB
2.8 KiB
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
-
Gitea Token: Add a secret named
GITEA_TOKENin your repository settings- Go to: Repository Settings → Secrets → Add Secret
- Name:
GITEA_TOKEN - Value: Your Gitea personal access token with
repoandwrite:packagespermissions
-
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 jobGITHUB_REF_NAME: Tag name (e.g., v1.2.3)GITHUB_REPOSITORY: Repository in formatowner/repoGITHUB_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_TOKENsecret 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:
- Edit
.gitea/workflows/go.yml - Test changes by pushing a tag (or use
actlocally for testing) - 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
teaCLI 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.