Add workflows
This commit is contained in:
parent
1034c9a805
commit
65d6f6e4ee
2 changed files with 204 additions and 0 deletions
28
.github/workflows/publish-immutable-actions.yml
vendored
Normal file
28
.github/workflows/publish-immutable-actions.yml
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
name: 'Publish Immutable Action Version'
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checking out
|
||||
uses: actions/checkout@v4
|
||||
- name: Publish
|
||||
id: publish
|
||||
uses: actions/publish-immutable-action@0.0.4
|
||||
176
.github/workflows/runs-on.yml
vendored
Normal file
176
.github/workflows/runs-on.yml
vendored
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
name: RunsOn Tests
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
test-host-outbound:
|
||||
runs-on:
|
||||
- runs-on=${{ github.run_id }}
|
||||
- runner=2cpu-linux-x64
|
||||
- image=ubuntu22-stepsecurity-x64
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@rc
|
||||
with:
|
||||
egress-policy: audit
|
||||
allowed-endpoints: >
|
||||
github.com:443
|
||||
goreleaser.com:443
|
||||
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Run outbound calls from host
|
||||
run: |
|
||||
start_time=$(date +%s)
|
||||
end_time=$((start_time + 90)) # 5 minutes = 300 seconds
|
||||
|
||||
while [ $(date +%s) -lt $end_time ]; do
|
||||
curl -I https://www.google.com
|
||||
curl -I https://goreleaser.com
|
||||
sleep 10 # wait 10 seconds between calls
|
||||
done
|
||||
|
||||
test-docker-outbound:
|
||||
runs-on:
|
||||
- runs-on=${{ github.run_id }}
|
||||
- runner=2cpu-linux-x64
|
||||
- image=ubuntu22-stepsecurity-x64
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@rc
|
||||
with:
|
||||
egress-policy: block
|
||||
allowed-endpoints: >
|
||||
archive.ubuntu.com:80
|
||||
github.com:443
|
||||
goreleaser.com:443
|
||||
production.cloudflare.docker.com:443
|
||||
docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com:443
|
||||
*.docker.io:443
|
||||
security.ubuntu.com:80
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Run outbound calls from within Docker container
|
||||
continue-on-error: true
|
||||
run: |
|
||||
# Start the container
|
||||
docker run --rm -d --name test-container ubuntu:latest sleep 90
|
||||
|
||||
# Install curl in the container
|
||||
docker exec test-container apt-get update
|
||||
docker exec test-container apt-get install -y curl
|
||||
|
||||
# Print /etc/resolv.conf from the container
|
||||
docker exec test-container cat /etc/resolv.conf
|
||||
|
||||
# Make outbound calls
|
||||
for i in {1..9}; do
|
||||
docker exec test-container curl -I https://www.google.com
|
||||
docker exec test-container curl -I https://goreleaser.com
|
||||
sleep 10 # wait 10 seconds between calls
|
||||
done
|
||||
|
||||
# Stop the container
|
||||
docker stop test-container
|
||||
|
||||
|
||||
test-docker-build-outbound:
|
||||
runs-on:
|
||||
- runs-on=${{ github.run_id }}
|
||||
- runner=2cpu-linux-x64
|
||||
- image=ubuntu22-stepsecurity-x64
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@rc
|
||||
with:
|
||||
egress-policy: audit
|
||||
allowed-endpoints: >
|
||||
archive.ubuntu.com:80
|
||||
auth.docker.io:443
|
||||
github.com:443
|
||||
goreleaser.com:443
|
||||
production.cloudflare.docker.com:443
|
||||
docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com:443
|
||||
registry-1.docker.io:443
|
||||
security.ubuntu.com:80
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Build Docker image and test outbound calls during build
|
||||
continue-on-error: true
|
||||
run: |
|
||||
# Create a Dockerfile that installs curl and makes outbound calls
|
||||
cat <<EOF > Dockerfile
|
||||
FROM ubuntu:latest
|
||||
RUN apt-get update && apt-get install -y curl
|
||||
RUN for i in {1..9}; do curl -I https://www.google.com && curl -I https://goreleaser.com; sleep 10; done
|
||||
EOF
|
||||
|
||||
# Build the Docker image
|
||||
docker build -t test-image .
|
||||
|
||||
# Print /etc/resolv.conf from the build container (temporary container used during build)
|
||||
container_id=$(docker create test-image)
|
||||
docker start $container_id
|
||||
docker exec $container_id cat /etc/resolv.conf
|
||||
docker stop $container_id
|
||||
docker rm $container_id
|
||||
|
||||
- name: Print Docker logs with journalctl
|
||||
run: |
|
||||
sudo journalctl -u docker.service --no-pager
|
||||
shell: bash
|
||||
|
||||
test-long-running-docker:
|
||||
runs-on:
|
||||
- runs-on=${{ github.run_id }}
|
||||
- runner=2cpu-linux-x64
|
||||
- image=ubuntu22-stepsecurity-x64
|
||||
steps:
|
||||
- name: Harden Runner
|
||||
uses: step-security/harden-runner@rc
|
||||
with:
|
||||
egress-policy: block
|
||||
allowed-endpoints: >
|
||||
archive.ubuntu.com:80
|
||||
auth.docker.io:443
|
||||
github.com:443
|
||||
goreleaser.com:443
|
||||
production.cloudflare.docker.com:443
|
||||
registry-1.docker.io:443
|
||||
docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com:443
|
||||
security.ubuntu.com:80
|
||||
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Run long-running Docker container with outbound calls
|
||||
continue-on-error: true
|
||||
run: |
|
||||
# Start the long-running container
|
||||
docker run --rm -d --name long-running-container ubuntu:latest bash -c "
|
||||
apt-get update && apt-get install -y curl &&
|
||||
while true; do
|
||||
curl -I https://www.google.com;
|
||||
curl -I https://goreleaser.com;
|
||||
sleep 10;
|
||||
done
|
||||
"
|
||||
|
||||
# Print /etc/resolv.conf from the container
|
||||
docker exec long-running-container cat /etc/resolv.conf
|
||||
|
||||
# Let the container run for 5 minutes
|
||||
sleep 90
|
||||
|
||||
# Stop the container
|
||||
docker stop long-running-container
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue