Skip to content

Commit b469982

Browse files
Merge branch 'main' into discussions-edits
2 parents 33f29ea + ff547a3 commit b469982

File tree

122 files changed

+1814
-2506
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

122 files changed

+1814
-2506
lines changed

.github/workflows/generate-code-scanning-query-lists.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ jobs:
8787
8888
- name: Build code scanning query list
8989
run: |
90-
for lang in "actions" "cpp" "csharp" "go" "java" "javascript" "python" "ruby" "swift"; do
90+
for lang in "actions" "cpp" "csharp" "go" "java" "javascript" "python" "ruby" "rust" "swift"; do
9191
echo "Generating code scanning query list for $lang"
9292
npm run generate-code-scanning-query-list -- \
9393
--verbose \

.github/workflows/index-autocomplete-search.yml

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Index autocomplete search in Elasticsearch
22

3-
# **What it does**: Indexes autocomplete data (general and AI search) into Elasticsearch.
4-
# **Why we have it**: So we can power the APIs for autocomplete.
3+
# **What it does**: Indexes AI search autocomplete data into Elasticsearch.
4+
# **Why we have it**: So we can power the APIs for AI search autocomplete.
55
# **Who does it impact**: docs-engineering
66

77
on:
@@ -40,11 +40,6 @@ jobs:
4040
if: ${{ github.event_name == 'pull_request' }}
4141
run: curl --fail --retry-connrefused --retry 5 -I http://localhost:9200
4242

43-
- name: Run general auto-complete indexing
44-
env:
45-
ELASTICSEARCH_URL: ${{ github.event_name == 'pull_request' && 'http://localhost:9200' || secrets.ELASTICSEARCH_URL }}
46-
run: npm run index-general-autocomplete -- docs-internal-data
47-
4843
- name: Run AI search auto-complete indexing
4944
env:
5045
ELASTICSEARCH_URL: ${{ github.event_name == 'pull_request' && 'http://localhost:9200' || secrets.ELASTICSEARCH_URL }}

.github/workflows/test.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ jobs:
7575
- shielding
7676
# - tests
7777
# - tools
78-
- tracking
7978
- versions
8079
- webhooks
8180
- workflows

.github/workflows/triage-stale-check.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ jobs:
4848
with:
4949
repo-token: ${{ secrets.GITHUB_TOKEN }}
5050
stale-pr-message: 'This is a gentle bump for the docs team that this PR is waiting for review.'
51+
days-before-issue-stale: -1
5152
days-before-pr-stale: 14
5253
days-before-pr-close: -1 # Never close
5354
remove-stale-when-updated: false

.vscode/settings.json

Lines changed: 0 additions & 4 deletions
This file was deleted.
82.2 KB
Loading
39.6 KB
Loading

content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,10 @@ While ARC may be deployed successfully with different tooling and configurations
3939
* Installation tooling other than Helm
4040
* Service account and/or template spec customization
4141

42-
If you're uncertain if the issue is out of scope, open a ticket and we're happy to help you determine the best way to proceed.
43-
4442
For more information about contacting {% data variables.contact.github_support %}, see [AUTOTITLE](/support/contacting-github-support).
4543

