Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/build-dev-cicd-rootfs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ jobs:
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
if: ${{ !env.ACT }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
if: ${{ !env.ACT }}
id: meta
uses: docker/metadata-action@v5
with:
Expand All @@ -71,14 +73,15 @@ jobs:
context: ./iximiuz/rootfs/dev/ci-cd
file: ./iximiuz/rootfs/dev/ci-cd/Dockerfile
platforms: linux/amd64
load: false
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
load: ${{ !!env.ACT }}
push: ${{ !env.ACT && github.event_name != 'pull_request' }}
tags: ${{ env.ACT && format('{0}:local', env.IMAGE_NAME) || steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
USER=ibtisam
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Image digest
if: ${{ !env.ACT }}
run: echo "Pushed ${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}"
9 changes: 6 additions & 3 deletions .github/workflows/build-guacamole-rootfs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,15 @@ jobs:
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
if: ${{ !env.ACT }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
if: ${{ !env.ACT }}
id: meta
uses: docker/metadata-action@v5
with:
Expand All @@ -74,9 +76,9 @@ jobs:
context: ./iximiuz/rootfs/guacamole
file: ./iximiuz/rootfs/guacamole/Dockerfile
platforms: linux/amd64,linux/arm64
load: false
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
load: ${{ !!env.ACT }}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restrict local loads to one platform

When act sets ACT, this enables load while the build still targets both linux/amd64 and linux/arm64; the Ubuntu workflow has the same combination. Docker documents --load as loading a single-platform result and notes that the default Engine image store cannot load multi-platform images (Buildx --load documentation). Consequently, the documented local run fails on standalone/classic Docker installations; select the host platform for act runs or use a multi-platform-capable output/store.

Useful? React with 👍 / 👎.

push: ${{ !env.ACT && github.event_name != 'pull_request' }}
tags: ${{ env.ACT && format('{0}:local', env.IMAGE_NAME) || steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
USER=ibtisam
Expand All @@ -87,4 +89,5 @@ jobs:
cache-to: type=gha,mode=max

- name: Image digest
if: ${{ !env.ACT }}
run: echo "Pushed ${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}"
9 changes: 6 additions & 3 deletions .github/workflows/build-jenkins-rootfs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ jobs:
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
if: ${{ !env.ACT }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
if: ${{ !env.ACT }}
id: meta
uses: docker/metadata-action@v5
with:
Expand All @@ -73,9 +75,9 @@ jobs:
context: ./iximiuz/rootfs/jenkins
file: ./iximiuz/rootfs/jenkins/Dockerfile
platforms: linux/amd64
load: false
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
load: ${{ !!env.ACT }}
push: ${{ !env.ACT && github.event_name != 'pull_request' }}
tags: ${{ env.ACT && format('{0}:local', env.IMAGE_NAME) || steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
USER=ibtisam
Expand All @@ -84,4 +86,5 @@ jobs:
cache-to: type=gha,mode=max

- name: Image digest
if: ${{ !env.ACT }}
run: echo "Pushed ${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}"
9 changes: 6 additions & 3 deletions .github/workflows/build-nexus-rootfs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ jobs:
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
if: ${{ !env.ACT }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
if: ${{ !env.ACT }}
id: meta
uses: docker/metadata-action@v5
with:
Expand All @@ -73,9 +75,9 @@ jobs:
context: ./iximiuz/rootfs/nexus
file: ./iximiuz/rootfs/nexus/Dockerfile
platforms: linux/amd64
load: false
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
load: ${{ !!env.ACT }}
push: ${{ !env.ACT && github.event_name != 'pull_request' }}
tags: ${{ env.ACT && format('{0}:local', env.IMAGE_NAME) || steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
USER=ibtisam
Expand All @@ -84,4 +86,5 @@ jobs:
cache-to: type=gha,mode=max

- name: Image digest
if: ${{ !env.ACT }}
run: echo "Pushed ${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}"
9 changes: 6 additions & 3 deletions .github/workflows/build-sonarqube-rootfs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ jobs:
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
if: ${{ !env.ACT }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
if: ${{ !env.ACT }}
id: meta
uses: docker/metadata-action@v5
with:
Expand All @@ -73,9 +75,9 @@ jobs:
context: ./iximiuz/rootfs/sonarqube
file: ./iximiuz/rootfs/sonarqube/Dockerfile
platforms: linux/amd64
load: false
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
load: ${{ !!env.ACT }}
push: ${{ !env.ACT && github.event_name != 'pull_request' }}
tags: ${{ env.ACT && format('{0}:local', env.IMAGE_NAME) || steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
USER=ibtisam
Expand All @@ -84,4 +86,5 @@ jobs:
cache-to: type=gha,mode=max

- name: Image digest
if: ${{ !env.ACT }}
run: echo "Pushed ${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}"
9 changes: 6 additions & 3 deletions .github/workflows/build-ubuntu-rootfs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,15 @@ jobs:
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
if: ${{ !env.ACT }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata
if: ${{ !env.ACT }}
id: meta
uses: docker/metadata-action@v5
with:
Expand All @@ -71,9 +73,9 @@ jobs:
context: ./iximiuz/rootfs/ubuntu
file: ./iximiuz/rootfs/ubuntu/Dockerfile
platforms: linux/amd64,linux/arm64
load: false
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
load: ${{ !!env.ACT }}
push: ${{ !env.ACT && github.event_name != 'pull_request' }}
tags: ${{ env.ACT && format('{0}:local', env.IMAGE_NAME) || steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
USER=ibtisam
Expand All @@ -85,4 +87,5 @@ jobs:
cache-to: type=gha,mode=max

- name: Image digest
if: ${{ !env.ACT }}
run: echo "Pushed ${{ env.IMAGE_NAME }}@${{ steps.build-and-push.outputs.digest }}"
26 changes: 26 additions & 0 deletions iximiuz/rootfs/guacamole/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,32 @@ docker build \
.
```

## Local CI Workflow Testing with `act`

The full CI workflow can be run locally using [`act`](https://github.com/nektos/act) — this builds the image through the same pipeline steps that run on GitHub Actions, without pushing to GHCR and without any secrets. From the root of the `silver-stack` repository:

```bash
act push \
-W .github/workflows/build-guacamole-rootfs.yml \
--no-cache-server

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep act's cache server enabled

Remove --no-cache-server from this command and the equivalent commands in the other new README sections. The workflows always configure cache-from/cache-to: type=gha; Docker documents that this backend requires a cache URL and runtime token, while act defines this flag as disabling its local cache server (Docker cache authentication, act flag definition). With no GitHub runtime credentials supplied, the documented invocation leaves BuildKit without a usable cache endpoint and the build fails rather than producing the promised local image.

Useful? React with 👍 / 👎.

```

The image builds and loads into the local Docker daemon. No GITHUB_TOKEN or GHCR credentials are required.

### Verify the Built Image

```bash
docker images | grep guacamole-rootfs
```

## Published Image

The image is built and pushed to GHCR automatically via GitHub Actions on every push to `main`. No manual push is involved.

```bash
docker pull ghcr.io/ibtisam-iq/guacamole-rootfs:latest
```

## Usage in an iximiuz Playground

```bash
Expand Down
21 changes: 20 additions & 1 deletion iximiuz/rootfs/jenkins/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,28 @@ docker build \
.
```

## Local CI Workflow Testing with `act`

The full CI workflow can be run locally using [`act`](https://github.com/nektos/act) — this builds the image through the same pipeline steps that run on GitHub Actions, without pushing to GHCR and without any secrets. From the root of the `silver-stack` repository:

```bash
act push \
-W .github/workflows/build-jenkins-rootfs.yml \
--no-cache-server
```

The image builds and loads into the local Docker daemon. No GITHUB_TOKEN or GHCR credentials are required.

### Verify the Built Image

```bash
docker images | grep jenkins-rootfs
```

## Published Image

The image is built and pushed to GHCR automatically via GitHub Actions on every push to `main`. No manual push is involved.

```bash
docker pull ghcr.io/ibtisam-iq/jenkins-rootfs:latest
```
Expand Down Expand Up @@ -189,4 +209,3 @@ Post-boot (manual, user-initiated):
Full setup docs and source references, see my runbook:

https://runbook.ibtisam-iq.com/containers/iximiuz/rootfs/setup-jenkins-rootfs-image

20 changes: 20 additions & 0 deletions iximiuz/rootfs/nexus/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,28 @@ docker build \
.
```

## Local CI Workflow Testing with `act`

The full CI workflow can be run locally using [`act`](https://github.com/nektos/act) — this builds the image through the same pipeline steps that run on GitHub Actions, without pushing to GHCR and without any secrets. From the root of the `silver-stack` repository:

```bash
act push \
-W .github/workflows/build-nexus-rootfs.yml \
--no-cache-server
```

The image builds and loads into the local Docker daemon. No GITHUB_TOKEN or GHCR credentials are required.

### Verify the Built Image

```bash
docker images | grep nexus-rootfs
```

## Published Image

The image is built and pushed to GHCR automatically via GitHub Actions on every push to `main`. No manual push is involved.

```bash
docker pull ghcr.io/ibtisam-iq/nexus-rootfs:latest
```
Expand Down
20 changes: 20 additions & 0 deletions iximiuz/rootfs/sonarqube/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,28 @@ docker build \
.
```

## Local CI Workflow Testing with `act`

The full CI workflow can be run locally using [`act`](https://github.com/nektos/act) — this builds the image through the same pipeline steps that run on GitHub Actions, without pushing to GHCR and without any secrets. From the root of the `silver-stack` repository:

```bash
act push \
-W .github/workflows/build-sonarqube-rootfs.yml \
--no-cache-server
```

The image builds and loads into the local Docker daemon. No GITHUB_TOKEN or GHCR credentials are required.

### Verify the Built Image

```bash
docker images | grep sonarqube-rootfs
```

## Published Image

The image is built and pushed to GHCR automatically via GitHub Actions on every push to `main`. No manual push is involved.

```bash
docker pull ghcr.io/ibtisam-iq/sonarqube-rootfs:latest
```
Expand Down
20 changes: 20 additions & 0 deletions iximiuz/rootfs/ubuntu/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,28 @@ docker build \
.
```

## Local CI Workflow Testing with `act`

The full CI workflow can be run locally using [`act`](https://github.com/nektos/act) — this builds the image through the same pipeline steps that run on GitHub Actions, without pushing to GHCR and without any secrets. From the root of the `silver-stack` repository:

```bash
act push \
-W .github/workflows/build-ubuntu-rootfs.yml \
--no-cache-server
```

The image builds and loads into the local Docker daemon. No GITHUB_TOKEN or GHCR credentials are required.

### Verify the Built Image

```bash
docker images | grep ubuntu-24-04-rootfs
```

## Published Image

The image is built and pushed to GHCR automatically via GitHub Actions on every push to `main`. No manual push is involved.

```
docker pull ghcr.io/ibtisam-iq/ubuntu-24-04-rootfs:latest
```
Expand Down
Loading