name: e2e-bootstrap on: workflow_dispatch: push: branches: [ main, release-* ] pull_request: branches: [ main, release-* ] permissions: contents: read jobs: e2e-boostrap-github: runs-on: ubuntu-latest if: (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) && github.actor != 'dependabot[bot]' steps: - name: Checkout uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 - name: Setup Go uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: 1.20.x cache-dependency-path: | **/go.sum **/go.mod - name: Setup Kubernetes uses: helm/kind-action@d8ccf8fb623ce1bb360ae2f45f323d9d5c5e9f00 # v1.5.0 with: version: v0.17.0 cluster_name: kind # The versions below should target the newest Kubernetes version # Keep this up-to-date with https://endoflife.date/kubernetes node_image: kindest/node:v1.26.0 kubectl_version: v1.26.2 - name: Setup Kustomize uses: fluxcd/pkg/actions/kustomize@main - name: Build run: | make cmd/flux/.manifests.done go build -o /tmp/flux ./cmd/flux - name: Set outputs id: vars run: | REPOSITORY_NAME=${{ github.event.repository.name }} BRANCH_NAME=${GITHUB_REF##*/} COMMIT_SHA=$(git rev-parse HEAD) PSEUDO_RAND_SUFFIX=$(echo "${BRANCH_NAME}-${COMMIT_SHA}" | shasum | awk '{print $1}') TEST_REPO_NAME="${REPOSITORY_NAME}-${PSEUDO_RAND_SUFFIX}" echo "test_repo_name=$TEST_REPO_NAME" >> $GITHUB_OUTPUT - name: bootstrap init run: | /tmp/flux bootstrap github --manifests ./manifests/install/ \ --owner=fluxcd-testing \ --repository=${{ steps.vars.outputs.test_repo_name }} \ --branch=main \ --path=test-cluster \ --team=team-z env: GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }} - name: bootstrap no-op run: | /tmp/flux bootstrap github --manifests ./manifests/install/ \ --owner=fluxcd-testing \ --repository=${{ steps.vars.outputs.test_repo_name }} \ --branch=main \ --path=test-cluster \ --team=team-z env: GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }} - name: bootstrap customize run: | make setup-bootstrap-patch /tmp/flux bootstrap github --manifests ./manifests/install/ \ --owner=fluxcd-testing \ --repository=${{ steps.vars.outputs.test_repo_name }} \ --branch=main \ --path=test-cluster \ --team=team-z if [ $(kubectl get deployments.apps source-controller -o jsonpath='{.spec.template.spec.securityContext.runAsUser}') != "10000" ]; then echo "Bootstrap not customized as controller is not running as user 10000" && exit 1 fi env: GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }} GITHUB_REPO_NAME: ${{ steps.vars.outputs.test_repo_name }} GITHUB_ORG_NAME: fluxcd-testing - name: uninstall run: | /tmp/flux uninstall -s --keep-namespace kubectl delete ns flux-system --timeout=10m --wait=true - name: test image automation run: | make setup-image-automation /tmp/flux bootstrap github --manifests ./manifests/install/ \ --owner=fluxcd-testing \ --repository=${{ steps.vars.outputs.test_repo_name }} \ --branch=main \ --path=test-cluster \ --read-write-key /tmp/flux reconcile image repository podinfo /tmp/flux reconcile image update flux-system /tmp/flux get images all retries=10 count=0 ok=false until ${ok}; do /tmp/flux get image update flux-system | grep 'commit' && ok=true || ok=false count=$(($count + 1)) if [[ ${count} -eq ${retries} ]]; then echo "No more retries left" exit 1 fi sleep 6 /tmp/flux reconcile image update flux-system done env: GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }} GITHUB_REPO_NAME: ${{ steps.vars.outputs.test_repo_name }} GITHUB_ORG_NAME: fluxcd-testing - name: delete repository if: ${{ always() }} run: | curl \ -X DELETE \ -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: token ${GITHUB_TOKEN}" \ --fail --silent \ https://api.github.com/repos/fluxcd-testing/${{ steps.vars.outputs.test_repo_name }} env: GITHUB_TOKEN: ${{ secrets.GITPROVIDER_BOT_TOKEN }} - name: Debug failure if: failure() run: | kubectl -n flux-system get all kubectl -n flux-system logs deploy/source-controller kubectl -n flux-system logs deploy/kustomize-controller