Rework of the actions.
Some checks failed
G'Agent Scan, Build, and Test / scan (push) Failing after 29s
G'Agent Scan, Build, and Test / build_simple (push) Has been skipped
G'Agent Scan, Build, and Test / test_simple (push) Has been skipped
G'Agent Scan, Build, and Test / build_image (push) Has been skipped

This commit is contained in:
James Wells 2024-09-15 19:09:07 -07:00
parent f2b2cc705c
commit 9e167cdefe
Signed by: jwells
GPG key ID: 73196D10B8E65666
3 changed files with 72 additions and 28 deletions

View file

@ -1,5 +1,14 @@
name: G'Agent Scan, Build, and Test name: G'Agent Scan, Build, and Test
# on: [push] on:
push:
branches:
- main
- releases/**
tags:
- v*
env:
SEMVAR: 0.0.11
jobs: jobs:
scan: scan:
runs-on: docker runs-on: docker
@ -8,26 +17,56 @@ jobs:
steps: steps:
- run: apk add --no-cache nodejs npm - run: apk add --no-cache nodejs npm
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
- run: curl -sfL https://raw.githubusercontent.com/securego/gosec/master/install.sh | sh -s -- -b /usr/local/bin - uses: actions/cache@v4
- run: /usr/local/bin/trivy fs --no-progress --severity CRITICAL --exit-code 1 . with:
path: .cache/trivy
key: tmp.woDBBj4Baw
- run: /usr/local/bin/trivy fs --no-progress --severity CRITICAL --cache-dir .cache/trivy --exit-code 1 .
- run: /usr/local/bin/gosec -quiet ./... - run: /usr/local/bin/gosec -quiet ./...
build: build_simple:
needs: scan needs: scan
runs-on: docker runs-on: docker
container: container:
image: dragonheim/golang:latest image: dragonheim/golang:latest
steps: steps:
- run: apk add --no-cache zeromq-dev build-base git - run: apk add --no-cache zeromq-dev nodejs npm
- run: apk add --no-cache nodejs npm
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- run: go build -o gagent cmd/gagent/main.go - run: go build -o test_artifact cmd/hello/main.go
- run: ./gagent --version - run: ./test_artifact --version
- uses: actions/upload-artifact@v3 - uses: actions/upload-artifact@v3
with: with:
name: gagent name: test_artifact
path: gagent path: test_artifact
test_simple:
needs: build_simple
runs-on: docker
container:
image: dragonheim/golang:latest
steps:
- run: apk add --no-cache nodejs npm
- uses: actions/download-artifact@v3
with:
name: test_artifact
- run: chmod a+x test_artifact
- run: ./test_artifact --version
build_image:
needs: test_simple
runs-on: docker
container:
image: dragonheim/golang:latest
steps:
- run: apk add --no-cache zeromq-dev nodejs npm
- uses: actions/checkout@v4
- run: echo "${{ secrets.DOCKER_LOGIN }}" | docker login -u dragonheim2024 --password-stdin
- run: docker buildx build --push -t dragonheim/gagent:test -f assets/docker/Dockerfile --build-arg SEMVER=${{ env.SEMVAR }} .

View file

@ -5,7 +5,7 @@
[![Go Report Card](https://goreportcard.com/badge/github.com/dragonheim/gagent)](https://goreportcard.com/report/github.com/dragonheim/gagent) [![Go Report Card](https://goreportcard.com/badge/github.com/dragonheim/gagent)](https://goreportcard.com/report/github.com/dragonheim/gagent)
[![Docker Pulls](https://img.shields.io/docker/pulls/dragonheim/gagent)](https://hub.docker.com/r/dragonheim/gagent/tags?page=1&ordering=last_updated) [![Docker Pulls](https://img.shields.io/docker/pulls/dragonheim/gagent)](https://hub.docker.com/r/dragonheim/gagent/tags?page=1&ordering=last_updated)
A Golang based mobile agent system loosely inspired by the [Agent Tcl / D'Agents](http://www.cs.dartmouth.edu/~dfk/agents/) system created by Robert S. Gray of Dartmouth college. A Golang based mobile agent system loosely inspired by the [Agent Tcl / D'Agents](https://digitalcommons.dartmouth.edu/dissertations/62/) system created by Robert S. Gray of Dartmouth college.
Please note that this program is mostly meant to be used as a tool for me to learn software development in Go, and is not meant to be used in production environments. Please note that this program is mostly meant to be used as a tool for me to learn software development in Go, and is not meant to be used in production environments.

View file

@ -37,16 +37,17 @@ import (
/* /*
* Exit Codes * Exit Codes
* 0 Success * 0 Success
* 1 Configuration file is missing or unreadable * 1 Environment variable parsing failed
* 2 Setup failed * 2 Configuration file is missing or unreadable
* 3 Invalid mode of operation * 3 Setup failed
* 4 Agent file is missing or unreadable * 4 Invalid mode of operation
* 5 Agent is missing tags * 5 Agent file is missing or unreadable
* 6 No routers defined * 6 Agent is missing tags
* 7 No workers defined * 7 No routers defined
* 8 Agent not defined * 8 No workers defined
* 9 Agent hints / tags not defined * 9 Agent not defined
* 10 Router not connected * 10 Agent hints / tags not defined
* 11 Router not connected
*/ */
var environment struct { var environment struct {
@ -80,7 +81,7 @@ func main() {
if len(config.Routers) == 0 { if len(config.Routers) == 0 {
log.Printf("[ERROR] No routers defined.\n") log.Printf("[ERROR] No routers defined.\n")
os.Exit(6) os.Exit(7)
} }
wg.Add(1) wg.Add(1)
@ -116,7 +117,7 @@ func main() {
default: default:
log.Printf("[ERROR] Unknown operating mode, exiting.\n") log.Printf("[ERROR] Unknown operating mode, exiting.\n")
os.Exit(3) os.Exit(4)
} }
wg.Wait() wg.Wait()
@ -132,7 +133,11 @@ func init() {
versioninfo.AddFlag(nil) versioninfo.AddFlag(nil)
flag.Parse() flag.Parse()
cfg := environment cfg := environment
env.Parse(&cfg) err := env.Parse(&cfg)
if err != nil {
log.Printf("[ERROR] Failed to parse environment variables: %s\n", err)
os.Exit(1)
}
filter := &logutils.LevelFilter{ filter := &logutils.LevelFilter{
Levels: []logutils.LogLevel{"DEBUG", "INFO", "WARN", "ERROR"}, Levels: []logutils.LogLevel{"DEBUG", "INFO", "WARN", "ERROR"},
@ -251,10 +256,10 @@ func init() {
config.File = opts["--config"].(string) config.File = opts["--config"].(string)
} }
err := hclsimple.DecodeFile(config.File, nil, &config) err = hclsimple.DecodeFile(config.File, nil, &config)
if err != nil && opts["setup"] == false { if err != nil && opts["setup"] == false {
log.Printf("[ERROR] Failed to load configuration file: %s.\n", config.File) log.Printf("[ERROR] Failed to load configuration file: %s.\n", config.File)
os.Exit(1) os.Exit(2)
} }
/* /*