Compare commits

...

34 Commits
v1.2.1 ... main

Author SHA1 Message Date
95127ca9d2
Add harbor scan report inputs and commenting functionality in action.yml
This update introduces new input parameters for enabling harbor scan report retrieval and commenting on pull requests. The action now includes logic to comment on the PR with scan results, enhancing visibility and feedback during the CI/CD process.
2025-05-09 03:10:50 +03:00
ce1914c7e6
Refactor caching mechanism in action.yml
This update modifies the caching strategy by removing the previous cache type and introducing a new registry-based cache for builds. This change enhances the efficiency of the caching process during CI/CD workflows.
2025-05-09 01:27:45 +03:00
6bc379401f
Add pull request event types to action.yml
This update introduces new event types for handling pull requests in the action.yml file, allowing for better caching and event management during CI/CD processes.
2025-05-08 23:21:34 +03:00
a126631a61
Add digest output to action.yml and set build-and-push step ID
This update introduces a new output 'digest' to the action.yml file, which captures the digest value from the build-and-push step. Additionally, the build-and-push step is now assigned an ID for better output management.
2025-05-08 20:51:26 +03:00
03f50cfd52
Add input option for pushing to registry in action.yml
Introduced a new input parameter 'push' to control whether the image should be pushed to the registry. The default value is set to true, allowing for more flexible image handling during the build process.
2025-04-28 02:46:59 +03:00
Shakar Bakr
89f03a4cdf
Merge pull request #15 from ditkrg/dependabot/github_actions/docker/build-push-action-6
Bump docker/build-push-action from 5 to 6
2024-10-17 14:36:08 +03:00
dependabot[bot]
99f10f531b
Bump docker/build-push-action from 5 to 6
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 04:46:54 +00:00
Shakar Bakr
ec4d5b9e24
Merge pull request #14 from ditkrg/dev
Fix empty tag output
2024-03-06 13:42:31 +03:00
Shakar Bakr
8282681e90
Code cleanup
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:41:09 +03:00
Shakar Bakr
4d6653c493
Refactor tag extraction in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:38:43 +03:00
Shakar Bakr
66b6967fe6
Refactor code to extract all tags from JSON
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:36:36 +03:00
Shakar Bakr
bce021de3a
Update jq command to extract the first tag from the JSON array
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:33:57 +03:00
Shakar Bakr
e00f61ebff
Fix JSON parsing issue in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:31:28 +03:00
Shakar Bakr
f4d3093cf3
Refactor JSON tag extraction in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:29:44 +03:00
Shakar Bakr
d6f88e3c21
Add debug output to action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:25:32 +03:00
Shakar Bakr
dae645a31a
Update echo statement in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:23:42 +03:00
Shakar Bakr
4bf54d5dc5
Fix array index in echo statement
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 13:22:21 +03:00
Shakar Bakr
e226c336ff
Update echo statement to include index in jsonOutput
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 12:47:49 +03:00
Shakar Bakr
70da99d3ea
Refactor JSON extraction logic in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 12:46:37 +03:00
Shakar Bakr
4a4669077d
Refactor variable name and update echo statement in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 12:44:11 +03:00
Shakar Bakr
4ddd760bcc
Commented out unnecessary code
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 12:41:56 +03:00
Shakar Bakr
ae829aefaa
Update action.yml with new tag value and add JSON parsing
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 12:38:41 +03:00
Shakar Bakr
51293f0a01
Update action.yml to use environment variable for image tag
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 11:25:43 +03:00
Shakar Bakr
3aeafad034
Fix tag extraction in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 11:23:45 +03:00
Shakar Bakr
4d412de570
Refactor variable assignment in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 11:06:23 +03:00
Shakar Bakr
042365ed11
Update tag value in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 11:04:02 +03:00
Shakar Bakr
8b912d0b2c
Refactor set_tag step in action.yml
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 11:03:01 +03:00
Shakar Bakr
41b517b4ef
Update action.yml to use the 'set_tag' output
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-06 10:55:24 +03:00
Shakar Bakr
2ae135865b
Merge pull request #13 from ditkrg/update-readme
Update README.md
2024-03-04 15:41:03 +03:00
Shakar Bakr
69e4e9eb69
Update README.md 2024-03-04 15:40:49 +03:00
Shakar Bakr
76881e94db
Merge pull request #12 from ditkrg/add-major-tag-update
Update readme.md
2024-03-04 15:30:21 +03:00
Shakar Bakr
bf29bc0c88
Merge pull request #11 from ditkrg/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2024-03-04 10:34:28 +03:00
Shakar Bakr
714d8939ac
Update readme.md
Signed-off-by: Shakar Bakr <5h4k4r.b4kr@gmail.com>
2024-03-04 10:33:20 +03:00
dependabot[bot]
c65fdb5252
Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-04 04:22:02 +00:00
4 changed files with 169 additions and 10 deletions

View File

@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0

View File

@ -82,7 +82,7 @@ jobs:
password: ${{ secrets.password }} password: ${{ secrets.password }}
- name: Build Docker images - name: Build Docker images
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
with: with:
push: true push: true
file: ${{ inputs.file }} file: ${{ inputs.file }}

View File

