Issue Title: Create a GitLab Plugin for zkApp Wallet Setup
Description:
We want to develop a GitLab plugin that facilitates the creation of zkApp wallets for users and securely stores the relevant data using GitLab CI/CD variables. The plugin will generate a wallet, store it in GitLab’s CI/CD pipeline as environment variables, and help users initiate their wallet setup without us managing the wallet directly. This will be done through an OAuth app to allow secure interaction between GitLab and the wallet service.
Features:
OAuth Integration:
Implement OAuth authentication for secure communication between the GitLab instance and the wallet service.
The OAuth app will guide users through authorization and wallet setup without the plugin managing the wallet on their behalf.
Wallet Creation Job:
Create a GitLab job (CI/CD) that runs on the GitLab Runner and is triggered after OAuth authentication is completed.
The job will:
Generate a new zkApp wallet.
Assign the wallet address and keys to GitLab environment variables (e.g., WALLET_ADDRESS, PRIVATE_KEY, PUBLIC_KEY).
Ensure wallet data is securely stored and not exposed in logs.
Storing Wallet in GitLab Variables:
Set up secure GitLab CI/CD environment variables to store the wallet keys and related data.
Make sure these variables are protected and masked where necessary.
User Interface:
Add a UI/UX interface within GitLab to guide the user through the wallet creation process after OAuth.
The interface will include:
Option to connect via OAuth.
Trigger button to create the wallet and store it in GitLab variables.
Documentation to guide users on accessing and managing their wallet after setup.
Job Template:
Provide a customizable GitLab CI job template that users can include in their pipeline to leverage the wallet details for zkApp deployment.
Example job for creating and managing a wallet.
Security Considerations:
Ensure the plugin operates in a secure manner, especially when handling private keys and sensitive information.
Utilize GitLab’s built-in security mechanisms for masking environment variables and ensuring only authorized jobs can access them.
Acceptance Criteria:
[ ] OAuth integration is functional and allows users to authorize and connect to the zkApp wallet creation service.
[ ] Wallet creation job is triggered after OAuth connection and creates the wallet successfully.
[ ] Wallet details are securely stored in GitLab CI/CD environment variables.
[ ] A UI within GitLab helps guide the user through wallet setup and job execution.
[ ] The CI job template for zkApp deployment is provided and well-documented.
[ ] Security and best practices are adhered to when handling sensitive wallet data.
Technical Considerations:
The wallet creation logic should be developed in a way that GitLab runners can execute it efficiently and securely.
Consider the use of GitLab’s CI/CD features like masked and protected variables to handle private keys and sensitive data.
Ensure OAuth tokens are stored securely and only used for the wallet creation process.
Out of Scope:
We will not manage the users’ wallets directly. The users retain full control over their wallet and the associated keys.
Milestones:
Implement OAuth flow and GitLab integration.
Create a job template for wallet creation.
Build the user interface to guide users through wallet creation.
GitLab Plugin for zkApp Wallet Setup
Issue Title: Create a GitLab Plugin for zkApp Wallet Setup
Description:
We want to develop a GitLab plugin that facilitates the creation of zkApp wallets for users and securely stores the relevant data using GitLab CI/CD variables. The plugin will generate a wallet, store it in GitLab’s CI/CD pipeline as environment variables, and help users initiate their wallet setup without us managing the wallet directly. This will be done through an OAuth app to allow secure interaction between GitLab and the wallet service.
Features:
OAuth Integration:
Wallet Creation Job:
WALLET_ADDRESS
,PRIVATE_KEY
,PUBLIC_KEY
).Storing Wallet in GitLab Variables:
User Interface:
Job Template:
Security Considerations:
Acceptance Criteria:
Technical Considerations:
masked
andprotected
variables to handle private keys and sensitive data.Out of Scope:
Milestones:
Reference:
GitLab CI/CD Documentation https://docs.gitlab.com/ee/api/oauth2.html
zkApp Wallet Documentation for creation and management
https://docs.minaprotocol.com/node-operators/generating-a-keypair