commit 44e52ce2ccba5f54eae3d8719b3df1d60ca52065 Author: Luke Tainton Date: Sat Mar 19 18:20:30 2022 +0000 Initial commit diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 0000000..03c1a9f --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,8 @@ +version = 1 + +[[analyzers]] +name = "go" +enabled = true + + [analyzers.meta] + import_root = "gitlab.com/luketainton/insultgen" diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..2c32e6c --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,80 @@ +stages: +- test +- build +- upload +- release + +sast: + stage: test +include: +- template: Security/SAST.gitlab-ci.yml + +build-docker: + stage: build + only: + - tags + image: docker:19.03.12 + services: + - docker:19.03.12-dind + variables: + IMAGE_TAG: "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" + script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker build -t $CI_REGISTRY_IMAGE:latest -t $IMAGE_TAG . + - docker build -t $IMAGE_TAG -t $CI_REGISTRY_IMAGE:latest . + - docker push $IMAGE_TAG + - docker push $CI_REGISTRY_IMAGE:latest + +build-binary: + stage: build + only: + - tags + image: golang:1.17.3 + before_script: + - cd $GOPATH/src + - mkdir -p gitlab.com/$CI_PROJECT_NAMESPACE + - cd gitlab.com/$CI_PROJECT_NAMESPACE + - ln -s $CI_PROJECT_DIR + - cd $CI_PROJECT_NAME + script: + - CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin go build -o bin/insultgen-${CI_COMMIT_TAG}-darwin-amd64 + - CGO_ENABLED=0 GOARCH=arm64 GOOS=darwin go build -o bin/insultgen-${CI_COMMIT_TAG}-darwin-arm64 + - CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -o bin/insultgen-${CI_COMMIT_TAG}-linux-amd64 + - CGO_ENABLED=0 GOARCH=amd64 GOOS=windows go build -o bin/insultgen-${CI_COMMIT_TAG}-win-amd64.exe + - CGO_ENABLED=0 GOARCH=386 GOOS=windows go build -o bin/insultgen-${CI_COMMIT_TAG}-win-x86.exe + artifacts: + paths: + - bin/ + +upload: + stage: upload + image: curlimages/curl:latest + rules: + - if: "$CI_COMMIT_TAG" + dependencies: + - build-binary + script: + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/insultgen-${CI_COMMIT_TAG}-darwin-amd64 + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-darwin-amd64"' + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/insultgen-${CI_COMMIT_TAG}-darwin-arm64 + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-darwin-arm64"' + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/insultgen-${CI_COMMIT_TAG}-linux-amd64 + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-linux-amd64"' + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/insultgen-${CI_COMMIT_TAG}-win-amd64.exe + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-win-amd64.exe"' + - 'curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file bin/insultgen-${CI_COMMIT_TAG}-win-x86.exe + "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-win-x86.exe"' + +release: + stage: release + image: registry.gitlab.com/gitlab-org/release-cli:v0.4.0 + rules: + - if: "$CI_COMMIT_TAG" + script: + - | + release-cli create --name "$CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \ + --assets-link "{\"name\":\"insultgen-${CI_COMMIT_TAG}-darwin-amd64\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-darwin-amd64\"}" \ + --assets-link "{\"name\":\"insultgen-${CI_COMMIT_TAG}-darwin-arm64\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-darwin-arm64\"}" \ + --assets-link "{\"name\":\"insultgen-${CI_COMMIT_TAG}-linux-amd64\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-linux-amd64\"}" \ + --assets-link "{\"name\":\"insultgen-${CI_COMMIT_TAG}-win-amd64.exe\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-win-amd64.exe\"}" \ + --assets-link "{\"name\":\"insultgen-${CI_COMMIT_TAG}-win-x86.exe\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/insultgen/${CI_COMMIT_TAG}/insultgen-${CI_COMMIT_TAG}-win-x86.exe\"}" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..287a642 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +FROM golang:1.17-alpine as build +WORKDIR /go/src/app +COPY . /go/src/app +RUN CGO_ENABLED=0 go build -o /go/bin/app + +FROM gcr.io/distroless/base-debian11 +LABEL maintainer="Luke Tainton " +LABEL org.opencontainers.image.source="https://gitlab.com/luketainton/insultgen" +COPY --from=build /go/bin/app / +CMD ["/app"] diff --git a/Main.go b/Main.go new file mode 100644 index 0000000..889b505 --- /dev/null +++ b/Main.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" + "io/ioutil" + "net/http" + "os" +) + +func main() { + var insultURL string = "https://evilinsult.com/generate_insult.php" + + resp, err := http.Get(insultURL) + if err != nil { + fmt.Println("FATAL: Cannot get insult.") + os.Exit(1) + } + body, _ := ioutil.ReadAll(resp.Body) + fmt.Println(string(body)) + +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..a0f354a --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module insultgen + +go 1.17 diff --git a/insultgen b/insultgen new file mode 100755 index 0000000..ff83b3c Binary files /dev/null and b/insultgen differ