From f773c45b5593a0e2e450cc6a3bc0f0569616a36e Mon Sep 17 00:00:00 2001 From: Arthur Le Roux Date: Mon, 13 Nov 2023 13:09:14 +0100 Subject: [PATCH] feat: add ci --- .github/dependabot.yaml | 16 ++++ .github/workflows/build_release.yaml | 126 +++++++++++++++++++++++++++ .github/workflows/compliance.yaml | 22 +++++ .github/workflows/lint.yaml | 33 +++++++ 4 files changed, 197 insertions(+) create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/build_release.yaml create mode 100644 .github/workflows/compliance.yaml create mode 100644 .github/workflows/lint.yaml diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..7e0ca52 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,16 @@ +version: 2 +updates: + - package-ecosystem: "gomod" + directory: "/" + schedule: + interval: "weekly" + labels: + - "dependencies" + - "bot" + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + labels: + - "dependencies" + - "bot" \ No newline at end of file diff --git a/.github/workflows/build_release.yaml b/.github/workflows/build_release.yaml new file mode 100644 index 0000000..984ae24 --- /dev/null +++ b/.github/workflows/build_release.yaml @@ -0,0 +1,126 @@ +name: Build and release + +on: + push: + branches: + - main + tags: + - 'v*.*.*' + pull_request: + branches: + - main + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + BINARY_NAME: druid-tasks-exporter + +jobs: + golang: + name: Golang + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-22.04 + include: + - os: ubuntu-22.04 + platform: linux + arch: amd64 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: '1.21.4' + + - name: Build + env: + GOOS: ${{ matrix.platform }} + GOARCH: ${{ matrix.arch }} + run: go build -o ${{ env.BINARY_NAME }} + + - name: Upload artifacts + uses: actions/upload-artifact@v3 + with: + name: ${{ env.BINARY_NAME }}-${{ matrix.platform }}-${{ matrix.arch }} + path: ${{ env.BINARY_NAME }} + if-no-files-found: error + + container: + name: Containerfile + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-22.04 + include: + - os: ubuntu-22.04 + platform: linux + arch: amd64 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata + uses: docker/metadata-action@v5 + id: metadata + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build image + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile + push: ${{ github.event_name != 'pull_request' }} + platforms: ${{ matrix.platform }}/${{ matrix.arch }} + tags: ${{ steps.metadata.outputs.tags }} + labels: ${{ steps.metadata.outputs.labels }} + + release: + runs-on: ubuntu-22.04 + needs: + - golang + - container + if: startsWith(github.ref, 'refs/tags/') + steps: + - name: Download artifacts + uses: actions/download-artifact@v3 + + - name: Package + run: | + for folder in ./*; do + if [ -d "$folder" ]; then + echo "Processing folder: $folder" + cd $folder + tar -czf ../$folder.tar.gz -T <(\ls -1) + cd .. + sha256sum $folder.tar.gz > $folder.tar.gz.sha256 + fi + done + + - name: Release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: '*.tar.gz*' + tag: ${{ github.ref }} + file_glob: true \ No newline at end of file diff --git a/.github/workflows/compliance.yaml b/.github/workflows/compliance.yaml new file mode 100644 index 0000000..e605294 --- /dev/null +++ b/.github/workflows/compliance.yaml @@ -0,0 +1,22 @@ +name: Compliance + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + commit: + name: Commit + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Conventional commit check + uses: cocogitto/cocogitto-action@v3.5 \ No newline at end of file diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..c8fbbb7 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,33 @@ +name: Lint + +on: + pull_request: + branches: + - main + +jobs: + golang: + name: Golang + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: '1.21.4' + + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: v1.54 + + container: + name: Dockerfile + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - uses: hadolint/hadolint-action@v3.1.0 + with: + dockerfile: Dockerfile \ No newline at end of file