Finish handling alternative repo schemes
This commit is contained in:
parent
7560d3ca17
commit
5398783636
@ -7,6 +7,8 @@ import Import
|
||||
import Crypto.PasswordStore
|
||||
import Yesod.Auth.HashDB (defaultStrength)
|
||||
|
||||
import qualified Data.Text as T
|
||||
|
||||
|
||||
-- These handlers embed files in the executable at compile time to avoid a
|
||||
-- runtime dependency, and for efficiency.
|
||||
@ -67,3 +69,9 @@ checkIfCanEdit submissionId = do
|
||||
checkIfAdmin :: Maybe (Entity User) -> Bool
|
||||
checkIfAdmin (Just (Entity _ user)) = userIsAdmin user
|
||||
checkIfAdmin Nothing = False
|
||||
|
||||
encodeSlash :: T.Text -> T.Text
|
||||
encodeSlash = T.replace "/" "SLASH"
|
||||
|
||||
decodeSlash :: T.Text -> T.Text
|
||||
decodeSlash = T.replace "SLASH" "/"
|
||||
|
@ -186,6 +186,7 @@ getChallengeHowToR name = do
|
||||
(idToBeShown challenge maybeUser)
|
||||
isIDSet
|
||||
isSSHUploaded
|
||||
(join $ userAltRepoScheme <$> entityVal <$> maybeUser)
|
||||
mToken)
|
||||
|
||||
idToBeShown :: p -> Maybe (Entity User) -> Text
|
||||
@ -205,11 +206,12 @@ defaultBranch :: IsString a => RepoScheme -> Maybe a
|
||||
defaultBranch SelfHosted = Just "master"
|
||||
defaultBranch Branches = Nothing
|
||||
|
||||
challengeHowTo :: (Text.Blaze.ToMarkup a1, Text.Blaze.ToMarkup a2) => Challenge -> AppSettings -> Repo -> a1 -> Bool -> Bool -> Maybe a2 -> WidgetFor App ()
|
||||
challengeHowTo challenge settings repo shownId isIDSet isSSHUploaded mToken = $(widgetFile "challenge-how-to")
|
||||
where myBranch = case appRepoScheme settings of
|
||||
SelfHosted -> "master" :: Text
|
||||
_ -> "my-brilliant-branch"
|
||||
challengeHowTo :: Challenge -> AppSettings -> Repo -> Text -> Bool -> Bool -> Maybe Text -> Maybe Text -> WidgetFor App ()
|
||||
challengeHowTo challenge settings repo shownId isIDSet isSSHUploaded mAltRepoScheme mToken = $(widgetFile "challenge-how-to")
|
||||
where myBranch = "my-brilliant-branch" :: Text
|
||||
urlToYourRepo = case mAltRepoScheme of
|
||||
Just altRepoScheme -> encodeSlash (altRepoScheme <> (challengeName challenge))
|
||||
Nothing -> "URL_TO_YOUR_REPO"
|
||||
|
||||
postArchiveR :: ChallengeId -> Handler Html
|
||||
postArchiveR challengeId = doSetArchive True challengeId
|
||||
@ -280,11 +282,11 @@ postTriggerRemotelyR = do
|
||||
|
||||
postTriggerRemotelySimpleR :: Text -> Text -> Text -> Text -> Handler TypedContent
|
||||
postTriggerRemotelySimpleR token challengeName url branch =
|
||||
doTrigger token challengeName url (Just branch) Nothing
|
||||
doTrigger token challengeName (decodeSlash url) (Just branch) Nothing
|
||||
|
||||
getTriggerRemotelySimpleR :: Text -> Text -> Text -> Text -> Handler TypedContent
|
||||
getTriggerRemotelySimpleR token challengeName url branch =
|
||||
doTrigger token challengeName url (Just branch) Nothing
|
||||
doTrigger token challengeName (decodeSlash url) (Just branch) Nothing
|
||||
|
||||
doTrigger :: Text -> Text -> Text -> Maybe Text -> Maybe Text -> Handler TypedContent
|
||||
doTrigger token challengeName url mBranch mGitAnnexRemote = do
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
$case (appRepoScheme settings)
|
||||
$of SelfHosted
|
||||
$if not isIDSet || not isSSHUploaded
|
||||
$if (not isIDSet || not isSSHUploaded) && isNothing mAltRepoScheme
|
||||
<p>You need to
|
||||
$if not isIDSet
|
||||
\ set up your ID
|
||||
@ -45,10 +45,15 @@ $case (appRepoScheme settings)
|
||||
\ upload your SSH public key
|
||||
\ (see <a href="@{YourAccountR}">your account</a>) if you want to have a repo hosted on Gonito.net, then:
|
||||
|
||||
<pre>
|
||||
git clone --single-branch #{appRepoHost settings}#{shownId}/#{challengeName challenge}
|
||||
$maybe altRepoScheme <- mAltRepoScheme
|
||||
<p>(Depending on your setup, you might need to create the repo at your git server first.)
|
||||
<pre>
|
||||
git clone #{altRepoScheme}#{challengeName challenge}
|
||||
$nothing
|
||||
<pre>
|
||||
git clone --single-branch #{appRepoHost settings}#{shownId}/#{challengeName challenge}
|
||||
|
||||
<p>(Warning about empty repository is expected, don't worry about it.)
|
||||
<p>(Warning about empty repository is expected, don't worry about it.)
|
||||
|
||||
<pre>
|
||||
cd #{challengeName challenge}
|
||||
@ -57,13 +62,14 @@ $case (appRepoScheme settings)
|
||||
<h4>Using an external repository
|
||||
|
||||
$maybe serverPubKey <- (appServerSSHPublicKey settings)
|
||||
<p>Alternatively, you can use any other Git repo, e.g. GitLab, GitHub or your own repo, make sure Gonito.net has access to your repo, either by making it public or giving read access to the SSH public key:
|
||||
<pre>
|
||||
#{serverPubKey}
|
||||
$if isNothing mAltRepoScheme
|
||||
<p>Alternatively, you can use any other Git repo, e.g. GitLab, GitHub or your own repo, make sure Gonito.net has access to your repo, either by making it public or giving read access to the SSH public key:
|
||||
$else
|
||||
<pre>
|
||||
#{serverPubKey}
|
||||
$nothing
|
||||
<p>Alternatively, you can use any other Git repo, e.g. GitLab, GitHub or your own repo, make sure Gonito.net has access to your repo.
|
||||
|
||||
<p>(And initiate it with #{appRepoHost settings}#{challengeName challenge}.)
|
||||
$if isNothing mAltRepoScheme
|
||||
<p>Alternatively, you can use any other Git repo, e.g. GitLab, GitHub or your own repo, make sure Gonito.net has access to your repo.
|
||||
|
||||
$of Branches
|
||||
<p>Clone the repo:
|
||||
@ -77,14 +83,9 @@ $case (appRepoScheme settings)
|
||||
git annex initremote storage #{gitAnnexRemote}
|
||||
git annex get --from storage
|
||||
|
||||
<p>Switch to some branch, let's say <tt>my-brilliant-solution</tt>:
|
||||
|
||||
<pre>
|
||||
git checkout -b my-brilliant-solution
|
||||
|
||||
<h2>Work on your solution
|
||||
|
||||
<p>You need to generate your solution for the test set as <tt>test-A/out.tsv</tt>. You may also generate the solution for the dev set (<tt>dev-0/out.tsv</tt>).
|
||||
<p>You need to generate your solution for the test set as <tt>test-A/out.tsv</tt>. It is also recommended to generate the output for the dev set (<tt>dev-0/out.tsv</tt>).
|
||||
|
||||
<p>You can evaluate results for the dev set locally:
|
||||
|
||||
@ -98,7 +99,9 @@ $case (appRepoScheme settings)
|
||||
|
||||
<pre>
|
||||
cd #{challengeName challenge}
|
||||
git checkout -b #{myBranch} # switch to some other branch
|
||||
git add foo.py build.sh # add your source codes
|
||||
git add gonito.yaml # it's a good practice to add metadata file, see below
|
||||
|
||||
$if isJust (repoGitAnnexRemote repo)
|
||||
<pre>
|
||||
@ -117,12 +120,12 @@ $else
|
||||
$case (appRepoScheme settings)
|
||||
$of SelfHosted
|
||||
<pre>
|
||||
git push origin master
|
||||
git push origin #{myBranch}
|
||||
<h3>Repos hosted on Gonito.net
|
||||
<p>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
|
||||
<pre>
|
||||
git push origin my-brilliant-solution:my-brilliant-solution
|
||||
git push origin #{myBranch}
|
||||
|
||||
<h3>External repos
|
||||
|
||||
@ -130,10 +133,10 @@ $case (appRepoScheme settings)
|
||||
$maybe token <- mToken
|
||||
<p>Your webook is:
|
||||
<pre>
|
||||
wget --timeout=0 --quiet -O - '#{appRoot settings}/trigger-remotely' --post-data 'token=#{token}&branch=#{myBranch}&challenge=#{challengeName challenge}&url=URL_TO_YOUR_REPO'
|
||||
wget --timeout=0 --quiet -O - '#{appRoot settings}/trigger-remotely' --post-data 'token=#{token}&branch=#{myBranch}&challenge=#{challengeName challenge}&url=#{urlToYourRepo}'
|
||||
<p>or you can just use the following URL:
|
||||
<pre>
|
||||
#{appRoot settings}/trigger-remotely-simple/#{token}/#{challengeName challenge}/URL_TO_YOUR_REPO/#{myBranch}
|
||||
#{appRoot settings}/trigger-remotely-simple/#{token}/#{challengeName challenge}/#{urlToYourRepo}/#{myBranch}
|
||||
|
||||
<h3>Manual submission
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user