Organizations can now configure GitHub Actions for self-deployed GitHub Enterprise Server (GHES) on premises with Pure Storage® FlashBlade//S™, making it simpler, more secure, and less costly to develop and deliver code at scale. Additionally, organizations with software development, electronic device automation (EDA), and design and research functions can operate their development environments with a cloud-like operating model by only paying for the effective capacity used by on-premises self-hosted GitHub Enterprise and other integrated workflows that accelerate the software delivery process. This model utilizes Evergreen//One™ and also includes cost savings from data reduction rates of 2:1 (minimum), depending on different data sets.

GitHub is one of the most common source code repositories for modern application development in the DevOps process, supporting over 83 million users. In addition to version control management, GHES also provides the ability to automate the build, test, and deployment pipeline during continuous integration and continuous delivery (CI/CD) processes. GHES has a cloud and self-hosted on-premises offering. 

Self-hosted on-premises GHES using S3-compatible fast ObjectStore allows businesses to develop and deploy applications on premises faster than in the cloud and in a secure, self-hosted, and managed on-premises environment. The on-premises implementation of GHES also allows developers to customize the CI/CD workflow and integrate with some of the common development tools used during the software development life cycle (SDLC). 

GitHub Enterprise Server has two main components: actions and runners. GitHub Actions is a reusable workflow automation tool for build, test, and deployment pipelines. Individual tasks called Actions can be written for custom workflows using templates in YAML with different software development tools. GitHub Actions require external storage for storing workflow templates, build artifacts, and GitHub Packages

GitHub runners are virtual machines (VMs) that run different jobs. Every job can have its own runner. A job consists of custom scripts that are executed when a GitHub Action triggers an event in the workflow run.  

The self-hosted on-premises GHES can be installed on bare metal and virtual machines. Apart from the core filesystem and code repositories, GitHub Actions use AWS S3 or S3-compatible ObjectStores like Pure Storage FlashBlade//S for scalable capacity and performance. FlashBlade//S is a consolidated storage platform for both file and object workloads, delivering a simplified experience for infrastructure and data management. 

github

Figure 1: Layout diagram of self-hosted on-premises GHES with FlashBlade//S.

The diagram above shows the external storage for GitHub Actions is configured on FlashBlade//S fast objectstore. S3 currently supports two forms of access to a bucket: path style and virtual host style. While the traditional way of accessing the buckets using path style is being deprecated, the S3-compatible bucket created on FlashBlade//S supports virtual host-style access. It’s pertinent to note that adequate configuration is required to support the virtual host style of addressing while creating the bucket on FlashBlade//S for GitHub Actions.

The following steps demonstrate the process for configuring the S3-compatible bucket on FlashBlade//S using the virtual host style of addressing for GitHub Actions.

  1. Create an account, a username, and a bucket on FlashBlade//S. Enable versioning on the new bucket called “Actions.”
    2
  2. Identify the data VIP on the FlashBlade//S device that will be used to access the “Actions” bucket from GHES.
    github
  3. Update the DNS with the FlashBlade//S data VIP fully qualified domain name (FQDN). In this example, “sn1-fb-g12-23-data1.puretec.purestorage.com” is the FQDN for the data VIP on FlashBlade//S identified to be used by GitHub Actions. Another entry for the virtual host style to access the bucket “Actions” has to be made in the DNS: “actions.sn1-fb-g12-23-data1.puretec.purestorage.com.” 
  4. The FQDN of the data VIP on the FlashBlade//S device that will be used by GitHub Actions is added to the “Object Store Virtual Hosts” under “Settings.”
    4

Setting up the S3-compatible bucket on FlashBlade//S for GitHub Actions is complete. The following test provided by GitHub indicates that FlashBlade//S is a validated storage platform for GitHub Actions.

[root@sn1-r620-a04-07 enterprise-storage-check]# docker login ghcr.io/github-technology-partners

Authenticating with existing credentials…

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[root@sn1-r620-a04-07 enterprise-storage-check]# ./ghe-storage-test.sh -p s3 -v 3.4 -c "BucketName=actions;AccessKeyId=PSFBSAZRMBALCPAPFBIAAGKENDJEOFEEBCHHCKLII;SecretAccessKey=2B1227721445e493/1e6bC53EC8B616d310adLNHK;ServiceUrl=http://sn1-fb-g12-23-data1.puretec.purestorage.com;PathPrefix=actions-l2"

Running storage tests…

Unable to find image ‘ghcr.io/github-technology-partners/enterprise-storage-check/actions-console:ghes-3.4’ locally

ghes-3.4: Pulling from github-technology-partners/enterprise-storage-check/actions-console

