Skip to content

Release and Publish

Release and Publish #9

name: Release and Publish
on:
workflow_run:
workflows: [Test Coverage]
types:
- completed
branches:
- main
jobs:
release:
name: Release
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get version from script
id: get_version
run: |
wget https://raw.githubusercontent.com/lzaycoe/brainbox-deployment/refs/heads/main/scripts/get-version.sh
sudo apt-get install jq
chmod +x ./get-version.sh
echo "version=$(./get-version.sh ./package.json)" >> $GITHUB_OUTPUT
shell: bash
- name: Release
uses: softprops/action-gh-release@v2
with:
name: brainbox-backend - v${{ steps.get_version.outputs.version }}
tag_name: ${{ steps.get_version.outputs.version }}
generate_release_notes: true
publish:
name: Publish Docker Image
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
permissions:
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Get version from script
id: get_version
run: |
wget https://raw.githubusercontent.com/lzaycoe/brainbox-deployment/refs/heads/main/scripts/get-version.sh
sudo apt-get install jq
chmod +x ./get-version.sh
echo "version=$(./get-version.sh ./package.json)" >> $GITHUB_OUTPUT
shell: bash
- name: Login ghcr.io
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Publish image
run: |
docker buildx build . \
-t ghcr.io/${{ github.repository }}:${{ steps.get_version.outputs.version }} \
-t ghcr.io/${{ github.repository }}:latest \
--platform=linux/amd64 \
--load
docker push ghcr.io/${{ github.repository }}:${{ steps.get_version.outputs.version }}
docker push ghcr.io/${{ github.repository }}:latest