Skip to content

Commit fd4f180

Browse files
authored
Merge pull request #40029 from github/repo-sync
Repo sync
2 parents 16fcab0 + 9155e26 commit fd4f180

File tree

26 files changed

+716
-252
lines changed

26 files changed

+716
-252
lines changed

content/actions/how-tos/create-and-publish-actions/manage-custom-actions.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,16 @@ To use a specific action version, users can configure their {% data variables.pr
5656

5757
We recommend using tags for actions release management. Using this approach, your users can easily distinguish between major and minor versions:
5858

59-
* Create and validate a release on a release branch (such as `release/v1`) before creating the release tag (for example, `v1.0.2`).
60-
* Create a release using semantic versioning. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/managing-releases-in-a-repository).
61-
* Move the major version tag (such as `v1`, `v2`) to point to the Git ref of the current release. For more information, see [Git basics - tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging).
62-
* Introduce a new major version tag (`v2`) for changes that will break existing workflows. For example, changing an action's inputs would be a breaking change.
63-
* Major versions can be initially released with a `beta` tag to indicate their status, for example, `v2-beta`. The `-beta` tag can then be removed when ready.
59+
1. Create and validate a release on a release branch (such as `release/v1`) before creating the release tag (for example, `v1.0.2`).
60+
1. Create a release using semantic versioning. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/managing-releases-in-a-repository).
61+
1. Move the major version tag (such as `v1`, `v2`) to point to the Git ref of the current release. For more information, see [Git basics - tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging).
62+
63+
{% ifversion immutable-releases-preview %}
64+
> [!NOTE]
65+
> If you enable immutable releases, you can still move Git tags that are not linked to releases on {% data variables.product.github %}.
66+
{% endif %}
67+
68+
1. Introduce a new major version tag (`v2`) for changes that will break existing workflows. For example, changing an action's inputs would be a breaking change.
6469

6570
This example demonstrates how a user can reference a major release tag:
6671

content/actions/how-tos/create-and-publish-actions/release-and-maintain-actions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Here is an example process that you can follow to automatically run tests, creat
7272

7373
* When a release is published or edited, your release workflow will automatically take care of compilation and adjusting tags.
7474

