From 7a1c19adafb4155cdba80bce8dda5fc7ab31b985 Mon Sep 17 00:00:00 2001 From: Nischal Shakya Date: Thu, 9 May 2024 22:10:25 +0545 Subject: [PATCH] Add re-usable workflow --- .github/workflows/build.yaml | 93 +++++++++++++++++++++++++++++ .github/workflows/build.yml | 78 ------------------------ .github/workflows/create-issue.yaml | 40 +++++++++++++ .github/workflows/main.yaml | 23 ------- 4 files changed, 133 insertions(+), 101 deletions(-) create mode 100644 .github/workflows/build.yaml delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/create-issue.yaml delete mode 100644 .github/workflows/main.yaml diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..8c428e8 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,93 @@ +name: CI + +on: + push: + branches: + - dev + +jobs: + # build: + # name: Build Golang project + # runs-on: ubuntu-latest + + # steps: + # - uses: actions/checkout@v4 + + # - name: Setup Golang 1.21 + # uses: actions/setup-go@v5 + # with: + # go-version: '>=1.21.6' + + # - name: Build project + # run: go build ./cmd/web + + # - name: Upload Artifact + # uses: actions/upload-artifact@v4 + # with: + # name: web.zip + # path: ./ + + # deploy-dev: + # permissions: + # contents: write + # needs: [build] + # if: ${{ github.ref == 'refs/heads/dev' }} + + # runs-on: ubuntu-latest + # environment: + # name: dev + # url: https://github.com/${{ github.repository }}/releases/tag/v${{ vars.DEV_VERSION }} + + # steps: + # - name: Download candidate artifacts + # uses: actions/download-artifact@v4 + # with: + # name: web.zip + + # - name: Release to dev + # uses: softprops/action-gh-release@v2 + # with: + # tag_name: v${{ vars.DEV_VERSION }} + # prerelease: true + # draft: true + # name: dev + # files: web + + # deploy-prod: + # permissions: + # contents: write + # needs: [build] + # if: ${{ github.ref == 'refs/heads/main' }} + + # runs-on: ubuntu-latest + # environment: + # name: production + # url: https://github.com/${{ github.repository }}/releases/tag/v${{ vars.PROD_VERSION }} + + # steps: + # - name: Download candidate artifacts + # uses: actions/download-artifact@v4 + # with: + # name: web.zip + + # - name: GH Release + # uses: softprops/action-gh-release@v2 + # with: + # tag_name: v${{ vars.PROD_VERSION }} + # generate_release_notes: true + # name: Production + # files: web + + build-fail: + runs-on: ubuntu-latest + + steps: + - run: exit 1 + + create-issue-on-failure: + needs: [build-fail] + if: always() && failure() + uses: ./.github/workflows/create-issue.yaml + with: + title: 'Automated workflow failure issue for commit ${{ github.sha }}' + body: 'This issue was automatically created by Github Action workflow ** ${{ github.workflow }} **' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 8241a09..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: CI - -on: - push: - branches: - - main - - dev - -jobs: - build: - name: Build Golang project - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Setup Golang 1.21 - uses: actions/setup-go@v5 - with: - go-version: '>=1.21.6' - - - name: Build project - run: go build ./cmd/web - - - name: Upload Artifact - uses: actions/upload-artifact@v4 - with: - name: web.zip - path: ./ - - deploy-dev: - permissions: - contents: write - needs: [build] - if: ${{ github.ref == 'refs/heads/dev' }} - - runs-on: ubuntu-latest - environment: - name: dev - url: https://github.com/${{ github.repository }}/releases/tag/v${{ vars.DEV_VERSION }} - - steps: - - name: Download candidate artifacts - uses: actions/download-artifact@v4 - with: - name: web.zip - - - name: Release to dev - uses: softprops/action-gh-release@v2 - with: - tag_name: v${{ vars.DEV_VERSION }} - prerelease: true - draft: true - name: dev - files: web - - deploy-prod: - needs: [build] - if: ${{ github.ref == 'refs/heads/main' }} - - runs-on: ubuntu-latest - environment: - name: production - url: https://github.com/${{ github.repository }}/releases/tag/v${{ vars.PROD_VERSION }} - - steps: - - name: Download candidate artifacts - uses: actions/download-artifact@v4 - with: - name: web.zip - - - name: GH Release - uses: softprops/action-gh-release@v2 - with: - tag_name: v${{ vars.PROD_VERSION }} - generate_release_notes: true - name: Production - files: web diff --git a/.github/workflows/create-issue.yaml b/.github/workflows/create-issue.yaml new file mode 100644 index 0000000..b4f8d67 --- /dev/null +++ b/.github/workflows/create-issue.yaml @@ -0,0 +1,40 @@ +name: create-failure-issue + +on: + workflow_call: + inputs: + title: + required: true + type: string + body: + required: true + type: string + workflow_dispatch: + inputs: + title: + required: true + description: 'Issue title' + body: + required: true + description: 'Issue body' + +jobs: + create_issue_on_failure: + runs-on: ubuntu-latest + env: + owner: Nischal2015 + + permissions: + issues: write + steps: + - name: Create issue using REST API + run: | + curl --request POST \ + --url https://api.github.com/repos/${{ github.repository }}/issues \ + --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \ + --header 'content-type: application/json' \ + --data '{ + "title": "Failure: ${{ inputs.title }}", + "body": "Details: ${{ inputs.body }}" + }' \ + --fail diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml deleted file mode 100644 index 98e6b25..0000000 --- a/.github/workflows/main.yaml +++ /dev/null @@ -1,23 +0,0 @@ -name: Main - -on: - push: - branches: - - main - -jobs: - setup_go: - name: Setup golang - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Golang environment - uses: actions/setup-go@v5 - with: - go-version: '>1.17.0' - - - name: Print go version - run: go version