Merge branch 'codex/tur-112-version-endpoint' into 'master'
TUR-112: Version endpoint See merge request turniere/turniere-backend!58
This commit is contained in:
commit
988171097c
|
|
@ -54,7 +54,10 @@ RUN bundle config set with 'development test' \
|
|||
|
||||
FROM runtime-base AS production
|
||||
|
||||
ARG GIT_COMMIT_SHA=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
ENV RAILS_ENV=production
|
||||
ENV GIT_COMMIT_SHA=${GIT_COMMIT_SHA}
|
||||
|
||||
COPY --from=bundle-production /usr/local/bundle /usr/local/bundle
|
||||
COPY --from=bundle-production /app/vendor/bundle /app/vendor/bundle
|
||||
|
|
@ -75,7 +78,10 @@ CMD ["sh", "-lc", "bundle exec rails db:migrate && bundle exec rails s -p 3000 -
|
|||
|
||||
FROM runtime-base AS test
|
||||
|
||||
ARG GIT_COMMIT_SHA=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||
ENV RAILS_ENV=test
|
||||
ENV GIT_COMMIT_SHA=${GIT_COMMIT_SHA}
|
||||
|
||||
RUN apt-get update -qq \
|
||||
&& apt-get install -y --no-install-recommends \
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class VersionController < ApplicationController
|
||||
def show
|
||||
render json: { git_commit_sha: }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def git_commit_sha
|
||||
ENV['GIT_COMMIT_SHA'].presence || local_git_commit_sha || 'unknown'
|
||||
end
|
||||
|
||||
def local_git_commit_sha
|
||||
Rails.root.join('.git').exist? ? `git rev-parse HEAD`.strip.presence : nil
|
||||
rescue StandardError
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
|
@ -39,4 +39,5 @@ Rails.application.routes.draw do
|
|||
end
|
||||
resources :match_scores, only: %i[show update]
|
||||
get 'healthz', to: 'health#index'
|
||||
get 'version', to: 'version#show'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -29,6 +29,13 @@ RSpec.describe 'Backend API surface HTTP E2E' do
|
|||
expect(response.dig(:json, :errors)).to eq([])
|
||||
end
|
||||
|
||||
it 'reports running version' do
|
||||
response = anonymous_client.get('/version')
|
||||
|
||||
expect(response[:status]).to eq(200)
|
||||
expect(response.dig(:json, :git_commit_sha)).to match(/\A[0-9a-f]{40}\z/)
|
||||
end
|
||||
|
||||
it 'supports registration for new users and still requires confirmation for login' do
|
||||
unique = unique_suffix
|
||||
email = "http-e2e-#{unique}@example.com"
|
||||
|
|
|
|||
23
tasks.py
23
tasks.py
|
|
@ -235,6 +235,13 @@ def _format_command(command):
|
|||
return " ".join(shlex.quote(part) for part in command)
|
||||
|
||||
|
||||
def _git_commit_sha():
|
||||
try:
|
||||
return subprocess.check_output(["git", "rev-parse", "HEAD"], text=True).strip()
|
||||
except subprocess.CalledProcessError:
|
||||
return "unknown"
|
||||
|
||||
|
||||
def _docker_build_command(tag, target, platforms=None, push=False):
|
||||
if platforms and "," in str(platforms) and not push:
|
||||
raise ValueError("multi-platform buildx builds require push=True")
|
||||
|
|
@ -246,6 +253,8 @@ def _docker_build_command(tag, target, platforms=None, push=False):
|
|||
"build",
|
||||
"--target",
|
||||
target,
|
||||
"--build-arg",
|
||||
f"GIT_COMMIT_SHA={_git_commit_sha()}",
|
||||
"-t",
|
||||
tag,
|
||||
"-f",
|
||||
|
|
@ -257,7 +266,19 @@ def _docker_build_command(tag, target, platforms=None, push=False):
|
|||
command.append(".")
|
||||
return _format_command(command)
|
||||
|
||||
return f"docker build --target {target} -t {tag} -f {DOCKERFILE_PATH} ."
|
||||
return _format_command([
|
||||
"docker",
|
||||
"build",
|
||||
"--target",
|
||||
target,
|
||||
"--build-arg",
|
||||
f"GIT_COMMIT_SHA={_git_commit_sha()}",
|
||||
"-t",
|
||||
tag,
|
||||
"-f",
|
||||
DOCKERFILE_PATH,
|
||||
".",
|
||||
])
|
||||
|
||||
|
||||
def _rspec_command(*paths):
|
||||
|
|
|
|||
Loading…
Reference in New Issue