Skip to content

fixes #464 : project robot account doesnt need admin rights (#466) #715

fixes #464 : project robot account doesnt need admin rights (#466)

fixes #464 : project robot account doesnt need admin rights (#466) #715

Workflow file for this run

# This GitHub action runs your tests for each commit push and/or PR. Optionally
# you can turn it on using a cron schedule for regular testing.
#
name: Tests
on:
pull_request:
paths-ignore:
- 'README.md'
- 'docs/**'
- 'examples/**'
- 'templates/**'
push:
branches:
- main
- "release/**"
paths-ignore:
- 'README.md'
- 'docs/**'
- 'examples/**'
- 'templates/**'
# For systems with an upstream API that could drift unexpectedly (like most SaaS systems, etc.),
# we recommend testing at a regular interval not necessarily tied to code changes. This will
# ensure you are alerted to something breaking due to an API change, even if the code did not
# change.
# schedule:
# - cron: '0 13 * * *'
jobs:
# ensure the code builds...
build:
name: Build
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Set up Go
uses: actions/[email protected]
with:
go-version-file: 'go.mod'
cache: true
id: go
- name: Get dependencies
run: |
go mod download
- name: Build
run: |
go build -v .
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/[email protected]
with:
go-version-file: 'go.mod'
cache: true
- run: go generate ./...
- name: git diff
run: |
git diff --compact-summary --exit-code || \
(echo; echo "Unexpected difference in directories after code generation. Run 'go generate ./...' command and commit."; exit 1)
# run acceptance tests in a matrix with Terraform core versions
test:
name: Matrix Test
needs: build
runs-on: ubuntu-latest
env:
TF_ACC: "1"
HARBOR_URL: "http://harbor.local"
HARBOR_REPLICATION_ENDPOINT: "http://demo.harbor.com"
HARBOR_USERNAME: "admin"
HARBOR_PASSWORD: "Harbor12345"
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
# list whatever Terraform versions here you would like to support
terraform:
- '1.7.*'
- '1.8.*'
- '1.9.*'
harbor:
- '1.15.*' # harbor 2.11
- '1.14.*' # harbor 2.10
- '1.13.*' # harbor 2.9
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4
- name: Create kind cluster
uses: helm/[email protected]
with:
version: v0.21.0
node_image: kindest/node:v1.29.0
cluster_name: kind-cluster-v1.29.0
config: kind-cluster.yaml
- name: Install Nginx ingress controller
run: |
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.0/deploy/static/provider/kind/deploy.yaml
kubectl wait --namespace ingress-nginx --for=condition=ready pod --selector=app.kubernetes.io/component=controller --timeout=120s
- uses: azure/setup-helm@v4
with:
version: 'latest' # default is latest (stable)
id: install
- name: Install Harbor Helm chart
run: |
helm repo add harbor https://helm.goharbor.io
helm install my-release \
--set harborAdminPassword="$HARBOR_PASSWORD" \
--set expose.tls.enabled="false" \
--set expose.ingress.hosts.core="harbor.local" \
--set expose.ingress.hosts.notary="harbor.local" \
harbor/harbor --version ${{ matrix.harbor }}
- name: Set /etc/hosts
run: |
sudo -- sh -c "echo '127.0.0.1 harbor.local' >> /etc/hosts"
- name: Wait for harbor to be ready
run: |
attempt_counter=0
max_attempts=25 # Max wait will be 2m
while [[ "$(curl -k -s -o /dev/null -w ''%{http_code}'' $HARBOR_URL/api/v2.0/configurations -u $HARBOR_USERNAME:$HARBOR_PASSWORD)" != "200" ]]; do
if [ ${attempt_counter} -eq ${max_attempts} ];then
echo "Max attempts reached"
kubectl get pods -A
curl -v $HARBOR_URL
exit 1
fi
printf '.'
attempt_counter=$(($attempt_counter+1))
sleep 5
done
sleep 30
- name: Set up Go
uses: actions/[email protected]
with:
go-version-file: 'go.mod'
cache: true
id: go
- uses: hashicorp/setup-terraform@v3
with:
terraform_version: ${{ matrix.terraform }}
terraform_wrapper: false
- name: Get dependencies
run: |
go mod download
- name: TF acceptance tests
timeout-minutes: 10
run: |
go test -v -cover -timeout 30m ./provider/