-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Prabhav Thali <[email protected]>
- Loading branch information
1 parent
54af6f4
commit aea9d82
Showing
5 changed files
with
195 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
language: go | ||
|
||
go: | ||
- 1.12.8 | ||
|
||
os: linux | ||
dist: focal | ||
|
||
git: | ||
depth: false | ||
|
||
services: | ||
- docker | ||
|
||
env: | ||
global: | ||
- TAG=nightly | ||
- RECREATE_TAGS=false | ||
- NO_COMMIT='' | ||
- REGISTRY=quay.io | ||
- ORGANIZATION=eclipse | ||
- IMAGE=che-machine-exec | ||
|
||
install: | ||
- git remote set-url origin https://[email protected]/eclipse-che/che-machine-exec.git | ||
- export SHORT_SHA=$(git rev-parse --short HEAD) | ||
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin | ||
- echo "$QUAY_PASSWORD" | docker login quay.io -u "$QUAY_USERNAME " --password-stdin | ||
|
||
jobs: | ||
include: | ||
- stage: Code Coverage Report | ||
if: type = push | ||
arch: amd64 | ||
install: | ||
- export GO111MODULE="on" | ||
- go get ${gobuild_args} ./... | ||
script: | ||
- | | ||
echo "" > coverage.txt | ||
export CHE_WORKSPACE_ID=test_id; go test -v ./... -coverprofile coverage.txt | ||
bash <(curl -s https://codecov.io/bash) | ||
- &unit-test | ||
stage: Unit tests and Docker build PR | ||
if: type = pull_request | ||
install: | ||
- export GO111MODULE="on" | ||
- go get ${gobuild_args} ./... | ||
script: bash .travis/pr_check.sh | ||
name: PR check on amd64 | ||
arch: amd64 | ||
- <<: *unit-test | ||
name: PR check on arm64 | ||
arch: arm64 | ||
- <<: *unit-test | ||
name: PR check on ppc64le | ||
arch: ppc64le | ||
- <<: *unit-test | ||
name: PR check on s390x | ||
arch: s390x | ||
|
||
- &nightly-build | ||
stage: Build and push both short SHA tag and nightly tag | ||
if: type = push AND branch = main AND env(TAG) = "nightly" | ||
script: | ||
- bash .travis/build_image.sh | ||
name: Build image on amd64 | ||
arch: amd64 | ||
|
||
- <<: *nightly-build | ||
name: Build image on arm64 | ||
arch: arm64 | ||
|
||
- <<: *nightly-build | ||
name: Build image on ppc64le | ||
arch: ppc64le | ||
|
||
- <<: *nightly-build | ||
name: Build image on s390x | ||
arch: s390x | ||
|
||
- stage: Publish multiarch image with nightly & short_sha tag | ||
if: type = push AND branch = main AND env(TAG) = "nightly" | ||
script: bash .travis/publish_multiarch.sh | ||
|
||
- stage: Check existing tags | ||
if: type = api AND env(TAG) != "nightly" | ||
arch: amd64 | ||
script: | ||
- | | ||
set +e | ||
VERSION=$TAG | ||
EXISTING_TAG=$(git ls-remote --exit-code origin refs/tags/${VERSION}) | ||
if [[ -n ${EXISTING_TAG} ]]; then | ||
if [[ ${RECREATE_TAGS} == "true" ]]; then | ||
echo "[INFO] Removing tag for ${VERSION} version. New tag will be recreated during release." | ||
git push origin :$VERSION | ||
else | ||
echo "[ERROR] Cannot proceed with release - tag ${EXISTING_TAG} already exists." | ||
exit 1 | ||
fi | ||
else | ||
echo "[INFO] No existing tags detected for $VERSION" | ||
fi | ||
- &release-build | ||
stage: Build images for release version | ||
if: type = api AND env(TAG) != "nightly" | ||
script: | ||
- bash .travis/build_image.sh | ||
name: Build image on amd64 | ||
arch: amd64 | ||
|
||
- <<: *release-build | ||
name: Build image on arm64 | ||
arch: arm64 | ||
|
||
- <<: *release-build | ||
name: Build image on ppc64le | ||
arch: ppc64le | ||
|
||
- <<: *release-build | ||
name: Build image on s390x | ||
arch: s390x | ||
|
||
- stage: Publish multiarch image with release tag | ||
if: type = api AND env(TAG) != "nightly" | ||
script: bash .travis/publish_multiarch.sh | ||
|
||
- stage: Tag release and notify on mattermost | ||
if: type = api AND env(TAG) != "nightly" | ||
script: | ||
- git config --global user.name "Mykhailo Kuznietsov" | ||
- git config --global user.email "[email protected]" | ||
- bash make-release.sh --version $TAG --tag-release $NO_COMMIT | ||
after_success: | ||
- | | ||
set -e | ||
echo "{\"username\":\"che-bot\",\"channel\":\"eclipse-che-releases\",\"text\":\":white_check_mark: Che Machine Exec ${TAG} has been released: https://quay.io/eclipse/che-machine-exec:${TAG}\"}" > mattermost.json | ||
curl -i -X POST -H 'Content-Type: application/json' -d @mattermost.json $MATTERMOST_WEBHOOK_URL | ||
after_failure: | ||
- | | ||
set -e | ||
echo "{\"username\":\"che-bot\",\"channel\":\"eclipse-che-releases\",\"text\":\":no_entry_sign: Che Machine Exec ${TAG} release has failed: https://github.com/eclipse-che/che-machine-exec/actions/workflows/release.yml\"}" > mattermost.json | ||
curl -i -X POST -H 'Content-Type: application/json' -d @mattermost.json $MATTERMOST_WEBHOOK_URL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/bin/bash | ||
set -e | ||
|
||
# Build images | ||
docker build -f build/dockerfiles/Dockerfile -t "${REGISTRY}/${ORGANIZATION}/${IMAGE}:$TAG-${TRAVIS_CPU_ARCH}" . | ||
docker push "${REGISTRY}/${ORGANIZATION}/${IMAGE}:$TAG-${TRAVIS_CPU_ARCH}" | ||
|
||
# Tag image with short_sha in case of nightly build | ||
if [[ "$TAG" == "nightly" ]]; then | ||
docker tag "${REGISTRY}/${ORGANIZATION}/${IMAGE}:$TAG-${TRAVIS_CPU_ARCH}" "${REGISTRY}/${ORGANIZATION}/${IMAGE}:${SHORT_SHA}-${TRAVIS_CPU_ARCH}" | ||
docker push "${REGISTRY}/${ORGANIZATION}/${IMAGE}:${SHORT_SHA}-${TRAVIS_CPU_ARCH}" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#!/bin/bash | ||
|
||
set -e | ||
|
||
# Build che-machine-exec binary and execute unit tests | ||
CGO_ENABLED=0 GOOS=linux go build -mod=vendor -a -ldflags '-w -s' -a -installsuffix cgo -o che-machine-exec . | ||
export CHE_WORKSPACE_ID=test_id | ||
go test ./... -test.v | ||
|
||
# Build image with pr-check tag | ||
docker build -f build/dockerfiles/Dockerfile -t "${REGISTRY}/${ORGANIZATION}/${IMAGE}:pr-check-${TRAVIS_CPU_ARCH}" . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
#!/bin/bash | ||
set -e | ||
|
||
# Create amend with images built on individual architectures | ||
AMEND="" | ||
AMEND+=" --amend ${REGISTRY}/${ORGANIZATION}/${IMAGE}:$TAG-amd64"; | ||
AMEND+=" --amend ${REGISTRY}/${ORGANIZATION}/${IMAGE}:$TAG-arm64"; | ||
AMEND+=" --amend ${REGISTRY}/${ORGANIZATION}/${IMAGE}:$TAG-ppc64le"; | ||
AMEND+=" --amend ${REGISTRY}/${ORGANIZATION}/${IMAGE}:$TAG-s390x"; | ||
|
||
# Create manifest and push multiarch image | ||
docker manifest create "${REGISTRY}/${ORGANIZATION}/${IMAGE}:${TAG}" $AMEND | ||
docker manifest push "${REGISTRY}/${ORGANIZATION}/${IMAGE}:${TAG}" | ||
|
||
if [[ "$TAG" == "nightly" ]]; then | ||
docker manifest create "${REGISTRY}/${ORGANIZATION}/${IMAGE}:${SHORT_SHA}" $AMEND | ||
docker manifest push "${REGISTRY}/${ORGANIZATION}/${IMAGE}:${SHORT_SHA}" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters