Skip to content

Adds unit tests for fetch and upload for OCI #426

Adds unit tests for fetch and upload for OCI

Adds unit tests for fetch and upload for OCI #426

Workflow file for this run

permissions:
contents: read
on:
pull_request:
branches: [main]
push:
branches: ["**"]
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: "Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)"
required: false
default: false
name: build-test-publish
jobs:
go:
runs-on: ubuntu-latest
if: github.repository_owner == 'openshift-pipelines' # do not run this elsewhere
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: "1.22"
- run: go env
- name: go build
run: go build -v ./...
- uses: alexellis/setup-arkade@v3
- uses: alexellis/arkade-get@master
with:
golangci-lint: latest
- name: Lint Go Code
run: |
make lint-go
- name: Set up localhost in /etc/hosts
run: echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts
- name: Run Unit tests
run: |
make unit-tests
e2e:
name: e2e tests
runs-on: ubuntu-latest
env:
KUBECONFIG: /home/runner/.kube/config.kind
if: github.repository_owner == 'openshift-pipelines' # do not run this elsewhere
needs: [go]
steps:
- uses: ko-build/[email protected]
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: azure/setup-helm@v4
- uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: "1.22"
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }}
with:
limit-access-to-actor: true
detached: true
- name: Install kind
run: |
set -euxfo pipefail
./hack/kind-install.sh
- uses: tektoncd/actions/setup-tektoncd@main
with:
pipeline_version: v0.61.1
feature_flags: '{"enable-step-actions": "true"}'
setup_registry: false
- name: tests
run: |
set -euxfo pipefail
REGISTRY=registry.registry.svc.cluster.local:32222
KO_DOCKER_REPO=localhost:5000/tekton-caches
IMAGE_REF="${KO_DOCKER_REPO}/cache:$(git rev-parse HEAD | tr -d '\n')"
make e2e
ko publish --sbom=none --base-import-paths --tags=$(git rev-parse HEAD) ./cmd/cache
sed "s%image:.*%image: ${IMAGE_REF}%g" tekton/cache-fetch.yaml | tee | kubectl apply -f -
sed "s%image:.*%image: ${IMAGE_REF}%g" tekton/cache-upload.yaml | tee | kubectl apply -f -
kubectl apply -f tests/ -f examples/
tkn task start cache-fetch-go -p gitURL=https://github.com/vdemeester/go-helloworld-app \
-p gitRevision=main \
-p cachePatterns="**.go,**go.sum" \
-p cacheURIBase=oci://${REGISTRY}/cache/go \
-w name=source,emptyDir= -w name=gocache,emptyDir= \
-w name=gomodcache,emptyDir= --showlog
tkn task start cache-upload-go -p gitURL=https://github.com/vdemeester/go-helloworld-app -p gitRevision=main -p cachePatterns="**.go,**go.sum" -p cacheURIBase=oci://${REGISTRY}/cache/go -w name=source,emptyDir= -w name=gocache,emptyDir= -w name=gomodcache,emptyDir= --showlog
tkn task start cache-fetch-go -p gitURL=https://github.com/vdemeester/go-helloworld-app -p gitRevision=main -p cachePatterns="**.go,**go.sum" -p cacheURIBase=oci://${REGISTRY}/cache/go -w name=source,emptyDir= -w name=gocache,emptyDir= -w name=gomodcache,emptyDir= --showlog
tkn task start cache-upload-go -p gitURL=https://github.com/vdemeester/go-helloworld-app -p gitRevision=main -p cachePatterns="" -p cacheURIBase=oci://${REGISTRY}/cache/go -w name=source,emptyDir= -w name=gocache,emptyDir= -w name=gomodcache,emptyDir= --showlog
tkn task start cache-fetch-go -p gitURL=https://github.com/vdemeester/go-helloworld-app -p gitRevision=main -p cachePatterns="" -p cacheURIBase=oci://${REGISTRY}/cache/go -w name=source,emptyDir= -w name=gocache,emptyDir= -w name=gomodcache,emptyDir= --showlog
tkn taskrun list
kubectl get taskrun -o yaml
publish:
name: publish latest
runs-on: ubuntu-latest
if: github.repository_owner == 'openshift-pipelines' # do not run this elsewhere
needs: [go]
# https://docs.github.com/en/actions/reference/authentication-in-a-workflow
permissions: write-all
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: "1.22"
- id: meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # 5.5.1
with:
images: ghcr.io/${{ github.repository }}/cache
flavor: |
latest=${{ github.event_name != 'pull_request' }}
- uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # 3.3.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: ko-build/[email protected]
- run: |
ko publish --push=${{ github.event_name != 'pull_request' }} --base-import-paths ./cmd/cache --platform linux/arm64,linux/amd64