Configuring Groovy on Jenkins - jenkins-plugins

I'm using Jenkins ver 2.121.2. I'm trying to configure the Groovy plugin to run groovy scripts via a Jenkins job. The plugin documentation provided here
does not appear to match the UI I see in the System Configuration - Groovy section of this version of Jenkins. The various parameters don't match and so far I'm unable to get the plugin to run a simply groovy script. Not being familar with java and how the classpath works I'm not able to loosely interpret the instructions and get it working. If anyone can point me at documentation that more closely matches the Groovy plugin with the most current version of Jenkins I would appreciate it.

First, you need to configure an instance (or instances) of Groovy to run scripts in your builds. You do that on the Global Tool Configuration page.
You should have a least one JDK configured in the Global Tools Configuration (or have JAVA_HOME defined).
You can have Jenkins install the version of Groovy you want (on first use), or you can install Groovy yourself and point to it as in the example below:
Once this is in place, you can use the Execute Groovy Script build step in a build:

Related

Azure DevOps - React App - Set Environment Variables in Release Pipeline

We have a React app in AzureDevOps. We build it using npm install/npm run build and then upload the zip file. From there we'll do a release to multiple stages/environments. Due to SOX compliance we're trying to maintain a single build/artifact no matter what the environment.
What I'm trying to do is be able to set the environment variables during the release pipeline. For instance, be able to substitute the value of something like process.env.REACT_APP_CONFIG_VALUE
I've tried setting that in the Pipeline variables during the release but it does not seem to work. Is this possible or do I have to use a json config of some sort instead of using process.env?
Thanks
You could not achieve this by setting pipeline variables during the release.
Suggest you could use RegEx Match & Replace extension task to achieve this. Use this site to convert the regular expression: Regex Generator
Here is an example:
this._baseUrl = process.env.REACT_APP_CONFIG_VALUE;
This extension task will use regular expressions to match fields in the file.
Checking from published js.
This is how I did it -
Step1: Add all those files (.env .env.development .env.production) to azure devops library as secure files. We can download these secure files in the build machine using a DownloadSecureFile#1 pipeline task (yml). This way we are making sure the correct .env file is provided in the build machine before the task yarn build --mode development in the pipeline.
Step2: Add the following task in your azure yml pipeline in appropriate place. I have created a github repo https://github.com/mail4hafij/react-yarn-azure-pipeline if you want to see a complete example.
# Download secure file from azure library
- task: DownloadSecureFile#1
inputs:
secureFile: '.env.development'
# Copy the .env file
- task: CopyFiles#2
inputs:
sourceFolder: '$(Agent.TempDirectory)'
contents: '**/*.env.development'
targetFolder: '$(YOUR_DEFINED_PROJECT_ROOT_FOLDER_VARIABLE)'
cleanTargetFolder: false
Keep note, secure files can't be edited but you can always re-upload.

[Apache Flink]: Where is flink-s3-fs-hadoop plugin?

I would like to read and write some data with Apache Flink 1.11.2 from S3. The documentation recommends to use the presto plugin for checkpoints and the hadoop plugin for pipeline data.
After reading this section you have to copy the plugins from /opt to /plugin. I can find the flink-s3-fs-presto-1.11.2.jar under /opt but there is no flink-s3-fs-hadoop-1.11.2.jar. Where can i find the s3-hadoop plugin for setting up my production environment?
And how can i use these plugins in the IDE? Simply adding these to pom.xml als provided dependencies? And then how can i pass the crentials in IDE?
That is weird I can see that they are both present in the official binaries in opt in 1.11.1. However if You can't find them, You can simply try to get the jars from Maven here and copy them to the required place. Another thing that may work is adding the dependency into the project with compile scope.
Running the job locally is described here. There are various ways of configuring the credentials when running the job in IDE, one might be adding core-site.xml to resources folder with proper configruation.
EDIT:
As for the local execution it was explained here a little bit.

Adding ext-stackdriver_debugger to composer to enable StackDriver debugging in Google App Engine

I'm following the steps on this page: https://cloud.google.com/debugger/docs/setup/php
I want to set up the debugging for App Engine flexible environment (PHP 7.2).
Step 3 says to add the Add the Stackdriver Debugger PHP extension via your composer.json file: with the following command:
composer require ext-stackdriver_debugger:*
However, when I run that, the package cannot be found:
[InvalidArgumentException]
Could not find a matching version of package ext-stackdriver_debugger. Check the
package spelling, your version constraint and that the package is available in a
stability which matches your minimum-stability (stable).
How can I complete Step 3 successfully?
Such error usually means that extension/module is not enabled in PHP version used by composer command. Make sure that you've enabled module in php.ini used by PHP CLI. Alternatively you may explicitly use specific PHP version to run composer command:
/usr/bin/php7.2 composer require ext-stackdriver_debugger:*
In worst case you may try to add extension manually to composer.json:
"require": {
"ext-stackdriver_debugger": "*",
...
},
and use --ignore-platform-reqs switch on composer update and composer install. Or just ignore this step - requiring PHP extension does not give you any real benefits except preventing installing package on server without this extension. You don't need to add PHP extension to composer.json to use it.