4644
> [!NOTE]
47-
> * OpenShift clusters are currently unsupported.
45+
> * OpenShift clusters are in public preview. See guidance from [Red Hat](https://developers.redhat.com/articles/2025/02/17/how-securely-deploy-github-arc-openshift#arc_architecture) for configuration recommendations.
4846
> * ARC is only supported on GitHub Enterprise Server versions 3.9 and greater.
4947
5048
## Working with {% data variables.contact.github_support %} for Actions Runner Controller

content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,108 @@ ARC can use {% data variables.product.pat_v1_plural %} to register self-hosted r
8585
8686
{% data reusables.actions.actions-runner-controller-helm-chart-options %}
8787
88+
## Authenticating ARC with vault secrets
89+
90+
> [!NOTE]
91+
> Vault integration is currently available in public preview with support for Azure Key Vault.
92+
93+
Starting with gha-runner-scale-set version 0.12.0, ARC supports retrieving GitHub credentials from an external vault. Vault integration is configured per runner scale set. This means you can run some scale sets using Kubernetes secrets while others use vault-based secrets, depending on your security and operational requirements.
94+
95+
### Enabling Vault Integration
96+
97+
To enable vault integration for a runner scale set:
98+
99+
1. **Set the `githubConfigSecret` field** in your `values.yaml` file to the name of the secret key stored in your vault. This value must be a string.
100+
1. **Uncomment and configure the `keyVault` section** in your `values.yaml` file with the appropriate provider and access details.
101+
1. **Provide the required certificate** (`.pfx`) to both the controller and the listener. You can do this by:
102+
*Rebuilding the controller image with the certificate included, or
103+
*Mounting the certificate as a volume in both the controller and the listener using the `listenerTemplate` and `controllerManager` fields.
104+
105+
### Secret Format
106+
107+
The secret stored in Azure Key Vault must be in JSON format. The structure depends on the type of authentication you are using:
108+
109+
#### Example: GitHub Token
110+
111+
```json
112+
{
113+
"github_token": "TOKEN"
114+
}
115+
```
116+
117+
#### Example: GitHub App
118+
119+
```json
120+
{
121+
"github_app_id": "APP_ID_OR_CLIENT_ID",
122+
"github_app_installation_id": "INSTALLATION_ID",
123+
"github_app_private_key": "PRIVATE_KEY"
124+
}
125+
```
126+
127+
### Configuring `values.yaml` for Vault Integration
128+
129+
The certificate is stored as a .pfx file and mounted to the container at /akv/cert.pfx. Below is an example of how to configure the keyVault section to use this certificate for authentication:
130+
131+
```yaml
132+
keyVault:
133+
type: "azure_key_vault"
134+
proxy:
135+
https:
136+
url: "PROXY_URL"
137+
credentialSecretRef: "PROXY_CREDENTIALS_SECRET_NAME"
138+
http: {}
139+
noProxy: []
140+
azureKeyVault:
141+
clientId: <AZURE_CLIENT_ID>
142+
tenantId: <AZURE_TENANT_ID>
143+
url: <AZURE_VAULT_URL>
144+
certificatePath: "/akv/cert.pfx"
145+
```
146+
147+
### Providing the Certificate to the Controller and Listener
148+
149+
ARC requires a `.pfx` certificate to authenticate with the vault. This certificate must be made available to both the controller and the listener components during controller installation.
150+
You can do this by mounting the certificate as a volume using the `controllerManager` and `listenerTemplate` fields in your `values.yaml` file:
151+
152+
```yaml
153+
volumes:
154+
- name: cert-volume
155+
secret:
156+
secretName: my-cert-secret
157+
volumeMounts:
158+
- mountPath: /akv
159+
name: cert-volume
160+
readOnly: true
161+
162+
listenerTemplate:
163+
volumeMounts:
164+
- name: cert-volume
165+
mountPath: /akv/certs
166+
readOnly: true
167+
volumes:
168+
- name: cert-volume
169+
secret:
170+
secretName: my-cert-secret
171+
```
172+
173+
The code below is an example of a scale set `values.yml` file.
174+
175+
```yaml
176+
listenerTemplate:
177+
spec:
178+
containers:
179+
- name: listener
180+
volumeMounts:
181+
- name: cert-volume
182+
mountPath: /akv
183+
readOnly: true
184+
volumes:
185+
- name: cert-volume
186+
secret:
187+
secretName: my-cert-secret
188+
```
189+
88190
## Legal notice
89191

90192
{% data reusables.actions.actions-runner-controller-legal-notice %}

content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md

Lines changed: 34 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -47,59 +47,52 @@ To use OIDC with JFrog, establish a trust relationship between {% data variables
4747

4848
## Updating your {% data variables.product.prodname_actions %} workflow
4949

50-
Once you establish a trust relationship between {% data variables.product.prodname_actions %} and the JFrog platform, you can update your {% data variables.product.prodname_actions %} workflow file.
50+
### Authenticating with JFrog using OIDC
5151

5252
In your {% data variables.product.prodname_actions %} workflow file, ensure you are using the provider name and audience you configured in the JFrog Platform.
5353

54-
The following example uses the placeholder `YOUR_PROVIDER_NAME`.
54+
The following example uses the placeholders `YOUR_PROVIDER_NAME` and `YOUR_AUDIENCE`.
5555

5656
```yaml
57-
- name: Fetch Access Token from Artifactory
58-
id: fetch_access_token
59-
env:
60-
ID_TOKEN: ${{ steps.idtoken.outputs.id_token }}
61-
run: |
62-
ACCESS_TOKEN=$(curl \
63-
-X POST \
64-
-H "Content-type: application/json" \
65-
https://example.jfrog.io/access/api/v1/oidc/token \
66-
-d \
67-
"{\"grant_type\": \"urn:ietf:params:oauth:grant-type:token-exchange\", \"subject_token_type\":\"urn:ietf:params:oauth:token-type:id_token\", \"subject_token\": \"$ID_TOKEN\", \"provider_name\": \"YOUR_PROVIDER_NAME\"}" | jq .access_token | tr -d '"')
68-
echo ACCESS_TOKEN=$ACCESS_TOKEN >> $GITHUB_OUTPUT
69-
```
70-
71-
The following example shows part of a {% data variables.product.prodname_actions %} workflow file using cURL.
72-
73-
```yaml
74-
- name: Get ID Token (cURL method)
75-
id: idtoken
76-
run: |
77-
ID_TOKEN=$(curl -sLS -H "User-Agent: actions/oidc-client" -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
78-
"${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=jfrog-github" | jq .value | tr -d '"')
79-
echo "ID_TOKEN=${ID_TOKEN}" >> $GITHUB_OUTPUT
80-
```
81-
82-
Alternatively, you can set the audience as an environment variable using the `env` context. For more information about the `env` context, see [AUTOTITLE](/actions/learn-github-actions/contexts#env-context).
83-
84-
{% data reusables.actions.oidc-deployment-protection-rules %}
57+
permissions:
58+
id-token: write
59+
contents: read
8560

86-
```yaml
8761
jobs:
8862
build:
8963
runs-on: ubuntu-latest
90-
env:
91-
OIDC_AUDIENCE: 'YOUR_AUDIENCE'
64+
steps:
65+
- name: Set up JFrog CLI with OIDC
66+
id: setup-jfrog-cli
67+
uses: jfrog/setup-jfrog-cli@29fa5190a4123350e81e2a2e8d803b2a27fed15e
68+
with:
69+
JF_URL: ${{ env.JF_URL }}
70+
oidc-provider-name: 'YOUR_PROVIDER_NAME'
71+
oidc-audience: 'YOUR_AUDIENCE' # This is optional
72+
73+
- name: Upload artifact
74+
run: jf rt upload "dist/*.zip" my-repo/
75+
9276
```
9377

94-
Then, in your workflow file, retrieve the value of the variables stored in the `env` context. The following example uses the `env` context to retrieve the OIDC audience.
78+
> [!TIP]
79+
> When OIDC authentication is used, the `setup-jfrog-cli` action automatically provides `oidc-user` and `oidc-token` as step outputs.
80+
> These can be used for other integrations that require authentication with JFrog.
81+
> To reference these outputs, ensure the step has an explicit `id` defined (for example `id: setup-jfrog-cli`).
9582
83+
### Using OIDC Credentials in other steps
9684
```yaml
97-
- name: Get ID Token (using env context)
98-
uses: {% data reusables.actions.action-github-script %}
99-
id: idtoken
85+
- name: Sign in to Artifactory Docker registry
86+
uses: docker/login-action@v3
10087
with:
101-
script: |
102-
const coredemo = require('@actions/core');
103-
let id_token = await coredemo.getIDToken(process.env.OIDC_AUDIENCE);
104-
coredemo.setOutput('id_token', id_token);
88+
registry: ${{ env.JF_URL }}
89+
username: ${{ steps.setup-jfrog-cli.outputs.oidc-user }}
90+
password: ${{ steps.setup-jfrog-cli.outputs.oidc-token }}
91+
```
92+
93+
## Further reading
94+
95+
- [OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration) in the JFrog documentation
96+
- [Identity Mappings](https://jfrog.com/help/r/jfrog-platform-administration-documentation/identity-mappings) in the JFrog documentation
97+
- [AUTOTITLE](actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
10598
```

0 commit comments

Comments
 (0)