diff --git a/.circleci/config.yml b/.circleci/config.yml index fea59ac..67d1b59 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,9 +1,7 @@ version: 2.1 + jobs: - build: - working_directory: ~/repo - docker: - - image: circleci/golang:1.16.7 + build-latest: steps: - checkout - restore_cache: @@ -43,13 +41,98 @@ jobs: go get github.com/tcnksm/ghr ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -replace $CIRCLE_TAG ~/repo/dist fi + working_directory: ~/repo + docker: + - image: cimg/go:1.17 + build-116: # just to validate compatibility with minimum go version + steps: + - checkout + - restore_cache: + keys: + - go-mod-v4-{{ checksum "go.sum" }} + - run: + name: Install Dependencies + command: | + make dep + - save_cache: + key: go-mod-v4-{{ checksum "go.sum" }} + paths: + - "/go/pkg/mod" + - run: + name: Build AMD64 + command: | + VERSION=$CIRCLE_BRANCH + if [ ! -z "${CIRCLE_TAG}" ]; then VERSION=$CIRCLE_TAG; fi + make ENV_BUILD_IDENTIFIER=$VERSION ENV_BUILD_VERSION=$(echo $CIRCLE_SHA1 | cut -c1-7) build + working_directory: ~/repo116 + docker: + - image: cimg/go:1.16 + build-legacy: + steps: + - checkout + - restore_cache: + keys: + - go-mod-v4-{{ checksum "go.sum" }} + - run: + name: Install Dependencies + command: | + make dep + - save_cache: + key: go-mod-v4-{{ checksum "go.sum" }} + paths: + - "/go/pkg/mod" + - run: + name: Build AMD64 + command: | + VERSION=$CIRCLE_BRANCH + if [ ! -z "${CIRCLE_TAG}" ]; then VERSION=$CIRCLE_TAG; fi + make ENV_BUILD_IDENTIFIER=$VERSION ENV_BUILD_VERSION=$(echo $CIRCLE_SHA1 | cut -c1-7) build + - run: + name: Install Cross-Platform Dependencies + command: | + sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install gcc-arm-linux-gnueabi libc6-dev-armel-cross gcc-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross + sudo ln -s /usr/include/asm-generic /usr/include/asm + - run: + name: Build ARM + command: | + VERSION=$CIRCLE_BRANCH + if [ ! -z "${CIRCLE_TAG}" ]; then VERSION=$CIRCLE_TAG; fi + make ENV_BUILD_IDENTIFIER=$VERSION ENV_BUILD_VERSION=$(echo $CIRCLE_SHA1 | cut -c1-7) build-cross-plat + - store_artifacts: + path: ~/repolegacy/dist + - run: + name: "Publish Legacy Release on GitHub" + command: | + rm ~/repolegacy/dist/wg-portal.service ~/repolegacy/dist/wg-portal.env + mv ~/repolegacy/dist/wg-portal-amd64 ~/repolegacy/dist/wg-portal-amd64-legacy + mv ~/repolegacy/dist/wg-portal-arm ~/repolegacy/dist/wg-portal-arm-legacy + mv ~/repolegacy/dist/wg-portal-arm64 ~/repolegacy/dist/wg-portal-arm64-legacy + if [ ! -z "${CIRCLE_TAG}" ]; then + go get github.com/tcnksm/ghr + ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} $CIRCLE_TAG ~/repolegacy/dist + fi + working_directory: ~/repolegacy + docker: + - image: circleci/golang:1.16-stretch + workflows: build-and-release: jobs: #--------------- BUILD ---------------# - - build: - name: build + - build-latest: + filters: + tags: + only: /^v.*/ + - build-116: + requires: + - build-latest + filters: + tags: + only: /^v.*/ + - build-legacy: + requires: + - build-latest filters: tags: only: /^v.*/ \ No newline at end of file