Skip to content

Merge pull request #29 from Alirezaja1384/main #7

Merge pull request #29 from Alirezaja1384/main

Merge pull request #29 from Alirezaja1384/main #7

Workflow file for this run

name: Bump version, build and release
on:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
tag:
name: Tag and release
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.tag_version.outputs.new_tag }}
new_version: ${{ steps.tag_version.outputs.new_version }}
changelog: ${{ steps.tag_version.outputs.changelog }}
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Bump version and push tag
id: tag_version
uses: mathieudutour/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
default_bump: patch
- name: Create a GitHub release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.tag_version.outputs.new_tag }}
name: Release ${{ steps.tag_version.outputs.new_tag }}
body: ${{ steps.tag_version.outputs.changelog }}
build:
name: Build and push
runs-on: ubuntu-latest
needs: tag
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Metadata extraction
id: metadata
uses: docker/metadata-action@v5
with:
# List of Docker images to use as base name for tags
images: |
ghcr.io/${{ github.repository }}
# Generates Docker tags based on the following events/attributes
tags: |
type=raw,value=${{ needs.tag.outputs.new_tag }}
type=raw,value=${{ needs.tag.outputs.new_version }}
type=sha
latest
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v3
with:
push: true
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
- name: Update deployment
uses: actions/github-script@v7
with:
github-token: ${{ secrets.DEPLOYMENT_PAT }}
script: |
if(!'${{ secrets.DEPLOYMENT_PAT }}') {
console.log('No PAT provided, skipping deployment update')
return
}
const owner = '${{ secrets.DEPLOYMENT_OWNER }}'
const repo = '${{ secrets.DEPLOYMENT_REPO }}'
const workflow_id = '${{ secrets.DEPLOYMENT_WORKFLOW }}'
const ref = 'main'
const deployment_name = '${{ secrets.DEPLOYMENT_NAME }}'
const version = '${{ needs.tag.outputs.new_version }}'
if (!owner || !repo || !workflow_id || !deployment_name || !version) {
core.setFailed('Missing required inputs')
return
}
await github.actions.createWorkflowDispatch({
owner: owner,
repo: repo,
workflow_id: workflow_id,
ref: ref,
inputs: {
version: version,
deployment: deployment_name,
}
})