Files
next.orly.dev/.gitea/README.md
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

85 lines
2.8 KiB
Markdown

# 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:
```bash
# 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.