mirror of
https://github.com/fluxcd/flux2.git
synced 2026-02-09 09:17:27 +00:00
Using the directory cmd/flux/manifests as a prerequisite causes a
problem: if the script that creates the files within fails, the next
invocation of make will see the directory and assume it
succeeded. Since the executable expects certain files to be present,
but they are not explicit prerequisites of the recipe for building the
binary, this results in a successful build but a broken `flux`
executable.
Instead, depend on a file that's explicitly updated when the script
has succeeded, and which itself depends on the inputs.
A couple of the CI workflows run
make cmd/flux/manifests
before doing other things, presumably as a way to avoid running the
whole test suite in a CI pipeline for some purpose other than testing,
so these needed changing as well.
Signed-off-by: Michael Bridgen <michael@weave.works>
103 lines
3.6 KiB
YAML
103 lines
3.6 KiB
YAML
name: bootstrap
|
|
|
|
on:
|
|
push:
|
|
branches: [ main ]
|
|
pull_request:
|
|
branches: [ main ]
|
|
|
|
jobs:
|
|
github:
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
- name: Restore Go cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go1.16-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go1.16-
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: 1.16.x
|
|
- name: Setup Kubernetes
|
|
uses: engineerd/setup-kind@v0.5.0
|
|
with:
|
|
version: v0.11.1
|
|
image: kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6
|
|
- 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 "::set-output name=test_repo_name::$TEST_REPO_NAME"
|
|
- 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: libgit2
|
|
run: |
|
|
/tmp/flux create source git test-libgit2 \
|
|
--url=ssh://git@github.com/fluxcd-testing/${{ steps.vars.outputs.test_repo_name }} \
|
|
--git-implementation=libgit2 \
|
|
--secret-ref=flux-system \
|
|
--branch=main
|
|
- name: uninstall
|
|
run: |
|
|
/tmp/flux uninstall -s --keep-namespace
|
|
kubectl delete ns flux-system --timeout=10m --wait=true
|
|
- name: bootstrap reinstall
|
|
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: delete repository
|
|
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
|