diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..2992cbb Binary files /dev/null and b/.DS_Store differ diff --git a/.github/workflows/build-push-dev-image.yml b/.github/workflows/build-push-dev-image.yml index 2015c87..61a4c76 100644 --- a/.github/workflows/build-push-dev-image.yml +++ b/.github/workflows/build-push-dev-image.yml @@ -1,7 +1,5 @@ # Workflow responsible for the # development release processes. -# - name: Build-Push-Dev-Image on: push: @@ -22,67 +20,5 @@ on: - '*' jobs: build-push-dev-image: - runs-on: ubuntu-latest - steps: - - - name: Checkout Code - uses: actions/checkout@v4 - with: - ref: ${{ github.head_ref }} - fetch-depth: 0 - - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: '1.20' - - - name: Set short git commit SHA - id: vars - run: | - echo "short_sha=$(git rev-parse --short ${{ github.sha }})" >> $GITHUB_OUTPUT - # https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ - - - name: Confirm git commit SHA output - run: echo ${{ steps.vars.outputs.short_sha }} - - - name: Echo BINARY_NAME set in Makefile - id: BINARY_NAME - run: | - make echo >> $GITHUB_OUTPUT - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to DockerHub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - logout: true - - - name: Login to Container Registry - uses: docker/login-action@v3 - with: - registry: containers.renci.org - username: ${{ secrets.CONTAINERHUB_USERNAME }} - password: ${{ secrets.CONTAINERHUB_TOKEN }} - logout: true - - - # Notes on Cache: - # https://docs.docker.com/build/ci/github-actions/examples/#inline-cache - - name: Build Push Container - uses: docker/build-push-action@v5 - with: - build-args: BINARY_NAME=${{ steps.BINARY_NAME.outputs.BINARY_NAME }} - context: . - push: true - # Push to renci-registry and dockerhub here. - # cache comes from dockerhub. - tags: | - ${{ github.repository }}:develop - ${{ github.repository }}:${{ steps.vars.outputs.short_sha }} - containers.renci.org/${{ github.repository }}:develop - containers.renci.org/${{ github.repository }}:${{ steps.vars.outputs.short_sha }} - cache-from: type=registry,ref=${{ github.repository }}:buildcache-dev - cache-to: type=registry,ref=${{ github.repository }}:buildcache-dev,mode=max + uses: helxplatform/helx-github-actions/.github/workflows/build-push-dev-image.yml@main + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/build-push-release.yml b/.github/workflows/build-push-release.yml index 8d05c02..2d801a5 100644 --- a/.github/workflows/build-push-release.yml +++ b/.github/workflows/build-push-release.yml @@ -1,7 +1,5 @@ # Workflow responsible for the # major release processes. -# - name: Build-Push-Release on: push: @@ -21,117 +19,5 @@ on: - 'v[0-9]+.[0-9]+.*' jobs: build-push-release: - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v4 - with: - ref: ${{ github.head_ref }} - fetch-depth: 0 - - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: '1.20' - - - name: Set short git commit SHA - id: vars - run: | - echo "short_sha=$(git rev-parse --short ${{ github.sha }})" >> $GITHUB_OUTPUT - # https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ - - - name: Echo BINARY_NAME set in Makefile - id: BINARY_NAME - run: | - make echo >> $GITHUB_OUTPUT - - - name: Confirm git commit SHA output - run: echo ${{ steps.vars.outputs.short_sha }} - - # https://github.com/marketplace/actions/git-semantic-version - - name: Semver Check - uses: paulhatch/semantic-version@v5.0.3 - id: version - with: - # The prefix to use to identify tags - tag_prefix: "v" - # A string which, if present in a git commit, indicates that a change represents a - # major (breaking) change, supports regular expressions wrapped with '/' - major_pattern: "/breaking|major/" - # A string which indicates the flags used by the `major_pattern` regular expression. Supported flags: idgs - major_regexp_flags: "ig" - # Same as above except indicating a minor change, supports regular expressions wrapped with '/' - minor_pattern: "/feat|feature|minor/" - # A string which indicates the flags used by the `minor_pattern` regular expression. Supported flags: idgs - minor_regexp_flags: "ig" - # A string to determine the format of the version output - # version_format: "${major}.${minor}.${patch}-prerelease${increment}" - version_format: "${major}.${minor}.${patch}" - search_commit_body: false - - # Docker Buildx is important to caching in the Build And Push Container - # step - # https://github.com/marketplace/actions/build-and-push-docker-images - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to DockerHub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - logout: true - - - name: Login to Container Registry - uses: docker/login-action@v3 - with: - registry: containers.renci.org - username: ${{ secrets.CONTAINERHUB_USERNAME }} - password: ${{ secrets.CONTAINERHUB_TOKEN }} - logout: true - - # Notes on Cache: - # https://docs.docker.com/build/ci/github-actions/examples/#inline-cache - - name: Build Push Container - uses: docker/build-push-action@v5 - with: - build-args: BINARY_NAME=${{ steps.BINARY_NAME.outputs.BINARY_NAME }} - push: true - # Push to renci-registry and dockerhub here. - # cache comes from dockerhub. - tags: | - containers.renci.org/${{ github.repository }}:v${{ steps.version.outputs.version }} - containers.renci.org/${{ github.repository }}:latest - containers.renci.org/${{ github.repository }}:${{ steps.vars.outputs.short_sha }} - ${{ github.repository }}:v${{ steps.version.outputs.version }} - ${{ github.repository }}:latest - ${{ github.repository }}:${{ steps.vars.outputs.short_sha }} - cache-from: type=registry,ref=${{ github.repository }}:buildcache-release - cache-to: type=registry,ref=${{ github.repository }}:buildcache-release,mode=max - -#==========================TAG & RELEASE W/ NOTES ========================= - - # Note: GITHUB_TOKEN is autogenerated feature of github app - # which is auto-enabled when using github actions. - # https://docs.github.com/en/actions/security-guides/automatic-token-authentication - # https://docs.github.com/en/rest/git/tags?apiVersion=2022-11-28#create-a-tag-object - # https://docs.github.com/en/rest/git/refs?apiVersion=2022-11-28#create-a-reference - # This creates a "lightweight" ref tag. - - name: Create Tag for Release - run: | - curl \ - -s --fail -X POST \ - -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ - https://api.github.com/repos/${{ github.repository }}/git/refs \ - -d '{"ref":"refs/tags/v${{ steps.version.outputs.version }}","sha":"${{ github.sha }}"}' - -# https://cli.github.com/manual/gh_release_create - - name: Create Release - env: - RELEASE_VERSION: ${{ steps.version.outputs.version }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - gh release create ${{ env.RELEASE_VERSION }} \ - -t "${{ env.RELEASE_VERSION }}" \ - --generate-notes \ - --latest \ No newline at end of file + uses: helxplatform/helx-github-actions/.github/workflows/build-push-release.yml@main + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index e01e130..acd338e 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -1,23 +1,8 @@ name: build-test -on: [push] +on: + push: jobs: build-test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: '1.20' - - - name: Install dependencies - run: go get . - - # Ideally we would also use golangci-lint tool - - name: Run Go fmt, vet, test - run: make test - - - name: Build - run: make build + uses: helxplatform/helx-github-actions/.github/workflows/build-test.yml@main + secrets: inherit \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index c0ea387..65d9cdb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,26 +1,25 @@ # Use the official Golang image to build the binary -FROM golang:1.20 AS build -ENV CGO_ENABLED 0 -ARG BINARY_NAME +FROM golang:1.23 AS build +ENV CGO_ENABLED=0 + # Set the working directory WORKDIR /app # Copy the Go source files, Makefile, etc. COPY . . -# Build the Go application passing BINARY_NAME from Makefile (local development) -# or Github Action Build-Arg. -RUN go build -o ${BINARY_NAME} +# Build the Go application +RUN go build -o assistant # Using a multi-stage build FROM alpine:3.18 -ARG BINARY_NAME # Ensure we have a valid user and group RUN addgroup -g 1000 -S assistant && \ adduser -u 1000 -G assistant -S assistant -COPY --from=build --chown=assistant:assistant /app/${BINARY_NAME} /app/ +COPY --from=build --chown=assistant:assistant /app/assistant /app/ + # Expose port 8080 EXPOSE 8080 @@ -28,3 +27,4 @@ WORKDIR /app # Run the compiled binary CMD ["./assistant"] + diff --git a/Makefile b/Makefile index 3315fdc..5759cfe 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,6 @@ docker-build: build @echo "Building Docker container..." docker build \ --platform=linux/amd64 \ - --build-arg=BINARY_NAME=$(BINARY_NAME) \ --tag=$(REGISTRY_NAME)/$(CONTAINER_NAME) \ .