68e7bb398b9f: Pulling fs layer

9bb5e89cb727: Pulling fs layer

d20f66ad948c: Pulling fs layer

1b17a1499ab6: Pulling fs layer

9de4667aa13c: Pulling fs layer

1d4ef5ecaeca: Pulling fs layer

bf5c291570de: Pulling fs layer

9bec00f0bc8d: Pulling fs layer

cc5ce2c12032: Pulling fs layer

efcbd0c10377: Pulling fs layer

6837fda5ba84: Pulling fs layer

969ba831aefe: Pulling fs layer

1d9ca8e556ce: Pulling fs layer

0f72a60202ff: Pulling fs layer

9f308d0a7af8: Pulling fs layer

4719de76fdac: Pulling fs layer

bf5c291570de: Waiting

1b17a1499ab6: Waiting

9de4667aa13c: Waiting

1d4ef5ecaeca: Waiting

efcbd0c10377: Waiting

1d9ca8e556ce: Waiting

9f308d0a7af8: Waiting

cc5ce2c12032: Waiting

969ba831aefe: Waiting

9bec00f0bc8d: Waiting

6837fda5ba84: Waiting

0f72a60202ff: Waiting

4719de76fdac: Waiting

9bb5e89cb727: Verifying Checksum

9bb5e89cb727: Download complete

d20f66ad948c: Verifying Checksum

d20f66ad948c: Download complete

1b17a1499ab6: Download complete

9de4667aa13c: Verifying Checksum

9de4667aa13c: Download complete

68e7bb398b9f: Verifying Checksum

68e7bb398b9f: Download complete

1d4ef5ecaeca: Download complete

bf5c291570de: Verifying Checksum

bf5c291570de: Download complete

9bec00f0bc8d: Verifying Checksum

9bec00f0bc8d: Download complete

cc5ce2c12032: Download complete

efcbd0c10377: Verifying Checksum

efcbd0c10377: Download complete

969ba831aefe: Verifying Checksum

969ba831aefe: Download complete

1d9ca8e556ce: Verifying Checksum

1d9ca8e556ce: Download complete

9f308d0a7af8: Verifying Checksum

9f308d0a7af8: Download complete

4719de76fdac: Verifying Checksum

4719de76fdac: Download complete

68e7bb398b9f: Pull complete

9bb5e89cb727: Pull complete

6837fda5ba84: Verifying Checksum

6837fda5ba84: Download complete

0f72a60202ff: Verifying Checksum

0f72a60202ff: Download complete

d20f66ad948c: Pull complete

1b17a1499ab6: Pull complete

9de4667aa13c: Pull complete

1d4ef5ecaeca: Pull complete

bf5c291570de: Pull complete

9bec00f0bc8d: Pull complete

cc5ce2c12032: Pull complete

efcbd0c10377: Pull complete

6837fda5ba84: Pull complete

969ba831aefe: Pull complete

1d9ca8e556ce: Pull complete

0f72a60202ff: Pull complete

9f308d0a7af8: Pull complete

4719de76fdac: Pull complete

Digest: sha256:ec26877253ff6c7784824dee10b1c1a6226658b64dc2b75d9d44e0c12c7bfde3

Status: Downloaded newer image for ghcr.io/github-technology-partners/enterprise-storage-check/actions-console:ghes-3.4

LR actions> Creating new log file /LR/Logs/Actions_OnPrem_Test-StorageConnection_2022-04-05_17-51-34.log

LR actions> Test-Storage Connection utility for GitHub Enterprise

LR actions> Overriding remote blob provider with [s3]

LR actions> Overriding connection string from command line

LR actions> Configured Blob provider is : [Microsoft.VisualStudio.Services.Cloud.AmazonS3BlobProvider]

LR actions> 1. Testing Upload content : Passed

LR actions> 2. Testing Download content : Passed

LR actions> 3. Testing Delete content : Passed

LR actions> 4. Testing MultiPart Upload content : Passed

LR actions> 5. Testing Delete large content : Passed

LR actions>

LR actions> All Storage tests passed

LR actions>

[root@sn1-r620-a04-07 enterprise-storage-check]#

 

Validating FlashBlade//S for GitHub Actions further strengthens integration with other software development tools and workflows that run on premises. FlashBlade//S provides a best-in-class data storage platform designed to support data-heavy, unstructured workloads efficiently. It provides unequaled density, capacity, and performance for all of your application development and delivery processes. Additionally, FlashBlade//S provides cost-efficient data deduction to significantly reduce the amount of storage you need to consume and protects your data from ransomware during SDLC with SafeMode™ snapshots.