diff --git a/.github/workflows/atlantis-image.yml b/.github/workflows/atlantis-image.yml index 4a93d89f20..5bdfbb50d3 100644 --- a/.github/workflows/atlantis-image.yml +++ b/.github/workflows/atlantis-image.yml @@ -28,6 +28,7 @@ jobs: RELEASE_TAG: ${{ contains(github.ref, 'pre') && 'prerelease-latest' || 'latest' }} IMAGE_BASE: ghcr.io/${{ github.repository_owner }}/atlantis IMAGE_SUFFIX: ${{ matrix.image_type != 'alpine' && format('-{0}', matrix.image_type) || '' }} + steps: - uses: actions/checkout@v3 @@ -76,7 +77,11 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max context: . - build-args: ATLANTIS_BASE_TAG_TYPE=${{ matrix.image_type }} + build-args: | + ATLANTIS_BASE_TAG_TYPE=${{ matrix.image_type }} + ATLANTIS_VERSION=dev + ATLANTIS_COMMIT=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} + ATLANTIS_DATE=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} platforms: linux/arm64/v8,linux/amd64,linux/arm/v7 push: ${{ github.event_name != 'pull_request' }} tags: | @@ -100,7 +105,11 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max context: . - build-args: ATLANTIS_BASE_TAG_TYPE=${{ matrix.image_type }} + build-args: | + ATLANTIS_BASE_TAG_TYPE=${{ matrix.image_type }} + ATLANTIS_VERSION=${{ env.RELEASE_VERSION }} + ATLANTIS_COMMIT=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} + ATLANTIS_DATE=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }} platforms: linux/arm64/v8,linux/amd64,linux/arm/v7 push: ${{ github.event_name != 'pull_request' }} # release version is the name of the tag i.e. v0.10.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eaf2884241..7f7476739b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,7 @@ on: tags: - v*.*.* # stable release like, v0.19.2 - v*.*.*-pre.* # pre release like, v0.19.0-pre.calendardate + workflow_dispatch: jobs: goreleaser: diff --git a/.goreleaser.yml b/.goreleaser.yml index 0082426356..b937a3da07 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -25,10 +25,6 @@ changelog: skip: true release: - github: - owner: runatlantis - name: atlantis - # If set to true, will not auto-publish the release. # Default is false. draft: false @@ -47,10 +43,12 @@ release: # Default is false. prerelease: auto -signs: - # https://goreleaser.com/customization/sign/ - - - artifacts: all +# TODO: This requires a gpg_private_key +# https://github.com/marketplace/actions/goreleaser-action#signing +# signs: +# # https://goreleaser.com/customization/sign/ +# - +# artifacts: all snapshot: name_template: "{{ incpatch .Version }}-next" diff --git a/Dockerfile b/Dockerfile index 60bdac7c76..5129dd9a3e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,11 +6,19 @@ ARG ATLANTIS_BASE_TAG_TYPE=alpine FROM golang:1.19.5-alpine AS builder +ARG ATLANTIS_VERSION=dev +ENV ATLANTIS_VERSION=${ATLANTIS_VERSION} +ARG ATLANTIS_COMMIT=none +ENV ATLANTIS_COMMIT=${ATLANTIS_COMMIT} +ARG ATLANTIS_DATE=unknown +ENV ATLANTIS_DATE=${ATLANTIS_DATE} + WORKDIR /app COPY . /app + RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ - CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -v -o atlantis . + CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X 'main.version=${ATLANTIS_VERSION}' -X 'main.commit=${ATLANTIS_COMMIT}' -X 'main.date=${ATLANTIS_DATE}'" -v -o atlantis . # Stage 2 # The runatlantis/atlantis-base is created by docker-base/Dockerfile @@ -48,20 +56,20 @@ RUN AVAILABLE_TERRAFORM_VERSIONS="1.0.11 1.1.9 1.2.9 ${DEFAULT_TERRAFORM_VERSION ENV DEFAULT_CONFTEST_VERSION=0.38.0 RUN AVAILABLE_CONFTEST_VERSIONS="${DEFAULT_CONFTEST_VERSION}" && \ - case ${TARGETPLATFORM} in \ + case "${TARGETPLATFORM}" in \ "linux/amd64") CONFTEST_ARCH=x86_64 ;; \ "linux/arm64") CONFTEST_ARCH=arm64 ;; \ # There is currently no compiled version of conftest for armv7 "linux/arm/v7") CONFTEST_ARCH=x86_64 ;; \ esac && \ for VERSION in ${AVAILABLE_CONFTEST_VERSIONS}; do \ - curl -LOs https://github.com/open-policy-agent/conftest/releases/download/v${VERSION}/conftest_${VERSION}_Linux_${CONFTEST_ARCH}.tar.gz && \ - curl -LOs https://github.com/open-policy-agent/conftest/releases/download/v${VERSION}/checksums.txt && \ + curl -LOs "https://github.com/open-policy-agent/conftest/releases/download/v${VERSION}/conftest_${VERSION}_Linux_${CONFTEST_ARCH}.tar.gz" && \ + curl -LOs "https://github.com/open-policy-agent/conftest/releases/download/v${VERSION}/checksums.txt" && \ sed -n "/conftest_${VERSION}_Linux_${CONFTEST_ARCH}.tar.gz/p" checksums.txt | sha256sum -c && \ - mkdir -p /usr/local/bin/cft/versions/${VERSION} && \ - tar -C /usr/local/bin/cft/versions/${VERSION} -xzf conftest_${VERSION}_Linux_${CONFTEST_ARCH}.tar.gz && \ - ln -s /usr/local/bin/cft/versions/${VERSION}/conftest /usr/local/bin/conftest${VERSION} && \ - rm conftest_${VERSION}_Linux_${CONFTEST_ARCH}.tar.gz && \ + mkdir -p "/usr/local/bin/cft/versions/${VERSION}" && \ + tar -C "/usr/local/bin/cft/versions/${VERSION}" -xzf "conftest_${VERSION}_Linux_${CONFTEST_ARCH}.tar.gz" && \ + ln -s "/usr/local/bin/cft/versions/${VERSION}/conftest" "/usr/local/bin/conftest${VERSION}" && \ + rm "conftest_${VERSION}_Linux_${CONFTEST_ARCH}.tar.gz" && \ rm checksums.txt; \ done diff --git a/main.go b/main.go index fec2347232..62d54fac7f 100644 --- a/main.go +++ b/main.go @@ -33,12 +33,12 @@ var ( ) func main() { - fmt.Printf("atlantis %s, commit %s, built at %s", version, commit, date) v := viper.New() logger, err := logging.NewStructuredLogger() + logger.Debug("atlantis %s, commit %s, built at %s\n", version, commit, date) if err != nil { panic(fmt.Sprintf("unable to initialize logger. %s", err.Error())) }