Skip to content

Refactor collector package tests (#288) #514

Refactor collector package tests (#288)

Refactor collector package tests (#288) #514

Workflow file for this run

name: CI
concurrency: ci-${{ github.ref }}
on:
push:
tags-ignore:
- "*"
branches:
- "main"
pull_request:
release:
types: [published]
workflow_dispatch:
env:
PACKAGE_NAME: trento-agent
OBS_USER: ${{ secrets.OBS_USER }}
OBS_PASS: ${{ secrets.OBS_PASS }}
OBS_PROJECT: ${{ secrets.OBS_PROJECT }}
TARGET_PROJECT: ${{ secrets.TARGET_PROJECT }}
FOLDER: packaging/suse
REPOSITORY: ${{ github.repository }}
jobs:
generate-docs:
runs-on: ubuntu-20.04
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
steps:
- name: trigger docs update in sum.golang.org and pkg.go.dev
uses: essentialkaos/godoc-action@v1
static-analysis:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v3
with:
go-version: 1.18
- uses: actions/cache@v3.3.2
id: go-cache
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: go vet check
run: make vet-check
- name: go fmt check
run: make fmt-check
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.48.0
skip-cache: true
args: "--timeout=3m"
test:
runs-on: ubuntu-20.04
env:
RABBITMQ_URL: amqp://guest:guest@localhost:5672
services:
rabbitmq:
image: rabbitmq
env:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
ports:
- 5672:5672
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v3
with:
go-version: 1.18
- uses: actions/cache@v3.3.2
id: go-cache
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: test
run: make test-coverage
- name: install goveralls
run: go install github.com/mattn/goveralls@latest
- name: send coverage
env:
COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: goveralls -coverprofile=covprofile -service=github
test-plugins:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v3
with:
go-version: 1.18
- uses: actions/cache@v3.3.2
id: go-cache
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: build dummy plugin
run: |
mkdir /tmp/plugins
go build -o /tmp/plugins/dummy ./plugin_examples/dummy.go
- name: build trento binary
run: make build
- name: run facts list command
run: |
./trento-agent facts list --plugins-folder /tmp/plugins 2>&1 | grep -q "dummy"
- name: run facts gather command
run: |
./trento-agent facts gather --gatherer dummy --argument 1 --plugins-folder /tmp/plugins 2>&1 | grep -q 'Name: 1'
build-static-binary:
runs-on: ubuntu-20.04
needs: [static-analysis, test, test-plugins]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-go@v3
with:
go-version: 1.18
- uses: actions/cache@v3.3.2
id: go-cache
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: build
run: make -j4 cross-compiled
- name: compress
run: |
set -x
find ./build -maxdepth 1 -mindepth 1 -type d -exec sh -c 'tar -zcf build/trento-agent-$(basename {}).tgz -C {} trento-agent -C $(pwd)/packaging/systemd trento-agent.service' \;
- uses: actions/upload-artifact@v3
with:
name: trento-binaries
path: |
build/trento-agent-amd64.tgz
build/trento-agent-arm64.tgz
build/trento-agent-ppc64le.tgz
build/trento-agent-s390x.tgz
release-rolling:
needs: [build-static-binary]
if: (github.event_name == 'push' && github.ref == 'refs/heads/main')
runs-on: ubuntu-20.04
steps:
- uses: actions/download-artifact@v3
with:
name: trento-binaries
- uses: "marvinpinto/action-automatic-releases@v1.2.1"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "rolling"
prerelease: true
title: "Cutting Edge"
files: |
trento-agent-amd64.tgz
trento-agent-arm64.tgz
trento-agent-ppc64le.tgz
trento-agent-s390x.tgz
# This job doesn't actually make release, but rather reacts to a manual one, made via the GitHub UI.
# In the future, we might want to reuse the same mechanism of the rolling ones to automate everything here as well.
release-tag:
needs: [build-static-binary]
if: github.event.release
runs-on: ubuntu-20.04
steps:
- uses: actions/download-artifact@v3
with:
name: trento-binaries
- uses: AButler/upload-release-assets@v2.0
with:
files: "trento-*"
repo-token: ${{ secrets.GITHUB_TOKEN }}
obs-commit:
needs: [static-analysis, test, test-plugins]
runs-on: ubuntu-20.04
if: github.ref == 'refs/heads/main' || github.event_name == 'release'
container:
image: ghcr.io/trento-project/continuous-delivery:main
env:
OSC_CHECKOUT_DIR: /tmp/trento-agent-package
options: -u 0:0
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: configure OSC
run: |
mkdir -p $HOME/.config/osc
cp /home/osc/.config/osc/oscrc $HOME/.config/osc
/scripts/init_osc_creds.sh
- name: prepare _service file
run: |
git config --global --add safe.directory /__w/agent/agent
VERSION=$(./hack/get_version_from_git.sh)
sed -i 's~%%REVISION%%~${{ github.sha }}~' $FOLDER/_service && \
sed -i 's~%%REPOSITORY%%~${{ github.repository }}~' $FOLDER/_service && \
sed -i 's~%%VERSION%%~'"${VERSION}"'~' $FOLDER/_service
- name: create vendor dependencies archive
# note the following tar options to strip all the things that could make the archive different without the content actually changing
# to make it easier to identify when dependencies changed
run: |
go mod vendor
tar --sort=name --owner=root:0 --group=root:0 --mtime='UTC 1970-01-01' -c vendor | gzip -n > vendor.tar.gz
- name: checkout and prepare OBS package
run: |
osc checkout $OBS_PROJECT trento-agent -o $OSC_CHECKOUT_DIR
cp $FOLDER/_service $OSC_CHECKOUT_DIR
rm -v $OSC_CHECKOUT_DIR/*.tar.gz
pushd $OSC_CHECKOUT_DIR
osc service manualrun
cp /__w/agent/agent/vendor.tar.gz .
- name: prepare trento-agent.changes file
# The .changes file is updated only in release creation. This current task should be improved
# in order to add the current rolling release notes
if: github.event_name == 'release'
run: |
git config --global --add safe.directory /__w/agent/agent
VERSION=$(./hack/get_version_from_git.sh)
TAG=$(echo $VERSION | cut -f1 -d+)
hack/gh_release_to_obs_changeset.py $REPOSITORY -a shap-staff@suse.de -t $TAG -f $OSC_CHECKOUT_DIR/trento-agent.changes
- name: commit changes into OBS
run: |
pushd $OSC_CHECKOUT_DIR
osc ar
osc commit -m "GitHub Actions automated update to reference ${{ github.sha }}"
obs-submit:
needs: obs-commit
runs-on: ubuntu-20.04
if: github.event.release
container:
image: ghcr.io/trento-project/continuous-delivery:main
options: -u 0:0
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: configure OSC
run: |
mkdir -p $HOME/.config/osc
cp /home/osc/.config/osc/oscrc $HOME/.config/osc
/scripts/init_osc_creds.sh
- name: prepare _service file
run: |
git config --global --add safe.directory /__w/agent/agent
VERSION=$(./hack/get_version_from_git.sh)
sed -i 's~%%REVISION%%~${{ github.sha }}~' $FOLDER/_service && \
sed -i 's~%%REPOSITORY%%~${{ github.repository }}~' $FOLDER/_service && \
sed -i 's~%%VERSION%%~'"${VERSION}"'~' $FOLDER/_service
- name: submit package
run: /scripts/submit.sh