Approving a push
All pushes that flow through Git Proxy require an approval (authorisation). Until a push is approved, Git Proxy will block the commits from being sent to the upstream repository. To approve a push, you can use the REST API or web UI.
Using the REST API
Prerequisites
- Proxy and REST API are running (default behaviour)
- Proxy and REST API are running on
localhost:8000
andlocalhost:8080
, respectively - Intercepting a push instructions have been followed and you've reached Push via Git Proxy
-
curl
is installed
Instructions
1. Find the tracking ID
Following on from Push via Git Proxy, a unique & shareable link is generated:
http://localhost:8080/admin/push/0000000000000000000000000000000000000000__79b4d8953cbc324bcc1eb53d6412ff89666c241f
The ID
for your push corresponds to the last part of the URL:
0000000000000000000000000000000000000000__79b4d8953cbc324bcc1eb53d6412ff89666c241f
2. Authenticate with the API
Use the default & auto-generated Git Proxy username & password credentials to obtain a cookie. The cookie value is saved to a file (git-proxy-cookie
):
curl -H "Content-Type: application/json" -c git-proxy-cookie -X POST \
-d '{"username":"admin","password":"admin"}' http://localhost:8080/auth/login
3. Retrieve push with ID
from database
Using the cookie generated, execute a GET
request to confirm that your push with ID
exists in the database:
curl -I -b ./git-proxy-cookie http://localhost:8080/api/v1/push/${ID}
You should receive a 200 OK
in the response. If ID
does not exist then you'll receive a 404
error.
4. Approve the push with ID
Using the same cookie again, send a POST
command to approve the push:
curl -b ./git-proxy-cookie \
-X POST http://localhost:8080/api/v1/push/${ID}/authorise
5. Re-push your code
Execute git push
to send your approved code to the upstream repository:
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 10 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 470 bytes | 470.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
Using the CLI
Prerequisites
- Proxy and REST API are running (default behaviour)
- The Git Proxy URL is configured via the GIT_PROXY_UI_HOST (defaults to
http://localhost
) and GIT_PROXY_UI_PORT (defaults to8080
) environment variables. Note: this documentation assumes that Git Proxy UI is running onhttp://git-proxy.com:8080
. - Intercepting a push instructions have been followed and you've reached Push via Git Proxy
Instructions
1. Find the tracking ID
Following on from Push via Git Proxy, you'll receive a unique URL:
http://localhost:8080/requests/0000000000000000000000000000000000000000__79b4d8953cbc324bcc1eb53d6412ff89666c241f
The ID
for your push corresponds to the last part of the URL:
0000000000000000000000000000000000000000__79b4d8953cbc324bcc1eb53d6412ff89666c241f
2. Authenticate with the CLI
Use the default & auto-generated Git Proxy username & password credentials to authenticate and obtain a cookie. The cookie value is saved to a file (git-proxy-cookie
):
$ npx -- @finos/git-proxy-cli login --username admin --password admin
Login "admin" <admin@place.com> (admin): OK
3. Approve the push with ID
Use the commit ID
to approve your push with the CLI:
$ npx -- @finos/git-proxy-cli authorise --id 0000000000000000000000000000000000000000__79b4d8953cbc324bcc1eb53d6412ff89666c241f
Authorise: ID: '0000000000000000000000000000000000000000__79b4d8953cbc324bcc1eb53d6412ff89666c241f': OK
4. Re-push your code
Execute git push
to send your approved code through Git Proxy to the upstream repository:
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 10 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 470 bytes | 470.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
5. Log out
Clean up your connect cookie via logging out:
$ npx -- @finos/git-proxy-cli logout
Logout: OK
Using the UI
Prerequisites
- Proxy and REST API are running (default behaviour)
- Proxy and REST API are running on
localhost:8000
andlocalhost:8080
, respectively - UI is running on
localhost:8080
Instructions
1. Login as administrator
Login to the dashboard. As the UI is running on port 3000
, the URL is:
http://localhost:8080/login
Fill in the form using the following credentials:
Username: admin
Password: admin
Once submitted, you should be logged in as administrator 💪
2. Visit the shareable link
Following on from Push via Git Proxy, a unique & shareable link is generated:
remote: Git Proxy has received your push ✅
remote:
remote: 🔗 Shareable Link
remote: http://localhost:8080/admin/push/000000__b12557
Insert the URL directly into your web browser.
3. Approve the push using the dashboard
Press the approve button and a modal will appear. Happy with the contents of the push? 🤗
In the modal, check the tickbox ✅ and press the approve button.
4. Re-push your code
Execute git push
to send your approved code to the upstream repository:
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 10 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 470 bytes | 470.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.