75-
* We recommend creating releases using semantically versioned tags – for example, `v1.1.3` – and keeping major (`v1`) and minor (`v1.1`) tags current to the latest appropriate commit. For more information, see [AUTOTITLE](/actions/creating-actions/about-custom-actions#using-release-management-for-actions) and [About semantic versioning](https://docs.npmjs.com/about-semantic-versioning).
75+
* We recommend creating releases using semantically versioned tags – for example, `v1.1.3` – and keeping major (`v1`) and minor (`v1.1`) tags current to the latest appropriate commit. For more information, see [AUTOTITLE](/actions/how-tos/create-and-publish-actions/manage-custom-actions#using-release-management-for-actions) and [About semantic versioning](https://docs.npmjs.com/about-semantic-versioning).
7676

7777
### Results
7878

content/actions/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,5 @@ gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \
190190
## Next steps
191191

192192
To keep your attestations relevant and manageable, you should delete attestations that are no longer needed. See [AUTOTITLE](/actions/how-tos/security-for-github-actions/using-artifact-attestations/managing-the-lifecycle-of-artifact-attestations).
193+
194+
You can also generate release attestations to help consumers verify the integrity and origin of your releases. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases).

content/actions/tutorials/use-actions-runner-controller/deploy-runner-scale-sets.md

Lines changed: 301 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,14 +415,14 @@ template:
415415
You can customize the PodSpec of the listener pod and the controller will apply the configuration you specify. The following is an example pod specification.
416416
417417
> [!NOTE]
418-
> It's important to not change the `listenerTemplate.spec.containers.name` value of the listener container. Otherwise, the configuration you specify will be applied to a new side-car container.
418+
> It's important to not change the `listenerTemplate.spec.containers.name` value of the listener container. Otherwise, the configuration you specify will be applied to a new sidecar container.
419419

420420
```yaml
421421
listenerTemplate:
422422
spec:
423423
containers:
424424
# If you change the name of the container, the configuration will not be applied to the listener,
425-
# and it will be treated as a side-car container.
425+
# and it will be treated as a sidecar container.
426426
- name: listener
427427
securityContext:
428428
runAsUser: 1000
@@ -468,6 +468,70 @@ containerMode:
468468

469469
The `template.spec` will be updated to the following default configuration.
470470

471+
For versions of Kubernetes `>= v1.29`, sidecar container will be used to run docker daemon.
472+
473+
```yaml
474+
template:
475+
spec:
476+
initContainers:
477+
- name: init-dind-externals
478+
image: ghcr.io/actions/actions-runner:latest
479+
command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
480+
volumeMounts:
481+
- name: dind-externals
482+
mountPath: /home/runner/tmpDir
483+
- name: dind
484+
image: docker:dind
485+
args:
486+
- dockerd
487+
- --host=unix:///var/run/docker.sock
488+
- --group=$(DOCKER_GROUP_GID)
489+
env:
490+
- name: DOCKER_GROUP_GID
491+
value: "123"
492+
securityContext:
493+
privileged: true
494+
restartPolicy: Always
495+
startupProbe:
496+
exec:
497+
command:
498+
- docker
499+
- info
500+
initialDelaySeconds: 0
501+
failureThreshold: 24
502+
periodSeconds: 5
503+
volumeMounts:
504+
- name: work
505+
mountPath: /home/runner/_work
506+
- name: dind-sock
507+
mountPath: /var/run
508+
- name: dind-externals
509+
mountPath: /home/runner/externals
510+
containers:
511+
- name: runner
512+
image: ghcr.io/actions/actions-runner:latest
513+
command: ["/home/runner/run.sh"]
514+
env:
515+
- name: DOCKER_HOST
516+
value: unix:///var/run/docker.sock
517+
- name: RUNNER_WAIT_FOR_DOCKER_IN_SECONDS
518+
value: "120"
519+
volumeMounts:
520+
- name: work
521+
mountPath: /home/runner/_work
522+
- name: dind-sock
523+
mountPath: /var/run
524+
volumes:
525+
- name: work
526+
emptyDir: {}
527+
- name: dind-sock
528+
emptyDir: {}
529+
- name: dind-externals
530+
emptyDir: {}
531+
```
532+
533+
For versions of Kubernetes `< v1.29`, the following configuration will be applied:
534+
471535
```yaml
472536
template:
473537
spec:
@@ -592,6 +656,122 @@ To customize the spec, comment out or remove `containerMode`, and append the con
592656
Before deciding to run `dind-rootless`, make sure you are aware of [known limitations](https://docs.docker.com/engine/security/rootless/#known-limitations).
593657
{% ifversion not ghes %}
594658

659+
For versions of Kubernetes >= v1.29, sidecar container will be used to run docker daemon.
660+
661+
```yaml
662+
## githubConfigUrl is the GitHub url for where you want to configure runners
663+
## ex: https://github.com/myorg/myrepo or https://github.com/myorg
664+
githubConfigUrl: "https://github.com/actions/actions-runner-controller"
665+
666+
## githubConfigSecret is the k8s secrets to use when auth with GitHub API.
667+
## You can choose to use GitHub App or a PAT token
668+
githubConfigSecret: my-super-safe-secret
669+
670+
## maxRunners is the max number of runners the autoscaling runner set will scale up to.
671+
maxRunners: 5
672+
673+
## minRunners is the min number of idle runners. The target number of runners created will be
674+
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
675+
minRunners: 0
676+
677+
runnerGroup: "my-custom-runner-group"
678+
679+
## name of the runner scale set to create. Defaults to the helm release name
680+
runnerScaleSetName: "my-awesome-scale-set"
681+
682+
## template is the PodSpec for each runner Pod
683+
## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
684+
template:
685+
spec:
686+
initContainers:
687+
- name: init-dind-externals
688+
image: ghcr.io/actions/actions-runner:latest
689+
command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
690+
volumeMounts:
691+
- name: dind-externals
692+
mountPath: /home/runner/tmpDir
693+
- name: init-dind-rootless
694+
image: docker:dind-rootless
695+
command:
696+
- sh
697+
- -c
698+
- |
699+
set -x
700+
cp -a /etc/. /dind-etc/
701+
echo 'runner:x:1001:1001:runner:/home/runner:/bin/ash' >> /dind-etc/passwd
702+
echo 'runner:x:1001:' >> /dind-etc/group
703+
echo 'runner:100000:65536' >> /dind-etc/subgid
704+
echo 'runner:100000:65536' >> /dind-etc/subuid
705+
chmod 755 /dind-etc;
706+
chmod u=rwx,g=rx+s,o=rx /dind-home
707+
chown 1001:1001 /dind-home
708+
securityContext:
709+
runAsUser: 0
710+
volumeMounts:
711+
- mountPath: /dind-etc
712+
name: dind-etc
713+
- mountPath: /dind-home
714+
name: dind-home
715+
- name: dind
716+
image: docker:dind-rootless
717+
args:
718+
- dockerd
719+
- --host=unix:///run/user/1001/docker.sock
720+
securityContext:
721+
privileged: true
722+
runAsUser: 1001
723+
runAsGroup: 1001
724+
restartPolicy: Always
725+
startupProbe:
726+
exec:
727+
command:
728+
- docker
729+
- info
730+
initialDelaySeconds: 0
731+
failureThreshold: 24
732+
periodSeconds: 5
733+
volumeMounts:
734+
- name: work
735+
mountPath: /home/runner/_work
736+
- name: dind-sock
737+
mountPath: /run/user/1001
738+
- name: dind-externals
739+
mountPath: /home/runner/externals
740+
- name: dind-etc
741+
mountPath: /etc
742+
- name: dind-home
743+
mountPath: /home/runner
744+
containers:
745+
- name: runner
746+
image: ghcr.io/actions/actions-runner:latest
747+
command: ["/home/runner/run.sh"]
748+
env:
749+
- name: DOCKER_HOST
750+
value: unix:///run/user/1001/docker.sock
751+
securityContext:
752+
privileged: true
753+
runAsUser: 1001
754+
runAsGroup: 1001
755+
volumeMounts:
756+
- name: work
757+
mountPath: /home/runner/_work
758+
- name: dind-sock
759+
mountPath: /run/user/1001
760+
volumes:
761+
- name: work
762+
emptyDir: {}
763+
- name: dind-externals
764+
emptyDir: {}
765+
- name: dind-sock
766+
emptyDir: {}
767+
- name: dind-etc
768+
emptyDir: {}
769+
- name: dind-home
770+
emptyDir: {}
771+
```
772+
773+
For versions of Kubernetes `< v1.29`, the following configuration will be applied:
774+
595775
```yaml
596776
## githubConfigUrl is the GitHub url for where you want to configure runners
597777
## ex: https://github.com/myorg/myrepo or https://github.com/myorg
@@ -698,6 +878,125 @@ template:
698878
{% endif %}
699879
{% ifversion ghes %}
700880

881+
For versions of Kubernetes `>= v1.29`, sidecar container will be used to run docker daemon.
882+
883+
```yaml
884+
## githubConfigUrl is the GitHub url for where you want to configure runners
885+
## ex: https://<HOSTNAME>/enterprises/my_enterprise or https://<HOSTNAME>/myorg
886+
githubConfigUrl: "https://<HOSTNAME>/actions/actions-runner-controller"
887+
888+
## githubConfigSecret is the k8s secrets to use when auth with GitHub API.
889+
## You can choose to use GitHub App or a PAT token
890+
githubConfigSecret: my-super-safe-secret
891+
892+
## maxRunners is the max number of runners the autoscaling runner set will scale up to.
893+
maxRunners: 5
894+
895+
## minRunners is the min number of idle runners. The target number of runners created will be
896+
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
897+
minRunners: 0
898+
899+
runnerGroup: "my-custom-runner-group"
900+
901+
## name of the runner scale set to create. Defaults to the helm release name
902+
runnerScaleSetName: "my-awesome-scale-set"
903+
904+
## template is the PodSpec for each runner Pod
905+
## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
906+
template:
907+
spec:
908+
initContainers:
909+
- name: init-dind-externals
910+
image: ghcr.io/actions/actions-runner:latest
911+
command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
912+
volumeMounts:
913+
- name: dind-externals
914+
mountPath: /home/runner/tmpDir
915+
- name: init-dind-rootless
916+
image: docker:dind-rootless
917+
command:
918+
- sh
919+
- -c
920+
- |
921+
set -x
922+
cp -a /etc/. /dind-etc/
923+
echo 'runner:x:1001:1001:runner:/home/runner:/bin/ash' >> /dind-etc/passwd
924+
echo 'runner:x:1001:' >> /dind-etc/group
925+
echo 'runner:100000:65536' >> /dind-etc/subgid
926+
echo 'runner:100000:65536' >> /dind-etc/subuid
927+
chmod 755 /dind-etc;
928+
chmod u=rwx,g=rx+s,o=rx /dind-home
929+
chown 1001:1001 /dind-home
930+
securityContext:
931+
runAsUser: 0
932+
volumeMounts:
933+
- mountPath: /dind-etc
934+
name: dind-etc
935+
- mountPath: /dind-home
936+
name: dind-home
937+
- name: dind
938+
image: docker:dind-rootless
939+
args:
940+
- dockerd
941+
- --host=unix:///run/user/1001/docker.sock
942+
env:
943+
- name: DOCKER_HOST
944+
value: unix:///run/user/1001/docker.sock
945+
securityContext:
946+
privileged: true
947+
runAsUser: 1001
948+
runAsGroup: 1001
949+
restartPolicy: Always
950+
startupProbe:
951+
exec:
952+
command:
953+
- docker
954+
- info
955+
initialDelaySeconds: 0
956+
failureThreshold: 24
957+
periodSeconds: 5
958+
volumeMounts:
959+
- name: work
960+
mountPath: /home/runner/_work
961+
- name: dind-sock
962+
mountPath: /run/user/1001
963+
- name: dind-externals
964+
mountPath: /home/runner/externals
965+
- name: dind-etc
966+
mountPath: /etc
967+
- name: dind-home
968+
mountPath: /home/runner
969+
containers:
970+
- name: runner
971+
image: ghcr.io/actions/actions-runner:latest
972+
command: ["/home/runner/run.sh"]
973+
env:
974+
- name: DOCKER_HOST
975+
value: unix:///run/user/1001/docker.sock
976+
securityContext:
977+
privileged: true
978+
runAsUser: 1001
979+
runAsGroup: 1001
980+
volumeMounts:
981+
- name: work
982+
mountPath: /home/runner/_work
983+
- name: dind-sock
984+
mountPath: /run/user/1001
985+
volumes:
986+
- name: work
987+
emptyDir: {}
988+
- name: dind-externals
989+
emptyDir: {}
990+
- name: dind-sock
991+
emptyDir: {}
992+
- name: dind-etc
993+
emptyDir: {}
994+
- name: dind-home
995+
emptyDir: {}
996+
```
997+
998+
For versions of Kubernetes `< v1.29`, the following configuration can be applied:
999+
7011000
```yaml
7021001
## githubConfigUrl is the GitHub url for where you want to configure runners
7031002
## ex: https://<HOSTNAME>/enterprises/my_enterprise or https://<HOSTNAME>/myorg

content/code-security/supply-chain-security/end-to-end-supply-chain/securing-builds.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ How exactly you sign your build will depend on what sort of code you're writing,
5959

6060
For more information, see [AUTOTITLE](/actions/security-guides/encrypted-secrets){% ifversion fpt or ghec %}, [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect),{% endif %} and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
6161

62+
{% ifversion immutable-releases-preview %}
63+
64+
## Use immutable releases
65+
66+
If you are using release assets from other projects in your build system, or creating releases for your own work, you should reduce security risk by ensuring those releases are immutable, meaning they cannot be changed after publication. Immutable releases help prevent supply chain attacks and accidental breaking changes. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases).
67+
{% endif %}
68+
6269
## Harden security for {% data variables.product.prodname_actions %}
6370

6471
There are many further steps you can take to additionally secure {% data variables.product.prodname_actions %}. In particular, be careful when evaluating third-party workflows, and consider using `CODEOWNERS` to limit who can make changes to your workflows.

0 commit comments

Comments
 (0)