Skip to content
This repository has been archived by the owner on Oct 1, 2024. It is now read-only.

Commit

Permalink
feat: release + docker container (#136)
Browse files Browse the repository at this point in the history
* feat: Dockerfile

* fix: .dockerignore

* feat: create release

* feat: push to ghcr
  • Loading branch information
eddiejaoude authored Jun 30, 2024
1 parent c6a1375 commit a9ecb94
Show file tree
Hide file tree
Showing 4 changed files with 151 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Include any files or directories that you don't want to be copied to your
# container here (e.g., local build artifacts, temporary files, etc.).
#
# For more help, visit the .dockerignore file reference guide at
# https://docs.docker.com/go/build-context-dockerignore/

**/.classpath
**/.dockerignore
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/.next
**/.cache
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/charts
**/docker-compose*
**/compose.y*ml
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
**/build
**/dist
LICENSE
README.md
44 changes: 44 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Publish Docker image
on:
release:
types: [published]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: npm install and build
run: |
npm ci
npm run build
- uses: actions/upload-artifact@main
with:
name: artifacts
path: prod/
push_to_registry:
name: Push Docker image to GitHub Packages
needs: build
runs-on: ubuntu-latest
steps:
- name: check out the repo
uses: actions/checkout@v4
- name: get-npm-version
id: package-version
uses: martinbeentjes/npm-get-version-action@master
- name: version dockerfile
uses: docker/setup-buildx-action@v3
- name: log into GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
- name: push to Github Container Registry
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: |
ghcr.io/eddiehubcommunity/reporater:v${{ steps.package-version.outputs.current-version}}
ghcr.io/eddiehubcommunity/reporater:latest
60 changes: 60 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Release
on:
push:
branches:
- main

jobs:
changelog:
if: github.repository == 'EddieHubCommunity/RepoRater'
runs-on: ubuntu-latest

steps:
# check out the repository with all releases
- uses: actions/checkout@v4
with:
fetch-depth: 0

# Create a temporary, uniquely named branch to push release info to
- name: create temporary branch
run: git branch "release-from-${{ github.sha }}" "${{ github.sha }}"

# switch to the temporary branch
- name: switch to new branch
run: git checkout release-from-${{ github.sha }}

# create release info and push it upstream
- name: conventional Changelog Action
id: changelog
uses: TriPSs/conventional-changelog-action@v3
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
version-file: "./package.json,./package-lock.json,./src/config/app.json"
git-branch: "release-from-${{ github.sha }}"
skip-git-pull: true

# create PR using GitHub CLI
- name: create PR with release info
if: steps.changelog.outputs.skipped == 'false'
id: create-pr
run: gh pr create --base main --head release-from-${{ github.sha }} --title 'Merge new release into main' --body 'Created by Github action'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# merge PR using GitHub CLI
- name: merge PR with release info
if: steps.changelog.outputs.skipped == 'false'
id: merge-pr
run: gh pr merge --admin --merge --subject 'Merge release info' --delete-branch
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# release info is now in main so we can continue as before
- name: create release with last commit
if: steps.changelog.outputs.skipped == 'false'
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.CHANGELOG_RELEASE }}
tag: ${{ steps.changelog.outputs.tag }}
name: ${{ steps.changelog.outputs.tag }}
body: ${{ steps.changelog.outputs.clean_changelog }}
14 changes: 14 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
ARG NODE_VERSION=20

FROM node:${NODE_VERSION}
LABEL org.opencontainers.image.source https://github.com/eddiehubcommunity/RepoRater

WORKDIR /usr/src/app

COPY . .

RUN npm ci

EXPOSE 3000

CMD npm run build && npm start

0 comments on commit a9ecb94

Please sign in to comment.