name: Docker on: push: branches: - "master" - "pre-production" tags: - "*" paths-ignore: - ".github/**" - "!.github/workflows/docker.yml" - "!.github/workflows/preview_*.yml" - ".vscode/**" - ".gitignore" - ".gitlab-ci.yml" - "LICENSE" - "README" pull_request: branches: - "master" - "pre-production" paths-ignore: - ".github/**" - "!.github/workflows/docker.yml" - "!.github/workflows/preview_*.yml" - ".vscode/**" - ".gitignore" - ".gitlab-ci.yml" - "LICENSE" - "README" workflow_dispatch: jobs: # test: # runs-on: ubuntu-latest # strategy: # matrix: # architecture: [linux/amd64] # steps: # - name: Checkout # uses: actions/checkout@v2 # with: # submodules: "recursive" # - name: Set up QEMU # uses: docker/setup-qemu-action@v1 # - name: Set up Docker Buildx # uses: docker/setup-buildx-action@v1 # - name: Cache Docker layers # uses: actions/cache@v2 # with: # path: /tmp/.buildx-cache/${{ matrix.architecture }} # key: ${{ runner.os }}-buildx-${{ matrix.architecture }}-${{ github.sha }} # - name: Build # uses: docker/build-push-action@v2 # with: # context: . # platforms: ${{ matrix.architecture }} # cache-from: type=local,src=/tmp/.buildx-cache/${{ matrix.architecture }} # cache-to: type=local,dest=/tmp/.buildx-cache-new/${{ matrix.architecture }},mode=max # - name: Move cache # run: | # rm -rf /tmp/.buildx-cache/${{ matrix.architecture }} # mv /tmp/.buildx-cache-new/${{ matrix.architecture }} /tmp/.buildx-cache/${{ matrix.architecture }} publish: # needs: [test] runs-on: ubuntu-latest if: github.event_name != 'pull_request' steps: - name: Checkout uses: actions/checkout@v2 with: submodules: "recursive" - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Cache amd64 Docker layers uses: actions/cache@v3 with: path: /tmp/.buildx-cache/linux/amd64 key: ${{ runner.os }}-buildx-linux/amd64-${{ github.sha }} - name: Docker meta id: meta uses: docker/metadata-action@v3 with: images: ghcr.io/abronstudio/revolt-revite-pre tags: | type=raw,value=${{ github.sha }} # - name: Login to DockerHub # uses: docker/login-action@v1 # with: # username: ${{ secrets.DOCKERHUB_USERNAME }} # password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to Github Container Registry uses: docker/login-action@v1 with: registry: ghcr.io username: teamabron password: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - name: Build and publish uses: docker/build-push-action@v2 with: context: . push: true platforms: linux/amd64 tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} # cache-from: type=local,src=/tmp/.buildx-cache/linux/amd64 # cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max # - name: Move cache # run: | # rm -rf /tmp/.buildx-cache # mv /tmp/.buildx-cache-new /tmp/.buildx-cache deploy: needs: [publish] runs-on: ubuntu-latest env: CONFIG_BRANCH: main CLONE_DIR: $GITHUB_WORKSPACE/config CONFIG_FILE: $GITHUB_WORKSPACE/config/apps/pepchat/kustomization.yaml if: github.event_name != 'pull_request' steps: - name: Checkout Configuration Repository run: | echo "Cloning configuration repository" mkdir -p $CLONE_DIR git clone -b $CONFIG_BRANCH ${{ secrets.K8_CONFIG_REPO }} $CLONE_DIR - name: Set Up Git Identity run: | cd $CLONE_DIR git config user.email "ci@example.com" git config user.name "CI Bot" - name: Update Image Tag in kustomization.yaml run: | awk -v value=" newTag: ${{ github.sha }}" '{sub(/^ newTag: .*/, value); print}' $CONFIG_FILE > temp.yml && mv temp.yml $CONFIG_FILE awk -v value=" newName: ghcr.io/abronstudio/revolt-revite-pre" '{sub(/^ newName: .*/, value); print}' $CONFIG_FILE > temp.yml && mv temp.yml $CONFIG_FILE - name: Commit & Push Changes run: | cd $CLONE_DIR git add . git commit -am "Update image tag to ${{ github.sha }}" git push origin $CONFIG_BRANCH