Scenario: you have a frontend SPA (Angular, React, Vue, etc) that uses a private package from Amazon AWS CodeCommit (or similar git repo).
The package is specified in package.json as:
"your-private-package": "git+ssh://git-codecommit.eu-west-1.amazonaws.com/v1/repos/your_package"
Pre-requisites
First we need to setup our user in Amazon CodeCommit, please follow the official guide:
– for Windows: https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html
– for Linux, macOS, or Unix: https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html
In short:
1) Create your public and private key for Git
2) Upload your SSH public key in CodeCommit
3) Update/Create the file .ssh/config
with the CodeCommit related settings (as the User
and IdentityFile
)
4) Make sure the CodeCommit host you want to connect to is included in .ssh/known_hosts
5) Test the connection to the CodeCommit repo
6) Make sure your build works locally
You should then have your .ssh
folder looking like this:
And the “AWS CodeCommit credentials” looking like this:
Azure DevOps Pipeline
Now we can setup our pipeline in Azure DevOps to build the SPA as usual.
The package will require a valid SSH authentication to be able to run with success npm install
.
Hence we need to add – before npm install
– our SSH user auth configuration.
1) Add an extra task “Install SSH key” from the “Add task” menu.
2) Find the “Known Hosts entry” from your .ssh/known_hosts
file.
NB. Copy the full line, not only the hash (ex. git-codecommit.eu-west-1.amazonaws.com ssh-rsa AAAAB3...YDT
)
3) Create a “Pipeline variable” (es. yourname_pub
) and set his type as “Private” (you must have the “lock” icon)
4) Add the “SSH Public Key” using the “Link” functionality, specify your pipeline variable name using the $()
variable notation, ex. $(yourname_pub)
5) Add the private SSH Key using the “Link” functionality (basically upload the file and follow the wizard)
6) In the “Advanced” section, fill out the settings based on your .ssh/config
file:
a. Alias: just a name, it’s not important
b. Host name: the host you need to connect to
c. User: the “User” you have in your file.
Basically it’s the “SSH Key ID” that CodeCommit generated for you when you uploaded your SSH key.
The final configuration should look like this:
Now you just need to Save the pipeline and Run it.
NB. The same configuration should work for other repository, like Github.
Let me know if you found this guide helpful!