# Jenkinsfile Golang ```yaml pipeline { agent any stages { stage('Checkout') { steps { // Checkout your source code from your version control system (e.g., Git) checkout scm } } stage('Build Go Application') { steps { script { // Install Go if necessary (assuming Go is not installed globally on Jenkins) def goHome = tool name: 'Go', type: 'Go' def goExecutable = "${goHome}/bin/go" sh "export GOPATH=${WORKSPACE}/go" sh "export PATH=${goHome}/bin:${WORKSPACE}/go/bin:$PATH" // Build the Go application sh "${goExecutable} build -o myapp" } } } stage('Build Docker Image') { steps { script { // Build the Docker image using the Dockerfile in your project directory def dockerImage = docker.build("my-go-app:${env.BUILD_NUMBER}", "./") // Push the Docker image to a Docker registry (optional) dockerImage.push() } } } } } ``` ``` pipeline { agent any environment { DOCKER_REGISTRY_CREDENTIALS = credentials('docker-hub-credentials') // Your Docker Hub credentials ID DOCKER_IMAGE_NAME = 'my-go-app' DOCKER_IMAGE_TAG = "${env.BUILD_NUMBER}" } stages { stage('Checkout') { steps { // Checkout your source code from your version control system (e.g., Git) checkout scm } } stage('Build Go Application') { steps { script { // Build the Go application sh "go build -o myapp" } } } stage('Build and Push Docker Image') { steps { script { // Build the Docker image def dockerImage = docker.build("${DOCKER_IMAGE_NAME}:${DOCKER_IMAGE_TAG}", ".") // Log in to the Docker registry (replace 'docker.io' with your registry URL) docker.withRegistry('https://index.docker.io/v1/', DOCKER_REGISTRY_CREDENTIALS) { // Push the Docker image to the registry dockerImage.push() } } } } } } ``` ``` pipeline { agent any stages { stage('Checkout') { steps { // Check out the source code from GitLab git( url: 'https://gitlab.com/yourusername/your-repo.git', credentialsId: 'your-gitlab-credentials', // You need to set up Jenkins credentials for GitLab access branch: 'main', // Specify the branch you want to build changelog: true ) } } stage('Build') { steps { // Add your build and testing steps here } } stage('Deploy') { steps { // Add deployment steps here } } } } ``` new ``` pipeline { agent any stages { stage('Checkout') { steps { checkout( scm: [ $class: 'GitSCM', branches: [[name: 'main']], // Specify the branch you want to build userRemoteConfigs: [[ url: 'https://gitlab.com/yourusername/your-repo.git', // Replace with your GitLab repository URL credentialsId: 'your-gitlab-credentials' // Replace with your Jenkins GitLab credentials ]] ] ) } } stage('Build') { steps { // Add your build and testing steps here } } stage('Deploy') { steps { // Add deployment steps here } } } } ``` ### GO proxy ``` pipeline { agent any environment { GOPROXY = 'https://your-goproxy-server.com' // Replace with your Go proxy server URL GOPRIVATE = 'your-private-domain.com' // Replace with your private domain // Replace with your proxy server username and password PROXY_USERNAME = 'your-username' PROXY_PASSWORD = 'your-password' } stages { stage('Checkout') { steps { checkout scm } } stage('Build') { steps { script { // Configure Go proxy with authentication sh """ export GOPROXY=${GOPROXY} export GOPRIVATE=${GOPRIVATE} export GONOPROXY=${GOPRIVATE} export GOPROXY_USERNAME=${PROXY_USERNAME} export GOPROXY_PASSWORD=${PROXY_PASSWORD} go build """ } } } // Add more stages as needed } } ``` spesific branch ``` pipeline { agent any environment { BRANCH_NAME = 'your-specific-branch' // Replace with the branch name you want to build } stages { stage('Checkout') { steps { script { // Check out the code from the specific branch checkout([$class: 'GitSCM', branches: [[name: "refs/heads/${BRANCH_NAME}"]]]) } } } stage('Build') { steps { // Add your build and testing steps here } } stage('Deploy') { steps { // Add deployment steps here } } } } ``` ``` pipeline { agent any environment { BRANCHES_TO_BUILD = ['main', 'feature-1', 'feature-2'] // Replace with the list of branch names you want to build } stages { stage('Build') { steps { script { for (branch in env.BRANCHES_TO_BUILD) { // Check out the code from the specified branch checkout([$class: 'GitSCM', branches: [[name: "refs/heads/${branch}"]]]) // Add your build and testing steps here echo "Building and testing branch ${branch}" } } } } stage('Deploy') { steps { script { for (branch in env.BRANCHES_TO_BUILD) { // Add deployment steps here echo "Deploying branch ${branch}" } } } } } } ``` https://github.com/felipecruz91/k8s-postgresql-persistent-volume.git ``` pipeline { agent any environment { GITLAB_WEBHOOK_SECRET = credentials('your-gitlab-secret-id') // Your GitLab webhook secret credential ID } stages { stage('Checkout') { steps { // Check out the source code from GitLab git( url: 'https://gitlab.com/yourusername/your-repo.git', // Replace with your GitLab repository URL credentialsId: 'your-gitlab-credentials', // Replace with your Jenkins GitLab credentials ID branch: 'main', // Specify the branch you want to build changelog: true ) } } stage('Build') { steps { // Add your build and testing steps here } } stage('Deploy') { steps { // Add deployment steps here } } } post { success { // This block runs when the pipeline succeeds echo 'Pipeline succeeded!' } failure { // This block runs when the pipeline fails echo 'Pipeline failed!' } } // Define triggers for GitLab events triggers { // Trigger the pipeline on push events to the specified branches gitlab(triggerOnPush: true, branchFilterType: 'NameBasedFilter', branchFilter: 'main feature/*') // Trigger the pipeline on merge request events gitlab(triggerOnMergeRequest: true) // You can add more triggers for other GitLab events as needed } } ``` ### WEBHOOK ``` pipeline { agent any environment { GITLAB_WEBHOOK_SECRET = credentials('your-gitlab-secret-id') // Your GitLab webhook secret credential ID } stages { stage('Checkout') { steps { // Check out the source code from GitLab checkout( scm: [ $class: 'GitSCM', branches: [[name: 'main']], // Specify the branch you want to build userRemoteConfigs: [[ url: 'https://gitlab.com/yourusername/your-repo.git', // Replace with your GitLab repository URL credentialsId: 'your-gitlab-credentials' // Replace with your Jenkins GitLab credentials ID ]] ] ) } } stage('Build') { steps { // Add your build and testing steps here } } stage('Deploy') { steps { // Add deployment steps here } } } post { success { // This block runs when the pipeline succeeds echo 'Pipeline succeeded!' } failure { // This block runs when the pipeline fails echo 'Pipeline failed!' } } // Define triggers for GitLab push events triggers { gitlabPush(token: env.GITLAB_WEBHOOK_SECRET) } } ``` ``` pipeline { agent any stages { stage('Checkout') { steps { // Check out the Git repository script { checkout([$class: 'GitSCM', branches: [[name: '*/master']], // Specify the branch you want to build doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'PruneStaleBranch'], [$class: 'CleanCheckout'], [$class: 'LocalBranch', localBranch: 'master']], userRemoteConfigs: [[ url: 'https://gitlab.example.com/your/repo.git', // GitLab repository URL credentialsId: 'your-credentials-id' // Jenkins credentials with Git access ]] ]) } } } stage('Build') { steps { // Add your build steps here sh 'echo "Building..."' } } } } // Set up a webhook trigger job node { try { // Register the webhook with a specific path step([$class: 'GenericWebhookRequest', expectVerified: false, // Set to true for production token: 'YOUR_WEBHOOK_SECRET', // Use a secret shared with GitLab status: 'NOT_BUILT', // Only trigger when the job is not already running url: '/webhook-trigger' // Define the endpoint path ]) } catch (e) { // Handle any errors here currentBuild.result = 'FAILURE' error('Webhook trigger failed: ' + e) } } // Define a specific job to be triggered by the webhook job('webhook-triggered-job') { steps { // Add steps for the triggered job echo "This job was triggered by a GitLab webhook." } } ```