How can one import the whole webDriver project in an executable form so that anybody else can run the suite by just a click.?

I am relatively new to Selenium WebDriver and a self learner. I have created a webDriver project which consists of different packages and have made use of Page Factory concepts extensively. I use TestNg framework to run the suite to generate my report. So my test cases are also following the TestNG framework concepts.
Now my team wants to use my script to be run at every build to test the sanity. The build team just wants to run my whole script by just a click. It can be shell script command or .exe or jar. Build team uses linux m/c and they dont have Ecplise , TestNg installed in their machine. Their intention is whenever build is given they want to run my script by just a click or a command in Command Prompt.( it has to be that simple for them) and a report should be generated in some location in hdfs
My script runs on FF version 32 and Selenium webDriver 2.44.0
Would really appreciate if someone could give me a solution that actually works for my requirement.
I found a similar query from someone but i am not sure if the answer still suits.
How to make Java executable Jar file of WebDriver project
Could somebody please give me a solution. Or the solution mentioned in the above link stil is the best?
Regards
There are few ways to do it:
Use CI tool (Jenkins): You can set up your project in Jenkins and it will allow you to run the project in single click. Jenkins also provides you an option to run the tests periodically so you can configure it in such a way that it will always get executed after certain time period.Jenkins is also capable to trigger the execution if there is any changes in source code of tests. I'd suggest to use this tool. https://jenkins-ci.org/
Use .bat or .sh file: I am not sure if you are using any build tool like ANT or Maven, if you are using any one of them then you can write a .bat or .sh file to run the tests. ANT
If you are not using any build tool then start using, it will help to run the tests in simplest way.For me to run entire suite, I just type below command in terminal from root directory of project
ant run -Dsuite=all
If you are more concerned about system configuration for e.g. the system which will be used by build team does not have a specific version of browser or specific required library. Then I'd suggest to keep all essentials like browser installation files, libraries in your project directory. This is not a good practice but yes it will help others to run the tests smoothly.
I would suggest just exporting a jar file for your project. All the libraries will be packaged together in the jar files(including TestNG) and you can simply double click on the jar file to start your tests.
External resources (if any), will have to be available for the jar file though. So, you can provide the jar file and the external resources together. The external resources might include your test data (if any) or Portable Firefox(if you are using the portable version).
Steps:
Right click on Project -> Export -> Runnable jar file
Give a name and file path for the jar file
Select option - Extract required libraries into generated JAR
And Finish
Troubleshooting:
Check the java version for the machines that you will be running your jar file on. Programs compiled with java 7 will mostly not run if the machine has java 6. Either compile with java 6 or update the jre on the target machines.
If the jar file does not launch, try using Jarfix.

How to add deployment message parameter with CloudBees Deployer plugin

Is there a way to give a custom message to the deployment with the Cloudbees Deployer plugin? We are used to putting the git version to the deployment so that it's easier to see which version we have running at run#cloud.
We've tried doing the deployment with the bees maven plugin and there it's possible to get the message parameter set from a build parameter. It just would be nice to be able to use the plugin instead of having to mess with the maven plugin, which is easier to get wrong in the configuration phase.
This feature was not available prior to version 4.4 of the CloudBees Deployer plugin.
Version 4.4 adds the ability to configure the description in the "Advanced" button:
The default value for this field is ${JOB_NAME} #${BUILD_NUMBER} so as to retain the previous behaviour.
The field supports all the usual Jenkins Environment token macro expansion, so you probably want to set it to something like ${GIT_COMMIT} or maybe ${GIT_COMMIT} ${JOB_NAME} #${BUILD_NUMBER}. In any case the standard token macros should provide the flexibility you require.
Note: If you are using DEV#cloud, and the Jenkins has a pre-4.4 version of the plugin you will have to wait until after 2013-04-15T15:00Z and restart your Jenkins instance to pick up the newer version of the plugin.
Note: If you are using the CloudBees Deployer plugin via the CloudBees Free Enterprise Plugins route, you will have to force the update center metadata to update or wait until after 2013-04-16T12:30Z to see the update in the list of plugins.

Resources