From 01079fd8929594136c12dcb77c3ad6f68062e6b8 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 | 94 +++++++++++++++++++++++++++++ .github/workflows/create-issue.yaml | 40 ++++++++++++ .github/workflows/main.yaml | 23 ------- 3 files changed, 134 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/build.yaml 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..5fd1d02 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,94 @@ +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: + # 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.worflow }} **' diff --git a/.github/workflows/create-issue.yaml b/.github/workflows/create-issue.yaml new file mode 100644 index 0000000..9ced5c0 --- /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/${{ env.owner }}/${{ 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