“How to Install Ruby on Rails (RoR) on Debian 10”与“How to Setup Jenkins Build Agents on Kubernetes Pods”:页面之间的差异

来自linuxsa wiki
(页面间差异)
跳转到导航 跳转到搜索
Evan留言 | 贡献
 
Evan留言 | 贡献
 
第1行: 第1行:
[[category:devops]] [[category:jenkins]] 


=ins=
=trouble=  
[https://ruby-china.org/wiki/install_ruby_guide ruby-china.org 如何快速正确的安装 Ruby, Rails 运行环境]
 
https://guides.rubyonrails.org/getting_started.html
 
https://ruby-china.github.io/rails-guides/getting_started.html
 
[https://clwy.cn/guide/pages/rails-v5-getting-started#section4 Rails 入门]
 
 
[https://www.runoob.com/ruby/ruby-tutorial.html Ruby 教程]


== Jenkinsfile==
<pre>
<pre>
pipeline {
  agent {
    kubernetes {
      cloud 'Kubernetes'
      yaml '''
        apiVersion: v1
        kind: Pod
        spec:
          containers:
          - name: jnlp
            image: 'registry.cn-hangzhou.aliyuncs.com/evan886/my_k8s_containers:inbound-agentv2024'
            args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
          - name: maven
            image: registry.cn-hangzhou.aliyuncs.com/evan886/my_k8s_containers:maven3.2.3-jdk-8
            command:
            - cat
            tty: true
           
          - name: docker
            //image: m.daocloud.io/docker.io/library/docker:latest
            image: registry.cn-beijing.aliyuncs.com/citools/docker:19.03.9-git
            command:
            - cat
            tty: true
            volumeMounts:
            - mountPath: "/var/run/docker.sock"
              name: sock
          - name: kubectl
            image: m.daocloud.io/docker.io/bitnami/kubectl:1.27.4
            command:
            - cat
            tty: true
            securityContext:
              runAsUser: 0
          volumes:
          - name: sock
            hostPath:
              path: "/var/run/docker.sock"
        '''
    }
  }
  environment {
    gitlab_repo_url = 'http://192.168.10.103/kubernetes/java-web-demo.git'
    gitlab_credentials_id = '42c79e35-fc3e-4067-8bbf-a5e3cc0669a8'
    harbor_registry = '192.168.10.104'
    harbor_credentials_id = 'HARBOR_ACCOUNT'
    harbor_image = '${harbor_registry}/java-web-demo/web'
    k8s_kubeconfig_id='4491d2aa-375a-459b-af0b-1278e70c6d31'
    mail_notification_recipients = '112155@qq.com,zh9@163.com'
  }
  parameters {
      gitParameter branch: '', branchFilter: '.*', defaultValue: 'dev', description: '请选择发布的分支名', name: 'Branch', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'GitParameterDefinition'
  }
  stages {
    stage('拉取代码') {
      steps {
        checkout scmGit(branches: [[name: "${params.Branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${gitlab_credentials_id}", url: "${gitlab_repo_url}"]])
      }
    }
    stage('代码编译') {
      steps {
          container('maven') {
            sh """
              # 配置阿里云Maven仓库,提高依赖文件下载速度
              sed -i "s#<mirrors>#<mirrors>\
              <mirror>\
                <id>aliyunmaven</id>\
                <url>https://maven.aliyun.com/repository/public</url>\
                <mirrorOf>*</mirrorOf>\
              </mirror>#" /usr/share/maven/conf/settings.xml


              mvn clean package
            """
          }
      }
    }
    stage('构建镜像') {
      steps {
          container('docker') {
            withCredentials([usernamePassword(credentialsId: "${harbor_credentials_id}", passwordVariable: 'password', usernameVariable: 'username')]) {
              sh """
                  docker version
                  image=${harbor_image}:${BUILD_NUMBER}  # 完整镜像地址
                  docker build -t \${image} .  # 根据当前目录Dockerfile文件构建镜像
                  //docker login -u ${username} -p '${password}' ${harbor_registry}  # 推送镜像之前先登录
                  //docker push \${image}  # 推送镜像到Harbor镜像仓库
              """
            }
          }
      }
    }


ubuntu 18


apt-get install -y nodejs
</pre>




## Run `sudo apt-get install -y nodejs` to install Node.js 14.x and npm
## You may also need development tools to build native addons:
    sudo apt-get install gcc g++ make
## To install the Yarn package manager, run:
    curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
    echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
    sudo apt-get update && sudo apt-get install yarn


==
<pre>


failed to set up watcher on kubernetes 
web-pipeline-demo-6-17h0h-lrwnf-8l4w5’ is offline


今天的书写少一行  参考了去年的书搞定
办法  添加多 cloud 'Kubernetes' 这一行 Credentials


npm install --global yarn
pipeline {
  agent {
    kubernetes {
      cloud 'Kubernetes'
      yaml '''
        apiVersion: v1
        kind: Pod
        metadata:
          labels:
            app: jenkins-slave
        spec:
          containers:
          - name: jnlp
            image: 'registry.cn-hangzhou.aliyuncs.com/evan886/my_k8s_containers:inbound-agentv2024'
            args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
        '''
    }
  }


sudo apt install yarn
    stages {
        stage('Main') {
            steps {
                echo 'HI evan'
                sh 'hostname'
            }
        }
    }
}


sudo apt-get install ruby-dev zlib1g-dev liblzma-dev


gem install execjs
</pre>
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
sudo gem install bundler #加多了这个 看了 ruby-china的教程 加上升级了系统 终于跑起来了
sudo  gem install rails


rails new blog
== 问题 log==
Webpacker successfully installed 🎉 🍰


cd blog/
<pre>
 
docker version
bin/rails server
Client: Docker Engine - Community
 
Version:           19.03.9
evan@myxps:~/blog$ bin/rails server
API version:      1.40
=> Booting Puma
Go version:       go1.13.10
=> Rails 6.1.4.1 application starting in development
  Git commit:       9d988398e7
=> Run `bin/rails server --help` for more startup options
  Built:             Fri May 15 00:22:47 2020
Puma starting in single mode...
OS/Arch:           linux/amd64
* Puma version: 5.5.0 (ruby 2.7.4-p191) ("Zawgyi")
  Experimental:     false
* Min threads: 5
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
* Max threads: 5
[Pipeline] }
*  Environment: development
*          PID: 12900
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop
 
Sun Oct 03 2021 kali 终于成功 下面的报错过去了
 
ERROR: Failed to build gem native extension
 
 
 
bundle install
 
 
https://guides.rubyonrails.org/getting_started.html
 
可能要这些教程才行
 
https://www.howtoforge.com/how-to-install-ruby-on-rails-on-debian-10/
 
https://codepre.com/how-to-install-ruby-on-rails-ror-on-debian-10.html?__cf_chl_jschl_tk__=pmd_4d2f0227159e0ee7b6cd475fb9856b664ea22b39-1628909169-0-gqNtZGzNAg2jcnBszQXi
 
 
打不开 有错
 
1: from /var/lib/gems/2.7.0/gems/webpacker-5.4.0/lib/webpacker/configuration.rb:95:in `load'
/var/lib/gems/2.7.0/gems/webpacker-5.4.0/lib/webpacker/configuration.rb:103:in `rescue in load': Webpacker configuration file not found /home/evan/blog/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_check_realpath_internal - /home/evan/blog/config/webpacker.yml (RuntimeError)
 
 
Webpacker configuration file not found /home/evan/blog/config/webpacker.yml. Please run rails webpacker:install
 
 
https://stackoverflow.com/questions/57891751/webpacker-configuration-file-not-found-rails-6-0-0


最笨办法 在node上安装上docker
</pre>
</pre>


If you are running on Debian, this appears to be a known issue due to a bug in ruby-bundler. Check out [github.com/rails/thor/issues/721](this issue) for information and possible workarounds. – rmlockerd Jul 27 at 1:17
=references=
 
 
https://stackoverflow.com/questions/68535975/when-running-rake-rails-commands-i-get-typeerror-superclass-mismatch-for-class
 
=see also=
 
[https://vitux.com/installing-and-configuring-ruby-on-rails-on-debian-10/ Installing and Configuring Ruby on Rails on Debian 10]
 
[https://www.howtoforge.com/how-to-install-ruby-on-rails-on-debian-10/ How to Install Ruby on Rails (RoR) on Debian 10]
 
[https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rvm-on-debian-8 how-to-install-ruby-on-rails-with-rvm-on-debian-8]
 
=trouble=
 
https://stackoverflow.com/questions/57891751/webpacker-configuration-file-not-found-rails-6-0-0
 


https://github.com/rails/webpacker/issues/1082
https://hub.docker.com/r/jenkins/inbound-agent/


[[category:ruby]]
https://plugins.jenkins.io/kubernetes/

2024年9月3日 (二) 01:48的最新版本


trouble

Jenkinsfile

pipeline {
  agent {
    kubernetes {
      cloud 'Kubernetes'
      yaml '''
        apiVersion: v1
        kind: Pod
        spec:
          containers:
          - name: jnlp
            image: 'registry.cn-hangzhou.aliyuncs.com/evan886/my_k8s_containers:inbound-agentv2024'
            args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
          - name: maven
            image: registry.cn-hangzhou.aliyuncs.com/evan886/my_k8s_containers:maven3.2.3-jdk-8
            command:
            - cat
            tty: true
            
          - name: docker
            //image: m.daocloud.io/docker.io/library/docker:latest
            image: registry.cn-beijing.aliyuncs.com/citools/docker:19.03.9-git
            command:
            - cat
            tty: true
            volumeMounts:
            - mountPath: "/var/run/docker.sock"
              name: sock
          - name: kubectl
            image: m.daocloud.io/docker.io/bitnami/kubectl:1.27.4
            command:
            - cat
            tty: true
            securityContext:
              runAsUser: 0
          volumes:
          - name: sock
            hostPath:
              path: "/var/run/docker.sock"
        '''
    }
  }
  environment {
     gitlab_repo_url = 'http://192.168.10.103/kubernetes/java-web-demo.git'
     gitlab_credentials_id = '42c79e35-fc3e-4067-8bbf-a5e3cc0669a8'
     harbor_registry = '192.168.10.104'
     harbor_credentials_id = 'HARBOR_ACCOUNT'
     harbor_image = '${harbor_registry}/java-web-demo/web'
     k8s_kubeconfig_id='4491d2aa-375a-459b-af0b-1278e70c6d31'
     mail_notification_recipients = '112155@qq.com,zh9@163.com'
  }
  parameters {
      gitParameter branch: '', branchFilter: '.*', defaultValue: 'dev', description: '请选择发布的分支名', name: 'Branch', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'GitParameterDefinition'
  }
  stages {
    stage('拉取代码') {
      steps {
        checkout scmGit(branches: [[name: "${params.Branch}"]], extensions: [], userRemoteConfigs: [[credentialsId: "${gitlab_credentials_id}", url: "${gitlab_repo_url}"]])
      }
    }
    stage('代码编译') {
      steps {
          container('maven') {
            sh """
               # 配置阿里云Maven仓库,提高依赖文件下载速度
               sed -i "s#<mirrors>#<mirrors>\
               <mirror>\
                 <id>aliyunmaven</id>\
                 <url>https://maven.aliyun.com/repository/public</url>\
                 <mirrorOf>*</mirrorOf>\
               </mirror>#" /usr/share/maven/conf/settings.xml

               mvn clean package
            """
          }
      }
    }
    stage('构建镜像') {
      steps {
          container('docker') {
            withCredentials([usernamePassword(credentialsId: "${harbor_credentials_id}", passwordVariable: 'password', usernameVariable: 'username')]) {
               sh """
                  docker version
                  image=${harbor_image}:${BUILD_NUMBER}  # 完整镜像地址
                  docker build -t \${image} .   # 根据当前目录Dockerfile文件构建镜像
                  //docker login -u ${username} -p '${password}' ${harbor_registry}  # 推送镜像之前先登录
                  //docker push \${image}   # 推送镜像到Harbor镜像仓库
               """
            }
          }
      }
    }



==

failed to set up watcher on kubernetes  
web-pipeline-demo-6-17h0h-lrwnf-8l4w5’ is offline

今天的书写少一行  参考了去年的书搞定 
办法  添加多 cloud 'Kubernetes' 这一行 Credentials

pipeline {
  agent {
    kubernetes {
      cloud 'Kubernetes'
      yaml '''
        apiVersion: v1
        kind: Pod
        metadata:
          labels:
            app: jenkins-slave
        spec:
          containers:
          - name: jnlp
            image: 'registry.cn-hangzhou.aliyuncs.com/evan886/my_k8s_containers:inbound-agentv2024'
            args: ['\$(JENKINS_SECRET)', '\$(JENKINS_NAME)']
        '''
    }
  }

    stages {
        stage('Main') {
            steps {
                echo 'HI evan'
                sh 'hostname'
            }
        }
    }
}


问题 log

 docker version
Client: Docker Engine - Community
 Version:           19.03.9
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        9d988398e7
 Built:             Fri May 15 00:22:47 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[Pipeline] }

最笨办法 在node上安装上docker 

references

https://hub.docker.com/r/jenkins/inbound-agent/

https://plugins.jenkins.io/kubernetes/