How to get a build triggered only for pattern specified in the GitRepo resource in JFrog Pipelines? - jfrog-pipelines

The files include, exclude regex for a GitRepo resource are getting ignored. This is the resource definition I’ve created:
- name: platform_pr
type: GitRepo
configuration:
gitProvider: myGithub
path: dev/helm-values
files:
include: ^templates\/(pipelines)\/*.+$
branches:
include: ^master$
buildOn:
commit: false
pullRequestCreate: true
tagCreate: false
cancelPendingRunsOn:
newCommit: false
pullRequestUpdate: true
I don't want the build to be triggered when PR has files in that specific folder. This is not woking as expected.

I see that in your yml you have specifically disabled builds for a commit: commit: false.
Unfortunately this files inclusion or exclusion filter only applies to commit events, and not pull requests, tags, or releases:
Please refer to this documentation of GitRepo Resource for more information.

Related

How to set Travis-CI deploy only release-* tags?

I have a question for Travis with Github-page.
I set up CI successful for build and deploy to Gh-page but that will deploy all commit.
deploy:
provider: pages
skip-cleanup: true
github-token: $GITHUB_ACCESS_TOKEN
target-branch: gh-pages
local-dir: dist
on:
branch: master
In some documents I found, that said add tags: true, But that will set up Travis to build all tags when I push tags to master branch.
deploy:
provider: pages
skip-cleanup: true
github-token: $GITHUB_ACCESS_TOKEN
target-branch: gh-pages
local-dir: dist
on:
branch: master
tags: true
And I would like to build some specific tags like release-*, dev-*, test-*, so on...
So, How to config to do that with Travis.
Thanks.

Exclude file types in CI triggers on Azure Devops Pipelines Builds

I'm having trouble with setting up a build where commits with only changes to markdown files do not trigger the build.
On the build, I have continuous integration enabled with "include" branch filters.
To exclude changes to markdown files I setup a single "exclude" path filters to **/*.md, which from my understanding of file matching patterns should recursively match all files that end in .md. However, when I push just a change to a markdown file, the build is still triggered.
I considered adding an "include" path filter with /, but the builds are still being triggered without it.
How do I specify specify to not build when only a certain file type was changed?
As of now, wild cards are not supported for these file path filters.
You're going to be forced into a different convention to bypass the trigger for these files.
Putting .md files in an explicit structure (ex: /docs) that you can exclude with the "pattern" given in the examples you linked exclude: docs/.
Illustration:
Given:
(repo)
\src
|\d1
| \md
|
\d2
\md
The following does not trigger on changes to either /md directory.
trigger:
branches:
include:
- master
paths:
include:
- /src/**/md/
The following always triggers on changes under src/, even for files in both .../md directories.
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- src/**/md/
The following triggers on changes under src/, src/d1/, src/d2, .../d2/md but not for any changes under src/d1/md/.
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- src/d1/md/
This same behavior holds true for your specific desire to try and call out a group of files using *.md.
Given each directory has a [variant]_README.md file in it, the following is true:
CI is triggered
when changes are made to src/d1/md/f1_README.md
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- src/d1/md/*.md
CI is triggered
when changes are made to src/d1/md/f1_README.md
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- src/d1/md/*README.md
CI is triggered
when changes are made to src/d1/md/f1_README.md or any other .md file.
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- /**/*.md
CI is triggered
when changes are made to src/d1/md/f1_README.md or any other .md file.
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- /*.md
CI is NOT triggered
when changes are made to src/d1/md/f1_README.md
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- src/d1/md/f1_README.md
The newest update from 08/09/2021 made possible to use wild cards in path filter.
Wild cards can be used when specifying inclusion and exclusion branches for CI or PR triggers in a pipeline YAML file. However, they cannot be used when specifying path filters. For instance, you cannot include all paths that match src/app//myapp*. This has been pointed out as an inconvenience by several customers. This update fills this gap. Now, you can use wild card characters (, *, or ?) when specifying path filters.
So now it should be possible to ave triggers as follows:
trigger:
branches:
include:
- master
paths:
include:
- src/
exclude:
- /**/*.md

Github include md files in README.md?

Is there a way in Github to include md files in for example the README.md?
# Headline
Text
[include](File:load_another_md_file_here.md)
It should not link to the file, it should load the contents from it, like PHP include / file_get_contents.
That does not seem to be possible, especially when considering github/markup#346 and github/markup#172.
No include directive is supported.
This is not the correct answer but a workaround for others who really want this.
It's possible to use Gulp and Gulp Concat to merge the files into one before they are sent to Github..
Since it is not possible I just ended up placing a link as
[MY-LINK](../../SOME-OTHER-README.MD)
migrate your readme to a different file then construct your actual README however you like as a github action
EDIT: Here's a demo that you can build off of. This repo has a single github action that runs a script that dynamically builds the README.md based on the contents of the repository (to build a site map for the repo in the form of a table of contents): https://github.com/dmarx/bench-warmers
the workflow config:
name: update-readme
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout#v3
- uses: actions/setup-python#v2
- name: Run the script
run: python scripts/update_readme.py
- name: Commit files
run: |
git config --local user.name "dmarx"
git add README.md
git commit -m "Updated TOC"
- name: Push changes
uses: ad-m/github-push-action#master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
force: true
Here's the chunk of my update script that's relevant to you:
... # code that builds the object `toc_str`
# template readme
with open('README.stub') as f:
readme_stub = f.read()
# simple replacement, use whatever stand-in value is useful for you.
readme = readme_stub.replace('{TOC}',toc_str)
with open('README.md','w') as f:
f.write(readme)
Which assumes you have a file named README.stub which might look something like this:
# Title
some text
{TOC}
more text
Where {TOC} is the substitution target for our dynamic content.
Ruby gem markdown_helper implements include files for GitHub flavored markdown (GFM).
Disclosure: I wrote the gem.