@ -101,4 +101,59 @@ jobs:
file: "path/to/Dockerfile" file: "path/to/Dockerfile"
``` ```
Feel free to customize the inputs and adjust the workflow based on your specific requirements. If you want to use it with our GitOps Action:
```yaml
name: Deploy
on:
push:
branches:
- dev
- main
tags:
- v[0-9]+.[0-9]+.[0-9]+
paths-ignore:
- "**.md"
- ".vscode/**"
- ".github/**"
- "!.github/workflows/tests-base.yaml"
- "!.github/workflows/deploy.yaml"
jobs:
build:
runs-on: ubuntu-latest
concurrency: build-${{ github.ref_name }}
outputs:
tag: ${{ steps.build-image.outputs.tag }}
tags: ${{ steps.build-image.outputs.tags }}
steps:
- id: build-image
name: Build and Push Image
uses: ditkrg/build-image-workflow@v1
with:
image: "my-docker-image"
registry: "my-registry.example.com"
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
build-args: "EXAMPLE=123"
build-secrets: "EXAMPLE=****"
file: "path/to/Dockerfile"
update-gitops:
runs-on: ubuntu-latest
concurrency: pr-${{ github.ref_name }}
needs: build
steps:
- name: Update gitops
uses: ditkrg/update-gitops-image@v1
with:
owner: ditkrg
repo: GITOPS_REPO
app-id: ${{ secrets.APP_ID }}
image-tag: ${{ needs.build.outputs.tag }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
component-name: REPO_NAME
```

View File

@ -1,6 +1,10 @@
name: "Build, Scan and Push Image" name: "Build, Scan and Push Image"
description: "Build, Scan and Push Image to Self Hosted Registry" description: "Build, Scan and Push Image to Self Hosted Registry"
inputs: inputs:
push:
description: "Push to Registry"
required: false
default: "true"
image: image:
description: "Image Name" description: "Image Name"
required: true required: true
@ -25,10 +29,28 @@ inputs:
required: false required: false
description: "Build Secrets" description: "Build Secrets"
harbor-scan-report:
required: false
default: "true"
description: "Should try to get harbor scan report"
comment-harbor-scan-report:
required: false
default: "true"
description: "Should comment harbor scan report on PR"
harbor-scan-report-comment-marker:
required: false
default: '<!-- actions-comment-pull-request "build-and-push" -->'
description: "Comment marker for harbor scan report"
outputs: outputs:
digest:
description: "Digest"
value: ${{ steps.build-and-push.outputs.digest }}
tag: tag:
description: "Image Tag" description: "Image Tag"
value: ${{ steps.meta.outputs.tags[0] }} value: ${{ steps.set_tag.outputs.tag }}
tags: tags:
description: "Image Tags" description: "Image Tags"
value: ${{ steps.meta.outputs.tags }} value: ${{ steps.meta.outputs.tags }}
@ -46,8 +68,9 @@ runs:
images: ${{ inputs.registry }}/${{ inputs.image }} images: ${{ inputs.registry }}/${{ inputs.image }}
flavor: latest=false flavor: latest=false
tags: | tags: |
# Cache # Pull Request
type=raw,value=${{ github.ref_name }}-cache type=ref,event=pr
type=ref,event=pr,suffix=-{{sha}},priority=8887 # 2
# Branches # Branches
type=ref,event=branch type=ref,event=branch
@ -66,12 +89,93 @@ runs:
password: ${{ inputs.password }} password: ${{ inputs.password }}
- name: Build Docker images - name: Build Docker images
uses: docker/build-push-action@v5 uses: docker/build-push-action@v6
id: build-and-push
with: with:
push: true push: ${{ inputs.push }}
file: ${{ inputs.file }} file: ${{ inputs.file }}
tags: ${{ steps.meta.outputs.tags }} tags: ${{ steps.meta.outputs.tags }}
cache-to: type=inline cache-to: type=registry,ref=${{ inputs.registry }}/${{ inputs.image }}:buildcache,mode=max
cache-from: type=registry,ref=${{ inputs.registry }}/${{ inputs.image }}:${{ github.ref_name }}-cache cache-from: type=registry,ref=${{ inputs.registry }}/${{ inputs.image }}:buildcache
build-args: ${{ inputs.build-args }} build-args: ${{ inputs.build-args }}
secrets: ${{ inputs.build-secrets }} secrets: ${{ inputs.build-secrets }}
- name: Set Tag
id: set_tag
shell: bash
run: |
extracted_tag=$(echo "$json" | jq -r '.tags | .[0]')
echo "tag=$extracted_tag" >> $GITHUB_OUTPUT
env:
tags: ${{ steps.meta.outputs.tags }}
json: ${{ steps.meta.outputs.json }}
- name: Harbor Scan Results
id: harbor-scan-results
if: ${{ inputs.harbor-scan-report }} == 'true'
uses: ditkrg/harbor-scan-results-action@main
with:
image: ${{ steps.set_tag.outputs.tag }}
username: ${{ inputs.username }}
password: ${{ inputs.password }}
digest: ${{ steps.build-and-push.outputs.digest }}
- name: Comment on active branch PR
uses: actions/github-script@v7
if: ${{ inputs.comment-harbor-scan-report }} == 'true'
env:
COMMENT_MARKER: ${{ inputs.harbor-scan-report-comment-marker }}
TRIVY_SCAN_RESULTS: ${{ steps.harbor-scan-results.outputs.report-markdown }}
with:
script: |
const prs = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
head: `${context.repo.owner}:${context.ref.replace('refs/heads/', '')}`
});
if (prs.data.length <= 0) {
console.log('No open PR found for the current branch');
return;
}
const pr = prs.data[0];
// Check if there's already a comment from this workflow
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number
});
const comment_marker = process.env.COMMENT_MARKER;
const buildComment = comments.data.find(comment =>
comment.body.includes(comment_marker)
);
const commentBody = `${comment_marker}
${process.env.TRIVY_SCAN_RESULTS}
`;
if (buildComment) {
// Update existing comment
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: buildComment.id,
body: commentBody
});
console.log(`Updated comment to PR #${pr.number}`);
} else {
// Create new comment
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
body: commentBody
});
console.log(`Added comment to PR #${pr.number}`);
}