Gitea的api

Table of contents

背景

以API來創建

組織

屬性功能路徑注意事項
組織Create an organization/orgs 
倉儲Create a repository in an organization/org/{org}/repos 
密鑰Create/Update a secret in an organization/orgs/{org}/actions/secrets/{secretname} 
變數Create an org-level variable/orgs/{org}/actions/variables/{variablename} 
掛鉤Create a hook/orgs/{org}/hooks 
標示Create a label for an organization/orgs/{org}/labels 

團隊

屬性功能路徑注意事項
組織內新增團隊Create a team/orgs/{org}/teams 
新增成員Add a team member/teams/{id}/members/{username} 
新增倉儲Add a repository to a team/teams/{id}/repos/{org}/{repo} 

使用者

屬性功能路徑注意事項
密鑰Create/Update a secretin a user scope/user/actions/secrets/{secretname} 
變數Create a user-level variable/user/actions/variables/{variablename} 
oauth2creates a new OAuth2 application/user/applications/oauth2 
簽章Create a GPG key/user/gpg_keys 
掛鉤Create a hook/user/hooks 
公鑰Create a public key/user/keys 
倉儲Create a repository/user/repos 
令牌Create an access token/users/{username}/tokens 

倉儲

屬性功能路徑注意事項
創建倉儲Create a repository/user/repos 
模版Create a repository using a template/repos/{template_owner}/{template_repo}/generate 
密值Create or Update a secret value in a repository/repos/{owner}/{repo}/actions/secrets/{secretname} 
密鑰Add a key to a repository/repos/{owner}/{repo}/keys 
變數Create a repo-level variable/repos/{owner}/{repo}/actions/variables/{variablename} 
分支保護Create a branch protections for a repository/repos/{owner}/{repo}/branch_protections 
創建分支Create a branch/repos/{owner}/{repo}/branches 
檔案Update/Create a file in a repository/repos/{owner}/{repo}/branches 
掛鉤Create a hook/repos/{owner}/{repo}/hooks 
拉取Create a pull request/repos/{owner}/{repo}/pulls從遠端主線角度
拉取create review requests for a pull request/repos/{owner}/{repo}/pulls/{index}/requested_reviewers 
版本Create a release/repos/{owner}/{repo}/releases 
資產Create a release attachment/repos/{owner}/{repo}/releases/{id}/assets 
提交Create a commit status/repos/{owner}/{repo}/statuses/{sha} 
推送鏡像add a push mirror to the repository/repos/{owner}/{repo}/push_mirrors 
標籤Create a new git tag in a repository/repos/{owner}/{repo}/tags 
維基Create a wiki page/repos/{owner}/{repo}/wiki/new 
主題Add a topic to a repository/repos/{owner}/{repo}/topics/{topic} 
協作Add a collaborator to a repository/repos/{owner}/{repo}/collaborators/{collaborator} 
團隊Add a team to a repository/repos/{owner}/{repo}/teams/{team} 

管理

屬性功能路徑注意事項
開創倉儲Create a repository on behalf of a user/admin/users/{username}/repos 
徽章Add a badge to a user/admin/users/{username}/badges 
掛鉤Create a hook/admin/hooks 
使用者Create a user/admin/users 
組織Create an organization/admin/users/{username}/orgs 
公鑰Add a public key on behalf of a user/admin/users/{username}/keys 

API token

  • 有很多登入方式

Personal Access Token

  • 在設定頁面中,找到並點擊 “Applications”(應用程式)。在該頁面,您可以看到 “Generate New Token”(產生新令牌)的選項。點擊它。
  • 設定令牌名稱和權限:
    • 在產生令牌頁面,您可以為令牌設定一個名稱,以資識別。
    • 選擇所需的權限。根據作業需求、選擇合適的權限,
    • 然後點擊 “Generate Token”(產生令牌)。
  • 複製令牌
    • 產生的令牌將顯示在頁面上。請務必將令牌複製並儲存到安全的地方,因為之後任何人都將無法再次查看該令牌。
  • 注意
    • token and access_token API authentication is deprecated and will be removed in gitea 1.23.
    • Please use AuthorizationHeaderToken instead. Existing queries will continue to work but without authorization.

create organization

model

  • 創建者的username是必要項目(*)。名稱不能跟現有的其他名稱相同。
    • 雖然變數名稱是username,但其效果卻為“組織名稱”。
    CreateOrgOption{
    description:	CreateOrgOption options for creating an organization
    description	[...]
    email	[...]
    full_name	[...]
    location	[...]
    repo_admin_change_team_access	[...]
    username*	[...]
    visibility	[...]
    website	[...]
    }
    

範例

  • json檔案內容

    {
      "description": "org1",
      "email": "sinotec2@gmail.com",
      "full_name": "organization number one",
      "location": "same as company",
      "repo_admin_change_team_access": true,
      "username": "grp1_admin",
      "visibility": "public",
      "website": "https://sinotech-eng.com"
    }
    
  • curl指令

    curl -X 'POST' \
    'http://localhost:3000/api/v1/orgs?access_token=***' \
    -H 'accept: application/json' \
    -H 'Content-Type: application/json' \
    -d '{
    ...
    }
    
  • 執行結果

public_members

  • 指定組織的擁有者
  • token要與使用者搭配

    curl -X 'PUT' \
    'http://localhost:3000/api/v1/orgs/grp1_admin/public_members/sinotec2?access_token=***' \
    -H 'accept: application/json'
    

create a team under a organization

map_group_to_team

  • Gitea的組織是剛性的組織架構、類似公司的部門、有著嚴格的分際,團隊則類似職級、著重在角色分工的差別權限、如編輯群、管理群組、讀者群。一個成員可以參與不同的團隊,一個團隊卻不能參與不同的組織
  • Gitea提供了與LDAP的對口銜接,除了接受LDAP的成員之外,也提供有map_group_to_team正面表列功能。(相對也有負面表列map_group_to_team_removal詳下
  • 說明與範例詳見管理樣版

    <textarea 
      name="group_team_map" 
      rows="5" 
      placeholder='{
          "cn=my-group,cn=groups,dc=example,dc=org": {
            "MyGiteaOrganization": ["MyGiteaTeam1", "MyGiteaTeam2"]
            }}'
    >
        
    </textarea>
    
  • 範例中
    • LDAP的群組:my-group
    • 對照Gitea
      • 組織:MyGiteaOrganization
      • 該組織下的團隊:["MyGiteaTeam1", "MyGiteaTeam2"]
  • auths.map_group_to_team=對應 LDAP 群組到組織團隊 (欄位留空以跳過)
  • auths.map_group_to_team_removal=如果使用者不屬於相對應的 LDAP 群組,將使用者從已同步的團隊移除。

map_group_to_team_removal

  • 這項功能是防止非LDAP成員另外加入團隊

    <div class="ui checkbox">
      <label></label>
      <input 
          name="group_team_map_removal" 
          type="checkbox" 
            checked
      >
    </div>
    

TODO’s

新創組織

指定各組織對應的LDAP群組(成員團隊)

VPH模版

  • README(BBS)畫面
    • 名稱
    • 訊息(名稱、短文、完整連結)
    • 重要連結
    • 討論區域
  • 將VPH_Clean複製到各個組織之下

設定群組下的編輯團隊