Skip to content

use push-image action (#143) #23

use push-image action (#143)

use push-image action (#143) #23

Workflow file for this run

name: Hardened CI
on:
push:
branches:
- hardened-nginx-**
pull_request:
branches:
- hardened-nginx-**
release:
types:
- created
workflow_dispatch: {}
permissions:
contents: read
jobs:
unit:
permissions:
contents: read
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
# Taken from the upstream ci.yaml action
- name: Get go version
run: echo "GOLANG_VERSION=$(cat GOLANG_VERSION)" >> $GITHUB_ENV
- name: Set up Go
id: go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: ${{ env.GOLANG_VERSION }}
check-latest: true
- name: Run Unit Tests
run: ./scripts/test
e2e:
permissions:
contents: read
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Run E2E Tests
# Runner user seems to lack permissions to access the kubeconfig file
run: |
SKIP_BUILDX_HACK=true ./scripts/e2e-test
release:
needs: e2e
permissions:
contents: read
id-token: write # needed for the Vault authentication
if: github.event_name == 'release' && github.event.action == 'created'
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# Only pull vault secrets if the repository is rancher
- name: "Read secrets"
if: github.repository_owner == 'rancher'
uses: rancher-eio/read-vault-secrets@main
with:
secrets: |
secret/data/github/repo/${{ github.repository }}/dockerhub/${{ github.repository_owner }}/credentials username | DOCKER_USERNAME ;
secret/data/github/repo/${{ github.repository }}/dockerhub/${{ github.repository_owner }}/credentials password | DOCKER_TOKEN ;
secret/data/github/repo/${{ github.repository }}/rancher-prime-registry/credentials registry | PRIME_REGISTRY ;
secret/data/github/repo/${{ github.repository }}/rancher-prime-registry/credentials username | PRIME_REGISTRY_USERNAME ;
secret/data/github/repo/${{ github.repository }}/rancher-prime-registry/credentials password | PRIME_REGISTRY_PASSWORD
- name: Login to Container Registry with Rancher Secrets
if: github.repository_owner == 'rancher'
uses: docker/login-action@v3
with:
username: ${{ env.DOCKER_USERNAME }}
password: ${{ env.DOCKER_TOKEN }}
# For forks, setup docker login with GHA secrets
- name: Login to Container Registry
if: github.repository_owner != 'rancher'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build Base Image
env:
REGISTRY: ${{ github.repository_owner }}
run: ./scripts/build
- name: Build Binaries
env:
REGISTRY: ${{ github.repository_owner }}
run: ./scripts/package
- name: Build and push controller image
uses: rancher/ecm-distro-tools/actions/publish-image@master
with:
image: nginx-ingress-controller
tag: ${{ github.event.release.tag_name }}
make-target: push-image
public-repo: rancher
public-username: ${{ env.DOCKER_USERNAME }}
public-password: ${{ env.DOCKER_TOKEN }}
prime-repo: rancher
prime-registry: ${{ env.PRIME_REGISTRY }}
prime-username: ${{ env.PRIME_REGISTRY_USERNAME }}
prime-password: ${{ env.PRIME_REGISTRY_PASSWORD }}
- name: Build and push controller chroot image
uses: rancher/ecm-distro-tools/actions/publish-image@master
with:
image: nginx-ingress-controller-chroot
tag: ${{ github.event.release.tag_name }}
make-target: push-chroot-image
public-repo: rancher
public-username: ${{ env.DOCKER_USERNAME }}
public-password: ${{ env.DOCKER_TOKEN }}
prime-repo: rancher
prime-registry: ${{ env.PRIME_REGISTRY }}
prime-username: ${{ env.PRIME_REGISTRY_USERNAME }}
prime-password: ${{ env.PRIME_REGISTRY_PASSWORD }}