| name: Docker Base Image CI |
|
|
| on: |
| push: |
| branches: |
| - master |
| paths: |
| - 'docker/images/n8n-base/Dockerfile' |
| pull_request: |
| paths: |
| - 'docker/images/n8n-base/Dockerfile' |
| workflow_dispatch: |
| inputs: |
| push: |
| description: 'Push to registries' |
| required: false |
| default: false |
| type: boolean |
|
|
| jobs: |
| build: |
| runs-on: ubuntu-latest |
| strategy: |
| matrix: |
| node_version: ['20', '22.21.1', '24'] |
| steps: |
| - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 |
|
|
| - name: Set up QEMU |
| uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 |
|
|
| - name: Set up Docker Buildx |
| uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 |
|
|
| - name: Login to DHI Registry (for pulling base images) |
| uses: ./.github/actions/docker-registry-login |
| with: |
| login-ghcr: 'false' |
| login-dhi: 'true' |
| dockerhub-username: ${{ secrets.DOCKER_USERNAME }} |
| dockerhub-password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
| - name: Login to Docker registries (for pushing) |
| if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.push == true) |
| uses: ./.github/actions/docker-registry-login |
| with: |
| login-ghcr: 'true' |
| login-dockerhub: 'true' |
| dockerhub-username: ${{ secrets.DOCKER_USERNAME }} |
| dockerhub-password: ${{ secrets.DOCKER_PASSWORD }} |
|
|
| - name: Build and push |
| uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 |
| with: |
| context: . |
| file: ./docker/images/n8n-base/Dockerfile |
| build-args: | |
| NODE_VERSION=${{ matrix.node_version }} |
| platforms: linux/amd64,linux/arm64 |
| provenance: ${{ github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.push == true) }} |
| sbom: ${{ github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.push == true) }} |
| push: ${{ github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs.push == true) }} |
| tags: | |
| ${{ secrets.DOCKER_USERNAME }}/base:${{ matrix.node_version }}-${{ github.sha }} |
| ${{ secrets.DOCKER_USERNAME }}/base:${{ matrix.node_version }} |
| ghcr.io/${{ github.repository_owner }}/base:${{ matrix.node_version }}-${{ github.sha }} |
| ghcr.io/${{ github.repository_owner }}/base:${{ matrix.node_version }} |
| no-cache: true |
|
|