From 33b8aaa141adddce97881ff1a199b5279fd998f7 Mon Sep 17 00:00:00 2001 From: Brett Logan Date: Fri, 23 Dec 2022 20:26:05 -0500 Subject: [PATCH] Create deployment workflow Signed-off-by: Brett Logan --- .github/workflows/cd.yml | 96 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .github/workflows/cd.yml diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 00000000..17c39f72 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,96 @@ +name: Publish Image + +on: + push: + branches: + - main + +jobs: + test: + name: Build and Test + runs-on: ubuntu-20.04-8core-sl + permissions: + contents: read + deployments: write + issues: write + packages: write + strategy: + fail-fast: false + matrix: + images: + - environment: Production-SLIM + prefix: slim- + target: slim + - environment: Production + prefix: "" + image-id: standard + timeout-minutes: 60 + steps: + - name: Checkout Code + uses: actions/checkout@v3 + + - name: Retrieve Datetime + run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "${GITHUB_ENV}" + + - name: Login to Docker Hub + uses: docker/login-action@v2.1.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Login to GHCR + uses: docker/login-action@v2.1.0 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Start ${{ matrix.images.environment }} Deployment + uses: bobheadxi/deployments@v1.3.0 + id: deployment + with: + step: start + token: ${{ secrets.GITHUB_TOKEN }} + env: ${{ matrix.images.environment }} + + - name: Build and Push Image + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile + build-args: | + BUILD_DATE=${{ env.BUILD_DATE }} + BUILD_REVISION=${{ github.sha }} + BUILD_VERSION=${{ github.sha }} + load: false + push: true + tags: | + github/super-linter:${{ matrix.images.prefix }}latest + ghcr.io/github/super-linter:${{ matrix.images.prefix }}latest + target: "${{ matrix.images.target }}" + + - name: Update the deployment status for the ${{ matrix.images.deployment-environment-identifier }} environment + uses: bobheadxi/deployments@v1.3.0 + with: + step: finish + token: ${{ secrets.GITHUB_TOKEN }} + status: ${{ job.status }} + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + env: ${{ steps.deployment.outputs.env }} + env_url: https://github.com/github/super-linter + + - name: Create Issue on Failure + if: failure() + uses: actions/github-script@v6 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const create = await github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: "Failed to deploy to production", + body: "Automation has failed us!\nMore information can be found at:\n - ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" + assignees: [ + "lindluni" + ] + })