Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/javiertuya/branch-snapshots-action
Publish branch snapshots to the GitHub Packages Maven registry
https://github.com/javiertuya/branch-snapshots-action
deploy github-action java maven packages snapshot
Last synced: about 4 hours ago
JSON representation
Publish branch snapshots to the GitHub Packages Maven registry
- Host: GitHub
- URL: https://github.com/javiertuya/branch-snapshots-action
- Owner: javiertuya
- License: mit
- Created: 2023-06-12T05:05:39.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-02T08:40:10.000Z (16 days ago)
- Last Synced: 2024-11-05T22:47:29.387Z (12 days ago)
- Topics: deploy, github-action, java, maven, packages, snapshot
- Language: Java
- Homepage:
- Size: 34.2 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Branch Snapshots Action
This action publishes maven branch snapshots to the GitHub Packages Maven registry.
Each time that it is executed, builds the system and publishes a snapshot with the version in the form
`--SNAPSHOT`.## Inputs
- `token` *(Required)*: Token to access GitHub Packages
- `working-directory` *(Default to root directory)*: The name of the working directory from which the mvn deploy is executed'
- `java-version` *(Required)*: Java version used to build the package
- `mvn-deploy-args`: Optional arguments to be passed to the `mvn deploy` command
- `delete-old-snapshots` *(Default false)*: If true, keeps only `min-snapshots-to-keep` branch snapshots (versions)
- `min-snapshots-to-keep` *(Default 2)*: The number of latest branch snapshots (versions) to keep if `delete-old-snapshots` is true
- `always-keep-regex`: 'An optional regex to specify branch snapshots (versions) that never will be deleted'## Example usage
```yaml
- uses: javiertuya/branch-snapshots-action@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
working-directory: test
java-version: '8'
mvn-deploy-args: '-P publish-github -DskipTests=true -Dmaven.test.failure.ignore=false -U --no-transfer-progress'
delete-old-snapshots: true
min-snapshots-to-keep: 2
always-keep-regex: "\\d*\\.\\d*\\.\\d*-main-SNAPSHOT$"
```This action is better used from a dedicated job or workflow, see job `publish-java-snapshot` in:
[.github/workflows/test.yml](https://github.com/javiertuya/branch-snapshots-action/blob/main/.github/workflows/test.yml)## How to consume branch snapshots
To consume (install) the branch snapshots from a local development environment, Jenkins or GitHub Actions, follow the below instructions.
### Configure the pom.xml (common to all environments)
Declare the GitHub repository in the pom.xml (you can specify * instead of the repo name), example:
```xml
github
https://maven.pkg.github.com/USERNAME-OR-ORGANIZATION/REPOSITORY
true
```and follow the below instructions for each environment
### Install from GitHub Actions
The workflow requires authentication with a token with scope `read:packages`.
This can be achieved by specifying the environment variable
`GITHUB_TOKEN` associated with the workflow repository:```yaml
- name: Build and test
run: mvn test -U
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```### Install from a local development environment
Authentication must be included in a `settings.xml` file in your `~/.m2` folder.
The `id` (`github` in the example) must match the `id` indicated in the pom.xml file.
The GitHub token must have the `read:packages` scope:```xml
github
USERNAME
TOKEN
```
### Install from Jenkins
Autentication is similar to that of a local environment, but you can safely save the token in Jenkins:
- Place the `settings.xml` file in the jenkins node (agent) `~/.m2` folder.
- For security reasons, instead of use a plain text token,
you should use an environment variable, for example, `${GITHUB_TOKEN}`
- Add a "secret text" credential to Jenkins with the token ant take note of the `credential_id`
- Then, use the Jenkins Credentials Binding Plugin (https://www.jenkins.io/doc/pipeline/steps/credentials-binding/)
in your pipeline to inject the secret:
```groovy
withCredentials([string(credentialsId: 'credential_id', variable: 'GITHUB_TOKEN')]) {
sh 'mvn test -U'
}
```