- BuildMaster
- Getting Started with BuildMaster
- Builds and Continuous Integration
- What is a "Build" in BuildMaster?
- Git and Source Control
- Git Pipelines and Workflows
- Build Scripts & Templates
- Packages & Dependencies
- Build Artifacts
- Automated Testing & Verification
- Deployment & Continuous Delivery
- What is a “Pipeline” in BuildMaster?
- CI Server (Jenkins, TeamCity, etc.) Integration
- Deployment Scripts & Templates
- Automatic Checks & Approval Gates
- Manual Deployment Steps and Tasks
- Databases
- Configuration Files
- Rollbacks
- Advanced CD Patterns
- Applications & Releases
- Connecting to your Servers with BuildMaster
- Scripting in BuildMaster
- Configuring for Your Team
- Docker/Containers
- Development Platforms
- Deployment Targets
- Tools & Service Integrations
- Reference
- BuildMaster API Endpoints & Methods
- Extending BuildMaster
- Built-in Functions & Variables
- Applications
- Builds
- Configuration Files
- Containers
- Credentials
- Databases
- Deployables
- Environments
- Executions
- Files
- General
- JSON
- Linux
- Lists
- Maps
- Math
- Nuget
- Packages
- Pipelines
- PowerShell
- Python
- Releases
- Servers
- Strings
- XML
- Built-in Operations
- Batch
- BuildMaster
- Configuration Files
- Databases
- DotNet
- Files
- Firewall
- General
- Apply-Template
- Attach Package
- Build
- Checkout-Code
- Close-Issue
- Concatenate-Files
- Copy-Files
- Create-Directory
- Create-File
- Create-Issue
- Create-Issue
- Create-IssueComment
- Create-Package
- Create-ZipFile
- Delete-Files
- Download-Asset
- Download-Http
- Ensure-Directory
- Ensure-File
- Ensure-HostsEntry
- Ensure-Metadata
- Ensure-Milestone
- Ensure-Package
- Ensure-Release
- Ensure-Tag
- Exec
- Execute Python Script
- Execute VSTest Tests
- Get-Http
- Install-Package
- OSCall
- OSExec
- Post-Http
- Push-PackageFile
- PYCall
- PYEnsure
- Query-Package
- Remediate-Drift
- Rename-File
- Repackage
- Replace-Text
- Send-Email
- Set-FileAttributes
- Set-Variable
- SHEnsure
- Sleep
- Transfer-Files
- Transition-Issues
- Upload-Assets
- Upload-Http
- Upload-ReleaseAssets
- Git
- IIS
- Nuget
- PowerShell
- ProGet
- Python
- Registry
- Servers
- Services
- Shell
- Windows
- Administration
- Installation & Upgrading
- ProGet
- Getting Started with ProGet
- Packages: Managing & Tracking
- Feeds Types & Third-Party Packages
- What is a "Feed" in ProGet?
- What is a "Connector" in ProGet?
- NuGet (.NET)
- PowerShell
- Chocolatey (Windows/Machine)
- RubyGems (ruby)
- Visual Studio Extension (.vsix)
- Maven (Java)
- npm (Node.js)
- Bower (JavaScript)
- Debian (Apt)
- Helm (Kubernetes)
- PyPI (Python)
- Conda (Python)
- RPM (Yum)
- Alpine (APK)
- CRAN (R)
- pub (Dart/Flutter)
- Cargo (Rust)
- Terraform Modules
- Other Feed Types
- Universal Packages & Feeds
- UPack Overview
- Universal Packages
- Virtual Packages
- Tools and Libraries
- Universal Package Registry
- Downloads & Source Code
- Universal Feed API
- Asset Directories & File Storage
- Docker and Containers
- Replication & Feed Mirroring
- Software Composition Analysis (SCA)
- Security and Access Controls
- Cloud Storage (Amazon S3, Azure Blob)
- Administration
- Installation & Upgrading
- API Endpoints & Methods
- Otter
- Getting Started with Otter
- Orchestration & Server Automation
- Connecting to your Servers with Otter
- Collecting & Verifying Configuration
- Drift Remediation / Configuration as Code
- Scripting in Otter
- Configuring for Your Team
- Installation & Upgrading
- Administration & Maintenance
- Reference
- Otter API Reference
- OtterScript Reference
- Built-in Functions & Variables
- Executions
- Files
- General
- JSON
- Linux
- Lists
- Maps
- Math
- PowerShell
- Python
- Servers
- Strings
- XML
- Built-in Operations
- Batch
- Docker
- DotNet
- Files
- Firewall
- General
- Apply-Template
- Collect Debian Packages
- Collect RPM Packages
- Collect-InstalledPackages
- Concatenate-Files
- Copy-Files
- Create-Directory
- Create-File
- Create-Package
- Create-ZipFile
- Delete-Files
- Download-Asset
- Download-Http
- Ensure-Directory
- Ensure-File
- Ensure-HostsEntry
- Ensure-Metadata
- Ensure-Package
- Exec
- Execute Python Script
- Get-Http
- Install-Package
- OSCall
- OSExec
- Post-Http
- Push-PackageFile
- PYCall
- PYEnsure
- Query-Package
- Remediate-Drift
- Rename-File
- Repackage
- Replace-Text
- Send-Email
- Set-FileAttributes
- Set-Variable
- SHEnsure
- Sleep
- Transfer-Files
- Upload-Assets
- Upload-Http
- IIS
- Otter
- PowerShell
- ProGet
- Python
- Registry
- Servers
- Services
- Shell
- Windows
- Installation & Maintenance
- Windows (Inedo Hub)
- What is the Inedo Hub?
- Configuring & Maintaining Inedo Products
- Offline Installation (no Internet access)
- HOWTO: Install on Windows
- HOWTO: Upgrade or Downgrade with the Inedo Hub
- HOWTO: Install Pre-release Product Versions
- HOWTO: Configure Your Inedo Product to Run As a Windows Domain Account
- Silent/Automated Installation Guide
- Legacy (Traditional) Installer
- Linux (Docker)
- Manual Installation
- High Availability & Load Balancing
- LDAP/AD Integration
- IIS & Web Hosting on Windows
- Logging & Analytics
- SAML Authentication
- Upgrading your Inedo Product
- Managing Agents and Servers
- Backing Up & Restoring
- Installation Configuration Files
- SQL Server & Inedo Products
- Windows (Inedo Hub)
- Inedo Agent
- What is the Inedo Agent?
- Installation & Upgrading
- Downloads & Release Notes
- Maintenance & Configuration
- Internal Architecture
- MyInedo
- OtterScript (Execution Engine)
- Reference
- OtterScript
- Inedo Execution Engine
- Operations & Functions
- Text Templating
- Resource Pools
- Runtime Variables
- Advanced Scenarios & Features
- Statements and Blocks
- Romp (Discontinued)
- Using Romp
- Installing, Configuring, and Maintaining
- Romp CLI Reference
- Package Layout
- Downloads & Source Code
- Extensibility
- Inedo SDK
Alpine (APK)
Alpine Linux is a lightweight security-focused Linux distribution that is popular for use in Docker containers and embedded systems because of its small footprint. Its package manager is Alpine Package Keeper (APK).
Starting in ProGet 2023.22, you can create Alpine (APK) feeds to host packages for Alpine Linux.
Prerequisite Configuration
Client Configuration
In order to install APK packages from ProGet, each client must perform the following steps:
1. Trust the feed's public key
APK stores trusted public keys for package repositories in /etc/apk/keys
. To trust a ProGet APK feed, save a copy of the feed's public key in that directory using the following naming scheme:
wget -O "/etc/apk/keys/<FeedName>@proget.rsa.pub" <ProGetUrl>/apk/<FeedName>/keys/<FeedName>%40proget.rsa.pub
Note that you can configure a different name for your public key if necessary. By default, it will be <FeedName>@proget.rsa.pub
for all Alpine feeds.
2. Add the feed to APK's repositories file
The list of repositories to use is stored in the /etc/apk/repositories
file. It is a plain text file with a repository URL on each line. To add a ProGet feed to the end of the list:
echo "<ProGetUrl>/apk/<FeedName>/" >> /etc/apk/repositories
3. Verify APK configuration
To verify that APK is able to download the package index, execute:
apk update
If the configuration is correct, this will list all repos (including the ProGet feed) without errors.
Common Tasks
Installing Packages
Alpine packages are installed using APK. To install a package hosted by ProGet, use the command:
apk add <package-name>
Creating Packages
To learn how to create an APK package, visit a resource such as Creating an Alpine package on the Alpine Linux wiki.
Publishing Packages
APK
does not support uploading a package, so ProGet offers a few alternative methods to publish APK packages:
Upload from ProGet Web Application
On the feed overview page, select "Add Package" and "Upload Package" to upload an .rpm
file directly from your browser.
Publish via HTTP
To push an APK package via HTTP, issue a PUT
or POST
request with the package file as the content to: http://{proget-server}/apk/{feed-name}/
Examples:
cURL:
curl http://{proget-server}/apk/{feed-name}/ --user <user>:<password> --upload-file {my-package}.apk
wget:
wget http://{proget-server}/apk/{feed-name}/ --http-user <user> --http-password <password> --method POST --body-file {my-package}.apk
PowerShell:
Invoke-WebRequest http://{proget-server}/apk/{feed-name}/ -Credential [System.Net.NetworkCredential]::new('<user>', '<password>') -Method PUT -InFile {my-package}.apk
Connectors for Alpine (APK)
Alpine (APK) feeds support connectors to other ProGet Alpine (APK) feeds, official Alpine repositories, and other third-party repositories.
Official Alpine Repositories
AlpineLinux.org hosts dozens of different Alpine (APK) repositories; there's generally one repository per distro (3.17, 3.18, etc.), quality (main, community, releases), and architecture (x86_64, armv7, etc.).
When creating a connector and connecting to an official repository, we recommend using a name that follows the URL conventions. For example:
URL: | https://dl-cdn.alpinelinux.org/alpine/v3.18/main/x86_64/ |
Connector name: | alpine-v3.18-main-x86_64 |
You can see a list of the default repositories in the /etc/apk/repositories
file on a new Alpine installation.