Commit 2cd13d9c authored by Vladimir Shushlin's avatar Vladimir Shushlin 👆
Browse files

Merge branch '116-stop-deploying-to-s3' into 'master'

Stop deploying binaries to S3

See merge request !153



Merged-by: Vladimir Shushlin's avatarVladimir Shushlin <vshushlin@gitlab.com>
Approved-by: default avatarPedro Pombeiro <noreply@pedro.pombei.ro>
Co-authored-by: default avatarJaime Martinez <jmartinez@gitlab.com>
parents feae7a8e 3cac7848
Loading
Loading
Loading
Loading
Loading
+0 −84
Original line number Diff line number Diff line
@@ -52,90 +52,6 @@ generate_description:
    reports:
      dotenv: description.env

## Upload binaries to S3
## TODO: Upload binaries to generic package registry https://gitlab.com/gitlab-org/release-cli/-/issues/83
.upload_binaries_development:
  rules:
    - if: '$CI_MERGE_REQUEST_IID && $AWS_ACCESS_KEY_ID && $AWS_SECRET_ACCESS_KEY'

.upload_binaries_edge:
  rules:
    - if: '$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH && $AWS_ACCESS_KEY_ID && $AWS_SECRET_ACCESS_KEY'

.upload_binaries_stable:
  rules:
    - if: '$CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+\.[0-9]+/ && $AWS_ACCESS_KEY_ID && $AWS_SECRET_ACCESS_KEY'

.aws_setup:
  image:
    name: amazon/aws-cli:latest
    entrypoint: [""]
  before_script:
    - yum install make git -y

.upload_to_S3:
  extends: .aws_setup
  variables:
    S3_BUCKET: release-cli-downloads
  needs:
    - 'binaries darwin/amd64'
    - 'binaries darwin/arm64'
    - 'binaries freebsd/386 freebsd/amd64 freebsd/arm'
    - 'binaries linux/386 linux/amd64 linux/arm linux/arm64 linux/ppc64le'
    - 'binaries windows/386 windows/amd64'
  script:
    - echo "Uploading binaries to S3"
    - make release_s3
  environment:
    url: https://${S3_BUCKET}.s3.amazonaws.com/${CI_COMMIT_REF_NAME}/index.html

upload development binaries to S3:
  stage: publish
  extends:
    - .upload_binaries_development
    - .upload_to_S3
  environment:
    name: development/S3/${CI_COMMIT_REF_NAME}
    on_stop: remove development binaries from S3
    auto_stop_in: 1 week

remove development binaries from S3:
  stage: publish
  dependencies: []
  variables:
    S3_BUCKET: release-cli-downloads
  extends:
    - .upload_binaries_development
    - .aws_setup
  script:
    - make remove_s3_release
  rules:
    - if: '$CI_MERGE_REQUEST_IID && $AWS_ACCESS_KEY_ID && $AWS_SECRET_ACCESS_KEY'
      when: manual
      allow_failure: true
  environment:
    name: development/S3/${CI_COMMIT_REF_NAME}
    action: stop

upload edge biniaries to S3:
  stage: publish
  extends:
    - .upload_binaries_edge
    - .upload_to_S3
  environment:
    name: stable/S3
    url: https://${S3_BUCKET}.s3.amazonaws.com/edge/index.html

upload stable binaries to S3:
  stage: publish
  extends:
    - .upload_binaries_stable
    - .upload_to_S3
  environment:
    name: stable/S3
    url: https://${S3_BUCKET}.s3.amazonaws.com/${CI_COMMIT_REF_NAME}/index.html


.upload to generic package:
  stage: publish
  image: curlimages/curl:latest
+0 −56
Original line number Diff line number Diff line
@@ -53,59 +53,3 @@ build-binaries: setup
		-ldflags $(LD_FLAGS) \
		-output="bin/binaries/$(PROJECT_NAME)-{{.OS}}-{{.Arch}}" \
		./cmd/$(PROJECT_NAME)

.PHONY: release_s3
release_s3: CI_COMMIT_REF_NAME ?= $(BRANCH)
release_s3: CI_COMMIT_SHA ?= $(REVISION)
release_s3: S3_BUCKET ?=
release_s3:
	@$(MAKE) prepare_index
ifneq ($(S3_BUCKET),)
	@$(MAKE) sync_s3_release S3_URL="s3://$(S3_BUCKET)/$(CI_COMMIT_REF_NAME)"
ifeq ($(shell git describe --exact-match --match $(LATEST_STABLE_TAG) >/dev/null 2>&1; echo $$?), 0)
	@$(MAKE) sync_s3_release S3_URL="s3://$(S3_BUCKET)/latest";
endif
ifeq ($(CI_COMMIT_REF_NAME), $(CI_DEFAULT_BRANCH))
	@$(MAKE) sync_s3_release S3_URL="s3://$(S3_BUCKET)/edge";
endif
endif

.PHONY: sync_s3_release
sync_s3_release: S3_URL ?=
sync_s3_release:
	# Syncing with $(S3_URL)
	@aws s3 sync bin/binaries/ "$(S3_URL)" --acl public-read
	@echo "==> Download index file: https://$$S3_BUCKET.s3.amazonaws.com/$$CI_COMMIT_REF_NAME/index.html"

RELEASE_INDEX_GEN_VERSION ?= latest
RELEASE_INDEX_GENERATOR ?= .tmp/release-index-gen-$(RELEASE_INDEX_GEN_VERSION)

prepare_index: export CI_COMMIT_REF_NAME ?= $(BRANCH)
prepare_index: export CI_COMMIT_SHA ?= $(REVISION)
prepare_index: $(RELEASE_INDEX_GENERATOR)
	# Preparing index file
	@$(RELEASE_INDEX_GENERATOR) -working-directory bin/binaries/ \
								-project-version $(VERSION) \
								-project-git-ref $(CI_COMMIT_REF_NAME) \
								-project-git-revision $(CI_COMMIT_SHA) \
								-project-name "GitLab Release CLI" \
								-project-repo-url "https://gitlab.com/gitlab-org/release-cli" \
								-gpg-key-env GPG_KEY \
								-gpg-password-env GPG_PASSPHRASE

$(RELEASE_INDEX_GENERATOR): OS_TYPE ?= $(shell uname -s | tr '[:upper:]' '[:lower:]')
$(RELEASE_INDEX_GENERATOR): DOWNLOAD_URL = "https://storage.googleapis.com/gitlab-runner-tools/release-index-generator/$(RELEASE_INDEX_GEN_VERSION)/release-index-gen-$(OS_TYPE)-amd64"
$(RELEASE_INDEX_GENERATOR):
	# Installing $(DOWNLOAD_URL) as $(RELEASE_INDEX_GENERATOR)
	@mkdir -p $(shell dirname $(RELEASE_INDEX_GENERATOR))
	@curl -sL "$(DOWNLOAD_URL)" -o "$(RELEASE_INDEX_GENERATOR)"
	@chmod +x "$(RELEASE_INDEX_GENERATOR)"

.PHONY: remove_s3_release
remove_s3_release: CI_COMMIT_REF_NAME ?= $(BRANCH)
remove_s3_release: S3_BUCKET ?=
remove_s3_release:
	@echo "The S3 Bucket: $(S3_BUCKET)"
ifneq ($(S3_BUCKET),)
	@aws s3 rm "s3://$(S3_BUCKET)/$(CI_COMMIT_REF_NAME)" --recursive
endif