diff --git a/.github/workflows/deploy-PROD-slim.yml b/.github/workflows/deploy-PROD-slim.yml new file mode 100644 index 00000000..611579d6 --- /dev/null +++ b/.github/workflows/deploy-PROD-slim.yml @@ -0,0 +1,158 @@ +--- +######################### +######################### +## Deploy Docker Image ## +######################### +######################### + +# +# Documentation: +# https://help.github.com/en/articles/workflow-syntax-for-github-actions +# + +####################################### +# Start the job on all push to master # +####################################### +on: + push: + branches: + - 'master' + - 'main' + +############### +# Set the Job # +############### +jobs: + build: + # Name the Job + name: Deploy Docker Image - PROD - slim + # Set the agent to run on + runs-on: ubuntu-latest + # Only run this on the main repo + if: github.repository == 'github/super-linter' + ################## + # Load all steps # + ################## + steps: + ########################## + # Checkout the code base # + ########################## + - name: Checkout Code + uses: actions/checkout@v2.3.4 + + ######################## + # Get the current date # + ######################## + - name: Get current date + run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_ENV} + + ######################## + # Setup Docker build X # + ######################## + - name: Setup BuildX + uses: docker/setup-buildx-action@v1.3.0 + + ############################### + # Login to DockerHub registry # + ############################### + - name: Login to DockerHub + uses: docker/login-action@v1.9.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + ###################################### + # Login to GitHub Container registry # + ###################################### + - name: Login to GitHub Container Registry + uses: docker/login-action@v1.9.0 + with: + registry: ghcr.io + username: ${{ secrets.GCR_USERNAME }} + password: ${{ secrets.GCR_TOKEN }} + + ######################### + # Update deployment API # + ######################### + - name: Start deployment + uses: bobheadxi/deployments@v0.5.2 + id: deployment + with: + step: start + token: ${{ secrets.GITHUB_TOKEN }} + env: Production-SLIM + + ########################################### + # Build and Push containers to registries # + ########################################### + - name: Build and push - SLIM + uses: docker/build-push-action@v2.4.0 + with: + context: . + file: ./Dockerfile-slim + build-args: | + BUILD_DATE=${{ env.BUILD_DATE }} + BUILD_REVISION=${{ github.sha }} + BUILD_VERSION=${{ github.sha }} + push: true + tags: | + github/super-linter:slim-latest + ghcr.io/github/super-linter:slim-latest + + ####################################################### + # Create a GitHub Issue with the info from this build # + ####################################################### + - name: Create GitHub Issue for failure + if: failure() + uses: actions/github-script@v4.0.2 + id: create-issue + with: + # https://octokit.github.io/rest.js/v18#issues-create + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + const create = await github.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: "Failed to deploy to production", + body: 'Automation has failed us!' + }) + console.log('create', create) + return create.data.number + + ############################ + # Assign admins on failure # + ############################ + - name: Assign Admins on failure + uses: actions/github-script@v4.0.2 + if: failure() + with: + # https://octokit.github.io/rest.js/v18#issues-create + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + github.issues.addAssignees({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: "${{ steps.create-issue.outputs.result }}", + assignees: [ + 'admiralawkbar', + 'jwiebalk', + 'IAmHughes', + 'nemchik', + 'Hanse00', + 'GaboFDC', + 'ferrarimarco' + ] + }) + + ######################### + # Update Deployment API # + ######################### + - name: Update deployment status + uses: bobheadxi/deployments@v0.5.2 + if: always() + with: + step: finish + token: ${{ secrets.GITHUB_TOKEN }} + status: ${{ job.status }} + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + env_url: https://github.com/github/super-linter diff --git a/.github/workflows/deploy-PROD.yml b/.github/workflows/deploy-PROD-standard.yml similarity index 83% rename from .github/workflows/deploy-PROD.yml rename to .github/workflows/deploy-PROD-standard.yml index 66999a5c..3165aa88 100644 --- a/.github/workflows/deploy-PROD.yml +++ b/.github/workflows/deploy-PROD-standard.yml @@ -25,7 +25,7 @@ on: jobs: build: # Name the Job - name: Deploy Docker Image - PROD + name: Deploy Docker Image - PROD - standard # Set the agent to run on runs-on: ubuntu-latest # Only run this on the main repo @@ -99,34 +99,6 @@ jobs: github/super-linter:latest ghcr.io/github/super-linter:latest - ########################### - # Clean the docker daemon # - ########################### - - name: Docker cleanup - run: | - docker images -f dangling=true | \ - tr '[:upper:]' '[:lower:]' | \ - awk '{print $3}' | \ - xargs docker rmi -f - exit 0 - - ########################################### - # Build and Push containers to registries # - ########################################### - - name: Build and push - SLIM - uses: docker/build-push-action@v2.4.0 - with: - context: . - file: ./Dockerfile-slim - build-args: | - BUILD_DATE=${{ env.BUILD_DATE }} - BUILD_REVISION=${{ github.sha }} - BUILD_VERSION=${{ github.sha }} - push: true - tags: | - github/super-linter:slim-latest - ghcr.io/github/super-linter:slim-latest - ####################################################### # Create a GitHub Issue with the info from this build # ####################################################### diff --git a/.github/workflows/deploy-RELEASE-slim.yml b/.github/workflows/deploy-RELEASE-slim.yml new file mode 100644 index 00000000..a1125059 --- /dev/null +++ b/.github/workflows/deploy-RELEASE-slim.yml @@ -0,0 +1,142 @@ +--- +################################# +################################# +## Deploy Release Docker Image ## +################################# +################################# + +# +# Documentation: +# https://help.github.com/en/articles/workflow-syntax-for-github-actions +# + +####################################### +# Start the job on all push to master # +####################################### +on: + # Start when a pull request is opened + issues: + types: ['opened'] + +############### +# Set the Job # +############### +jobs: + deploy: + # Name the Job + name: Deploy Docker Image - Release - slim + # Set the agent to run on + runs-on: ubuntu-latest + + ##################################################################### + # Only run if Admin start job and it was the Release Issue template # + ##################################################################### + if: contains(github.event.issue.title, 'Super-Linter Release:') && + github.actor == 'admiralawkbar' || github.actor == 'jwiebalk' || + github.actor == 'IAmHughes' || github.actor == 'nemchik' || + github.actor == 'Hanse00' || github.actor == 'github-actions' || + github.actor == 'GaboFDC' || github.actor == 'ferrarimarco' + + ################## + # Load all steps # + ################## + steps: + ########################## + # Checkout the code base # + ########################## + - name: Checkout Code + uses: actions/checkout@v2.3.4 + + ####################################################### + # Create a GitHub Issue with the info from this build # + ####################################################### + - name: Update GitHub Issue + uses: actions/github-script@v4.0.2 + id: update-issue + with: + # https://octokit.github.io/rest.js/v18#issues-create + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + github.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: "${{ github.event.issue.number }}", + title: "Deploying slim Super-Linter Release to Production", + body: 'Currently deploying the Release...' + }) + + ######################### + # Update deployment API # + ######################### + - name: Start deployment + uses: bobheadxi/deployments@v0.5.2 + id: deployment + with: + step: start + token: ${{ secrets.GITHUB_TOKEN }} + env: Release-SLIM + + ######################## + # Get the current date # + ######################## + - name: Get current date + run: echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_ENV} + + ######################## + # Setup Docker build X # + ######################## + - name: Setup BuildX + uses: docker/setup-buildx-action@v1.3.0 + + ############################### + # Login to DockerHub registry # + ############################### + - name: Login to DockerHub + uses: docker/login-action@v1.9.0 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + ###################################### + # Login to GitHub Container registry # + ###################################### + - name: Login to GitHub Container Registry + uses: docker/login-action@v1.9.0 + with: + username: ${{ secrets.GCR_USERNAME }} + password: ${{ secrets.GCR_TOKEN }} + registry: ghcr.io + + ########################################### + # Build and Push containers to registries # + ########################################### + - name: Build and push - SLIM + uses: docker/build-push-action@v2.4.0 + with: + context: . + file: ./Dockerfile-slim + build-args: | + BUILD_DATE=${{ env.BUILD_DATE }} + BUILD_REVISION=${{ github.sha }} + BUILD_VERSION=${{ github.sha }} + push: true + tags: | + github/super-linter:slim-latest + github/super-linter:slim-v4 + github/super-linter:slim-${{ env.RELEASE_VERSION }} + ghcr.io/github/super-linter:slim-latest + ghcr.io/github/super-linter:slim-v4 + ghcr.io/github/super-linter:slim-${{ env.RELEASE_VERSION }} + + ######################### + # Update Deployment API # + ######################### + - name: Update deployment status + uses: bobheadxi/deployments@v0.5.2 + if: always() + with: + step: finish + token: ${{ secrets.GITHUB_TOKEN }} + status: ${{ job.status }} + deployment_id: ${{ steps.deployment.outputs.deployment_id }} + env_url: https://github.com/github/super-linter/releases/tag/${{ env.RELEASE_VERSION }} diff --git a/.github/workflows/deploy-RELEASE.yml b/.github/workflows/deploy-RELEASE-standard.yml similarity index 86% rename from .github/workflows/deploy-RELEASE.yml rename to .github/workflows/deploy-RELEASE-standard.yml index 7b974251..f2b0d4d6 100644 --- a/.github/workflows/deploy-RELEASE.yml +++ b/.github/workflows/deploy-RELEASE-standard.yml @@ -24,7 +24,7 @@ on: jobs: deploy: # Name the Job - name: Deploy Docker Image - Release + name: Deploy Docker Image - Release - standard # Set the agent to run on runs-on: ubuntu-latest @@ -61,7 +61,7 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, issue_number: "${{ github.event.issue.number }}", - title: "Deploying Super-Linter Release to Production", + title: "Deploying Super-Linter standard Release to Production", body: 'Currently deploying the Release...' }) @@ -144,38 +144,6 @@ jobs: ghcr.io/github/super-linter:v4 ghcr.io/github/super-linter:${{ env.RELEASE_VERSION }} - ########################### - # Clean the docker daemon # - ########################### - - name: Docker cleanup - run: | - docker images -f dangling=true | \ - tr '[:upper:]' '[:lower:]' | \ - awk '{print $3}' | \ - xargs docker rmi -f - exit 0 - - ########################################### - # Build and Push containers to registries # - ########################################### - - name: Build and push - SLIM - uses: docker/build-push-action@v2.4.0 - with: - context: . - file: ./Dockerfile-slim - build-args: | - BUILD_DATE=${{ env.BUILD_DATE }} - BUILD_REVISION=${{ github.sha }} - BUILD_VERSION=${{ github.sha }} - push: true - tags: | - github/super-linter:slim-latest - github/super-linter:slim-v4 - github/super-linter:slim-${{ env.RELEASE_VERSION }} - ghcr.io/github/super-linter:slim-latest - ghcr.io/github/super-linter:slim-v4 - ghcr.io/github/super-linter:slim-${{ env.RELEASE_VERSION }} - ######################## # Get the current date # ########################