From 90e83eaf624412f4a05f1136560e1ba248d067dd Mon Sep 17 00:00:00 2001 From: MassiveBox Date: Fri, 21 Jul 2023 17:01:53 +0200 Subject: [PATCH] Pipeline improvements --- Jenkinsfile | 77 --------------------------------------------- README.md | 2 +- jenkins/Jenkinsfile | 32 +++++++++++++------ 3 files changed, 23 insertions(+), 88 deletions(-) delete mode 100644 Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index 5d19417..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,77 +0,0 @@ -pipeline { - - agent any - - environment { - USER='placeholder' - PASSWORD='placeholder' - DOCKER_REGISTRY='git.massivebox.net' - BUILDER_NAME='mbuilder' - SERVICE='ecodash/ecodash' - TAG='latest' - } - - stages { - - stage('Run linter and build') { - agent { docker { image 'golang' } } - steps { - git url: 'https://git.massivebox.net/ecodash/ecodash' - sh 'curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin' - sh 'go mod tidy' - sh 'golangci-lint run' - sh 'env GOOS=linux GOARCH=amd64 go build -o app src/main/main.go' - stash includes: 'app', name: 'ecodash-x86' - sh 'env GOOS=linux GOARCH=arm go build -o app src/main/main.go' - stash includes: 'app', name: 'ecodash-arm' - stash includes: 'jenkins/Dockerfile', name: 'dockerfile' - stash includes: 'templates/**', name: 'templates' - } - } - - - stage('Build x86 container') { - steps { - unstash 'dockerfile' - unstash 'ecodash-x86' - unstash 'templates' - sh 'docker build -t $DOCKER_REGISTRY/$SERVICE:$TAG .' - } - } - - stage('Prepare buildx') { - steps { - sh """ - docker run --privileged --rm tonistiigi/binfmt --install all - - docker context create $BUILDER_NAME - docker context use $BUILDER_NAME - docker buildx create $BUILDER_NAME - docker buildx use $BUILDER_NAME - docker buildx inspect --bootstrap - """ - } - } - - stage('Build arm container') { - steps { - unstash 'dockerfile' - unstash 'ecodash-arm' - unstash 'templates' - sh 'docker buildx build --platform linux/arm64 -t $DOCKER_REGISTRY/$SERVICE:$TAG .' - } - } - - } - - post { - always { - // cleanup - sh """ - docker context rm -f $BUILDER_NAME - docker buildx use default - """ - } - } - -} diff --git a/README.md b/README.md index f3c9f66..0469ba7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 🌿 EcoDash -[![status-badge](https://woodpecker.massivebox.net/api/badges/ecodash/ecodash/status.svg)](https://woodpecker.massivebox.net/ecodash/ecodash) [![Visit our website](https://cloud.massivebox.net/api/public/dl/yEzoZyW8?inline=true)](https://ecodash.xyz) [![Support the project](https://cloud.massivebox.net/api/public/dl/dthbBylL?inline=true)](https://ecodash.xyz/contribute) +[![status-badge](https://woodpecker.massivebox.net/api/badges/ecodash/ecodash/status.svg)](https://woodpecker.massivebox.net/ecodash/ecohttpsdash) [![Visit our website](https://cloud.massivebox.net/api/public/dl/yEzoZyW8?inline=true)](https://ecodash.xyz) [![Support the project](https://cloud.massivebox.net/api/public/dl/dthbBylL?inline=true)](https://ecodash.xyz/contribute) EcoDash is a simple way to show your users how much your server consumes. It's intended as a medium of transparency, that gives your users an idea about the consumption of your machine. It's not meant to be 100% accurate. diff --git a/jenkins/Jenkinsfile b/jenkins/Jenkinsfile index c7d6982..7833d6c 100644 --- a/jenkins/Jenkinsfile +++ b/jenkins/Jenkinsfile @@ -3,12 +3,9 @@ pipeline { agent any environment { - USER='user' - PASSWORD='password' DOCKER_REGISTRY='git.massivebox.net' BUILDER_NAME='mbuilder' SERVICE='ecodash/ecodash' - TAG='latest' } stages { @@ -16,14 +13,15 @@ pipeline { stage('Run linter and build') { agent { docker { image 'golang' } } steps { - git url: 'https://git.massivebox.net/ecodash/ecodash' - //sh 'curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin' + checkout scm + sh 'curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin' sh 'go mod tidy' - //sh 'golangci-lint run' + sh 'golangci-lint run' sh 'env GOOS=linux GOARCH=amd64 go build -o app src/main/main.go' stash includes: 'app', name: 'ecodash-x86' sh 'env GOOS=linux GOARCH=arm go build -o app src/main/main.go' stash includes: 'app', name: 'ecodash-arm' + stash includes: 'jenkins/Dockerfile', name: 'dockerfile' stash includes: 'templates/**', name: 'templates' } } @@ -31,10 +29,10 @@ pipeline { stage('Build x86 container') { steps { - sh 'curl -L -o Dockerfile https://pasty.nikko.cf/UYU39i/raw' + unstash 'dockerfile' unstash 'ecodash-x86' unstash 'templates' - sh 'docker build -t $DOCKER_REGISTRY/$SERVICE:$TAG .' + sh 'docker build -t ecodash .' } } @@ -54,10 +52,23 @@ pipeline { stage('Build arm container') { steps { - sh 'curl -L -o Dockerfile https://pasty.nikko.cf/UYU39i/raw' + unstash 'dockerfile' unstash 'ecodash-arm' unstash 'templates' - sh 'docker buildx build --platform linux/arm64 -t $DOCKER_REGISTRY/$SERVICE:$TAG .' + sh 'docker buildx build --platform linux/arm64 -t ecodash .' + } + } + + stage('Publish container on tag latest') { + when { branch 'master' } + steps { + withCredentials([usernamePassword(credentialsId: 'gitea-credentials', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { + sh 'docker login -u $USER -p $PASSWORD $DOCKER_REGISTRY' + } + sh """ + docker image tag ecodash $DOCKER_REGISTRY/$SERVICE:$TAG + docker push $DOCKER_REGISTRY/$SERVICE:$TAG + """ } } @@ -74,3 +85,4 @@ pipeline { } } +