AzureDevops Release - Command Shell "do not have permissions" - shell

I've created a release on Azuredevops with a Command Line Task.
The script is really simple :
Unzip the artifcats and move it to another folder.
But owner's folder is not the same between the Agent Deployment and the repository.
I add chmod 777, it's works, but is not the best answer.
Do you have another solution ?

AzureDevops Release - Command Shell “do not have permissions”
Indeed, to unzip the artifcats and move it to another folder, we could use Extract Files task to complete this:
Extract Files task
Use this task in a build or release pipeline to extract files from
archives to a target folder using match patterns. A range of standard
archive formats is supported, including .zip, .jar, .war, .ear, .tar,
.7z, and more.
BTW, there is an extension to Unzip a directories Zip and unzip directory build task
Hope this helps.

Related

File Rename Issue after publishing the artifact to Nexus

Background: I am renaming a certain set of env specific files in my source code via jenkins pipeline before publishing the artifact to nexus using mvn deploy goal
I'm using mv command to rename the file
mv <env>config.properties config.properties
This does rename the files successfully and when I download the zip from output console of jenkins, I have the renamed files(config.properties) in zip
But the very next time I download it from nexus or from the output console again, It gives a zip file with old file name config.properties. It is somehow renaming it back to original name.
Has anyone faced this before? Any inputs would help

Gradle Could not expand ZIP: is not a ZIP archive

I am trying to unzip an archive file in my Gradle build script.
The archive file exists, and I have checked that it is indeed a zip file by running
file myfile.zip
However, build fails with the following error:
Could not expand ZIP '/.../file.zip': is not a ZIP archive
For Windows:
Please delete the package of the zip file and clean gradle. It will resolve.
One reason this can happen is if the file is damaged or corrupted.
The way to check that is to try manually unzipping the file.
For me, the problem was semi-unrelated. My build directory was owned by root and I was running as a user that did not have permissions to write there. I ended up deleting the dir and the next gradle build handled it.
Yes.. it was due to permission on that file.
For windows:
Give the permission including parent folder as same administrator.
Try it to do it again.
If still not work, delete the zip file and let them create again after 1st step. It will resolve.
I got same error, and after running ./gradlew build --stacktrace found out that resources folder contained Flyway migration file with name "V1.1.98__documents..sql" (double dot). Apparently this caused problems with zipping. Was typo of course.

Executing gradle scripts from external directories

I need to execute groovy script with gradle, but the thing is that these scripts are located in external directory (let's say it's Desktop). I've heard, that in previous versions of Gradle (currently working on 3.2.1) it was not possible, since it is not part of the gradle project. I wonder if it is possible now, or do I have to copy all these scripts into some folder located in gradle project, to execute it.
User story:
I found script in external directory (based on some properties passed to console) - I have absolute path to the script
Now I want to execute this script (build.gradle) without copying it into my gradle project
I'm pretty green with gradle and I hope I made my point clear.
Thanks for help and every attempt :)
Is that what you're looking for? To run the script clone the repository, navigate to 42556631/project folder and run the command:
gradle -b ../script/build.gradle clean build
yes you need to move build.gradle file into project/Build Script folder and then run it.

How to deploy a WAR file which is located in zip file(window) to linux

Right now my situation is like this. I created a war file using eclipse in window. Now i want to zip my war file together with my bash script so that automate installation will occur. Is it anyway so that my bash script can automatically recognize my war file?
You could easily use the zip command. See man zip for more details.
If you want to archive multiples war files in the same directory :
lstPath=""
for warFile in "$DIR"/*.zip; do
lstPath="$lstPath $warFile"
done
zip a.zip lstPath
Or :
lstPath=""
for warFile in "$DIR"/*.zip; do
zip a.zip "$warFile"
done
And if the war files are not in the same directory, you could use the find command ;)

how to execute shell to install a file from artifacts dir in jenkins

I have a build step that builds my projects and packs it into a myfile.jar and put it in my artifacts dir.
i have also told jenkins to archive the myfile.jar.
now i want to add another build step to execute shell command java -jar myfile.jar and install it for further testings
how can i tell jenkins to point to myfile.jar when executing the shell command ? i don't know the artifacts dir name since it's dynamically created with build number etc...
thanks.
The artifacts directory is on the master, not the slave.
If both are on the same machine for you, the artifacts reside at:
$JENKINS_HOME/jobs/$JOB_NAME/$BUILD_ID/archive
However, like Anders Lindahl said, archiving an artifact does not delete it from the workspace; why not use it directly from there. Generally, you do not want to disturb the archives directories...

Resources