diff --git a/.github/workflows/zitadel-pr.yml b/.github/workflows/zitadel-pr.yml new file mode 100644 index 000000000..a322470c5 --- /dev/null +++ b/.github/workflows/zitadel-pr.yml @@ -0,0 +1,233 @@ +name: ZITADEL PR +on: + pull_request: + branches: + - '**' + +env: + REGISTRY: ghcr.io + NODE_VERSION: '12' + GO_VERSION: '1.15' + OPERATOR_IMAGE_NAME: ${{ github.repository }}-operator + CRDB_IMAGE_NAME: ${{ github.repository }}-crbackup + ARTIFACTS_FOLDER: './artifacts' + +jobs: + refs: + name: Prepare CI Vars + runs-on: ubuntu-18.04 + outputs: + sha_short: ${{ steps.refs.outputs.sha_short }} + short_ref: ${{ steps.refs.outputs.short_ref }} + version: ${{ steps.refs.outputs.version }} + steps: + - name: Source checkout + uses: actions/checkout@v2 + - name: Semantic Release + id: semantic + uses: cycjimmy/semantic-release-action@v2 + with: + dry_run: true + semantic_version: 17.0.4 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Set outputs + id: refs + run: | + export BRANCH=${GITHUB_REF#refs/*/} + echo "branch: ${BRANCH}" + + export BRANCHTRANSLATED=$(echo ${BRANCH} | tr '/' '_') + echo "short_ref: ${BRANCHTRANSLATED}" + + export VERSION="" + if ${{ steps.semantic.outputs.new_release_published == 'true' }}; then + export VERSION=${{ steps.semantic.outputs.new_release_version }} + else + export VERSION=${BRANCHTRANSLATED} + fi + echo "New semantic release: ${{ steps.semantic.outputs.new_release_published }}" + echo "version: ${VERSION}" + + echo "::set-output name=short_ref::${BRANCHTRANSLATED}" + echo "::set-output name=sha_short::SHA-$(git rev-parse --short=12 HEAD)" + echo "::set-output name=version::${VERSION}" + + zitadel-image: + name: Build ZITADEL + needs: refs + runs-on: ubuntu-18.04 + steps: + - name: Source checkout + uses: actions/checkout@v2 + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-zitadel-${{ hashFiles('**/go.sum', 'console/package-lock.json', 'build/dockerfile') }} + restore-keys: | + ${{ runner.os }}-zitadel- + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ${{ env.REGISTRY }} + - run: ls -la + - uses: docker/build-push-action@v2 + with: + context: . + file: ./build/dockerfile + platforms: linux/amd64 + tags: ${{ env.REGISTRY }}/${{ github.repository }}:${{ needs.refs.outputs.sha_short }},${{ env.REGISTRY }}/${{ github.repository }}:${{ needs.refs.outputs.short_ref }} + push: false + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new + - uses: docker/build-push-action@v2 + with: + context: . + file: ./build/dockerfile + platforms: linux/amd64 + tags: ${{ env.REGISTRY }}/${{ github.repository }}:coverage + push: false + cache-from: type=local,src=/tmp/.buildx-cache-new + target: go-codecov + outputs: type=local,dest=/tmp/zitadel + - uses: codecov/codecov-action@v1 + with: + files: /tmp/zitadel/profile.cov + name: codecov-go + - + # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + operator-image: + needs: refs + runs-on: ubuntu-18.04 + name: Build ZITADEL Operator ${{ matrix.goos }}-${{ matrix.goarch }} + strategy: + matrix: + goos: [ 'linux', 'darwin', 'windows' ] + goarch: [ 'amd64' ] + steps: + - name: Source checkout + uses: actions/checkout@v2 + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ matrix.goos }}-${{ matrix.goarch }}-operator-image-${{ hashFiles('**/go.sum', 'build/operator/Dockerfile') }} + restore-keys: | + ${{ matrix.goos }}-${{ matrix.goarch }}-operator-image- + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ${{ env.REGISTRY }} + - uses: docker/build-push-action@v2 + name: onlybuild + with: + context: . + file: ./build/operator/Dockerfile + platforms: linux/amd64 + tags: ${{ env.REGISTRY }}/${{ env.OPERATOR_IMAGE_NAME }}:${{ needs.refs.outputs.sha_short }},${{ env.REGISTRY }}/${{ env.OPERATOR_IMAGE_NAME }}:${{ needs.refs.outputs.short_ref }} + push: false + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-new + outputs: type=local,dest=/tmp/operator + build-args: | + OS=${{ matrix.goos }} + ARCH=${{ matrix.goarch }} + VERSION=${{ needs.refs.outputs.version }} + GITHUBOAUTHCLIENTID=${{ secrets.GITHUBOAUTHCLIENTID }} + GITHUBOAUTHCLIENTSECRET=${{ secrets.GITHUBOAUTHCLIENTSECRET }} + - shell: bash + run: | + mv /tmp/operator/zitadelctl /tmp/operator/zitadelctl-${{ matrix.goos }}-${{ matrix.goarch }} + - uses: actions/upload-artifact@v2 + with: + name: zitadelctl-${{ matrix.goos }}-${{ matrix.goarch }} + path: /tmp/operator/zitadelctl-${{ matrix.goos }}-${{ matrix.goarch }} + - uses: docker/build-push-action@v2 + if: ${{ matrix.goos == 'linux' && matrix.goarch == 'amd64' }} + name: buildandpush + with: + context: . + file: ./build/operator/Dockerfile + platforms: linux/amd64 + tags: ${{ env.REGISTRY }}/${{ env.OPERATOR_IMAGE_NAME }}:${{ needs.refs.outputs.sha_short }},${{ env.REGISTRY }}/${{ env.OPERATOR_IMAGE_NAME }}:${{ needs.refs.outputs.short_ref }} + push: false + cache-from: type=local,src=/tmp/.buildx-cache-new + build-args: | + OS=${{ matrix.goos }} + ARCH=${{ matrix.goarch }} + VERSION=${{ needs.refs.outputs.version }} + - uses: docker/build-push-action@v2 + with: + context: . + file: ./build/operator/Dockerfile + platforms: linux/amd64 + tags: ${{ env.REGISTRY }}/${{ github.repository }}:coverage + push: false + cache-from: type=local,src=/tmp/.buildx-cache-new + target: go-codecov + outputs: type=local,dest=/tmp/operator + - uses: codecov/codecov-action@v1 + with: + files: /tmp/operator/profile.cov + name: codecov-go + - + # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + + crdb-image: + name: Build CockroachDB Image + needs: refs + runs-on: ubuntu-18.04 + steps: + - name: Source checkout + uses: actions/checkout@v2 + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-crdb-image-${{ hashFiles('build/cr-backup/Dockerfile') }} + restore-keys: | + ${{ runner.os }}-crdb-image- + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + registry: ${{ env.REGISTRY }} + - uses: docker/build-push-action@v2 + name: buildandpush + with: + context: . + file: ./build/cr-backup/Dockerfile + platforms: linux/amd64 + tags: ${{ env.REGISTRY }}/${{ env.CRDB_IMAGE_NAME }}:${{ needs.refs.outputs.sha_short }},${{ env.REGISTRY }}/${{ env.CRDB_IMAGE_NAME }}:${{ needs.refs.outputs.short_ref }} + push: false + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,mode=max,dest=/tmp/.buildx-cache diff --git a/.github/workflows/zitadel.yml b/.github/workflows/zitadel.yml index 35871c3b8..52e3016cc 100644 --- a/.github/workflows/zitadel.yml +++ b/.github/workflows/zitadel.yml @@ -2,12 +2,9 @@ name: ZITADEL Release on: push: branches: - - '**' + - 'main' tags-ignore: - '**' - pull_request: - branches: - - '**' env: REGISTRY: ghcr.io