Travis CI deploy JAR to Github master

Refs: http://docs.travis-ci.com/user/deployment/ and http://docs.travis-ci.com/user/deployment/releases/
I'm tring to deploy my JAR file to Github, but I don't want to create a tag every time.
I know it is not the correct behaviour, but I want to do this way if possible.
Building process is running fine, but when I use this travis.yml file:
language: java
deploy:
provider: releases
api-key: "<my_api_key>"
file: "teapot-1.2.5-beta.jar"
skip_cleanup: true
on:
branch: master
I got this error:
Installing deploy dependencies
Fetching: addressable-2.3.6.gem (100%)
Successfully installed addressable-2.3.6
Fetching: multipart-post-2.0.0.gem (100%)
Successfully installed multipart-post-2.0.0
Fetching: faraday-0.9.1.gem (100%)
Successfully installed faraday-0.9.1
Fetching: sawyer-0.6.0.gem (100%)
Successfully installed sawyer-0.6.0
Fetching: octokit-3.7.0.gem (100%)
Successfully installed octokit-3.7.0
5 gems installed
Fetching: mime-types-2.4.3.gem (100%)
Successfully installed mime-types-2.4.3
1 gem installed dpl.2
Preparing deploy
Logged in as Carlos Magno Oliveira de Abreu
Deploying to repo: icemagno/teapot
Current tag is: dpl.3
Deploying application
/home/travis/.rvm/gems/ruby-1.9.3-p551/gems/octokit-3.7.0/lib/octokit/response/raise_error.rb:16:in `on_complete': POST https://api.github.com/repos/icemagno/teapot/releases: 422 - Validation Failed (Octokit::UnprocessableEntity)
Error summary:
resource: Release
code: missing_field
field: tag_name
resource: Release
code: custom
field: tag_name
message: tag_name is not well-formed
resource: Release
code: custom
message: Published releases must have a valid tag // See: https://developer.github.com/v3/repos/releases/#create-a-release
...
failed to deploy
This is the basic deploy config:
language: java
deploy:
provider: releases
api-key: "<my_key_again>"
file: "teapot-1.2.5-beta.jar"
skip_cleanup: true
on:
tags: true
all_branches: true
But I have not created any tag because I don't want to do this for now.
EDIT
I've created a tag, now I need to change .travis.yml file to test some configurations and GitHub is not allowing me to change anything on tag files (ok, must be this way) cr#p !
If I may, I believe what you are looking for is the same as I was.
Basically add something like the following to your .travis.yml:
before_deploy:
- git config --global user.email "builds#travis-ci.com"
- git config --global user.name "Travis CI"
- export GIT_TAG=$TRAVIS_BRANCH-v0.1.$TRAVIS_BUILD_NUMBER
- git tag $GIT_TAG -a -m "Generated tag from TravisCI for build $TRAVIS_BUILD_NUMBER"
- git push -q https://<your-api-key>#github.com/<your_name>/<project_name> --tags
deploy:
skip_cleanup: true
provider: releases
api_key:
secure: [redacted]
file:
- "your_file"
on:
tags: false
all_branches: true
branches:
except:
- /^*-v[0-9]/
Careful doing this though, as messing up while working with these particular config options might lead to an infinite Travis-CI build loop, which will pollute your build and tag history, and not be easy to cleanup.

How to deploy to github with file pattern on travis?

I have created a simple travis configuration which packages an app and tries to deploy the archive file to github.
The problem is, I would like to have the version number part of the file name, so i require to use a pattern for the filename. I simply can't get it to work.
Configuration is currently:
deploy:
provider: releases
file: "build/distributions/worktrail-app-hub-sync*.zip"
on:
repo: worktrail/worktrail-app-hub-sync
tags: true
all_branches: true
But it fails with: "/home/travis/.rvm/gems/ruby-1.9.3-p547/gems/octokit-3.3.1/lib/octokit/client/releases.rb:86:in `initialize': No such file or directory - build/distributions/worktrail-app-hub-sync*.zip (Errno::ENOENT)" - but the file is certainly there: build/distributions/worktrail-app-hub-sync-0.0.1.zip
Example run: https://travis-ci.org/worktrail/worktrail-app-hub-sync/builds/35704111
travis.yml: https://github.com/worktrail/worktrail-app-hub-sync/blob/0.0.1/.travis.yml
Is this supported by travis deployment, or is there any workaround for this use case?
Wildcards are supported by now if you enable the file_glob option. This is how I deploy a build .deb file to GitHub releases:
before_deploy:
- export RELEASE_PKG_FILE=$(ls *.deb)
- echo "deploying $RELEASE_PKG_FILE to GitHub releases"
deploy:
provider: releases
api_key:
secure: YOUR_ENCRYPTED_API_KEY
file_glob: true
file: "${RELEASE_PKG_FILE}"
on:
tags: true
Setting up is easy by executing travis setup releases with a dummy filename and modifying .travis.yml afterwards.
deploy:
file_glob: true
file: "build/distributions/worktrail-app-hub-sync*.zip"
example
Sorry, wildcard patterns don't work at the moment, but we'll have a look into making that possible on Travis CI.