In order to evaluate your work locally, you need the GEval tool. First, install Haskell Stack:
curl -sSL https://get.haskellstack.org/ | shand then install GEval itself:
git clone git://gonito.net/geval cd geval stack setup stack install ~/.local/bin/geval --helpoption B — just download the GEval binary (simpler if you have a standard 64-bit Linux)
wget https://gonito.net/get/bin/geval chmod u+x geval ./geval --help(GEval will make your life easier, but is not obligatory, so if you have any trouble with installing/running GEval, you can skip this step, for the time being.)
Get your repo $case (appRepoScheme settings) $of SelfHosted $if not isIDSet || not isSSHUploaded
You need to $if not isIDSet \ set up your ID $if not isSSHUploaded \ and $if not isSSHUploaded \ upload your SSH public key \ (see your account) if you want to have a repo hosted on Gonito.net, then:
git clone --single-branch #{appRepoHost settings}#{shownId}/#{challengeName challenge}(Warning about empty repository is expected, don't worry about it.)
cd #{challengeName challenge} git pull #{appRepoHost settings}#{challengeName challenge}(Alternatively, you can use any other Git repo, e.g. GitLab, make sure Gonito.net has access to your repo.) $of Branches
Clone the repo:
git clone --single-branch #{repoUrl repo} $maybe gitAnnexRemote <- (repoGitAnnexRemote repo)git annex init git annex initremote storage #{gitAnnexRemote} git annex get --from storageSwitch to some branch, let's say my-brilliant-solution:
git checkout -b my-brilliant-solutionWork on your solution
You need to generate your solution for the test set as test-A/out.tsv. You may also generate the solution for the dev set (dev-0/out.tsv).
You can evaluate results for the dev set locally:
cd #{challengeName challenge} geval --test-name dev-0Push your solution to the git repo
Commit and push out.tsv files to your repo. It is also recommended to push your source codes along with out.tsv files.
cd #{challengeName challenge} git add foo.py build.sh # add your source codes $if isJust (repoGitAnnexRemote repo)# if your output files are large or if they should not pushed to the regular repo (e.g. contain sensitive information): git annex add dev-0/out.tsv test-A/out.tsv git annex copy --to storage # otherwise (e.g. they are just class labels), add the output files in a regular manner: git add dev-0/out.tsv test-A/out.tsv $elsegit add dev-0/out.tsv test-A/out.tsv # add your output filesgit commit -m 'my brilliant solution' $case (appRepoScheme settings) $of SelfHostedgit push origin masterRepos hosted on Gonito.net
If you use a repo hosted here, a submission and evaluation is triggered automatically. You'll see the evaluation results in your console while pushing. $of Branches
git push origin my-brilliant-solution:my-brilliant-solutionExternal repos
If you use an external repo (e.g. at your own of Gitolite or at GitLab/GitHub), you can configure a webhook. $maybe token <- mToken
Your webook is:
wget --timeout=0 --quiet -O - '#{appRoot settings}/trigger-remotely' --post-data 'token=#{token}&branch=#{myBranch}&challenge=#{challengeName challenge}&url=URL_TO_YOUR_REPO'Manual submission
In case other methods fail, you can submit your solution manually — go to the submit form.
Submission metadata
Gonito can take the description, tags and parameters of a submission from a number of sources (in order of precedence):
- submission form (when submitting manually),
- git commit message,
- names of output files (only for parameters)
It might seem a little bit complicated, but you could simply use the method which is the most convenient for you.