diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 00000000..1f1e0d8a --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,51 @@ +# yaml-language-server: $schema=https://json.schemastore.org/dependabot-2.0.json +version: 2 +updates: + # NuGet packages + - package-ecosystem: nuget + target-branch: "master" + directory: / + schedule: + interval: weekly + open-pull-requests-limit: 10 + commit-message: + prefix: "deps" + groups: + opentelemetry: + patterns: + - "OpenTelemetry*" + microsoft: + patterns: + - "Microsoft.*" + aws: + patterns: + - "AWSSDK.*" + patch: + update-types: + - patch + + # Docker dependencies + - package-ecosystem: docker + target-branch: "master" + directory: /MergerService + schedule: + interval: weekly + commit-message: + prefix: "docker" + + - package-ecosystem: docker + target-branch: "master" + directory: /MergerCli + schedule: + interval: weekly + commit-message: + prefix: "docker" + + # GitHub Actions + - package-ecosystem: github-actions + target-branch: "master" + directory: / + schedule: + interval: weekly + commit-message: + prefix: "ci" diff --git a/.github/workflows/build_and_push.yml b/.github/workflows/build_and_push.yml index 160a780c..ce082697 100644 --- a/.github/workflows/build_and_push.yml +++ b/.github/workflows/build_and_push.yml @@ -1,62 +1,89 @@ -name: Match chart version and push to ACR +name: Build and push artifacts on: push: tags: - - '*' - + - "v*" workflow_dispatch: inputs: version: required: false type: string -env: - HELM_EXPERIMENTAL_OCI: 1 - -permissions: - contents: write - pull-requests: write - jobs: - build_and_push_docker: + build_and_push: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: azure/docker-login@v1 + - name: Artifactory Login + uses: MapColonies/shared-workflows/actions/artifactory-login@artifactory-login-v1.0.0 with: - login-server: ${{ secrets.ACR_URL }} + registry: ${{ secrets.ACR_URL }} username: ${{ secrets.ACR_PUSH_USER }} password: ${{ secrets.ACR_PUSH_TOKEN }} - - name: Build service docker image - run: docker build --build-arg VERSION=${{ github.ref_name }} -t ${{ secrets.ACR_URL }}/tiles-merger-service:${{ github.ref_name }} -f MergerService/Dockerfile . - - name: Push service docker image - run: docker push ${{ secrets.ACR_URL }}/tiles-merger-service:${{ github.ref_name }} - - name: Build CLI docker image - run: docker build --build-arg VERSION=${{ github.ref_name }} -t ${{ secrets.ACR_URL }}/tiles-merger-cli:${{ github.ref_name }} -f MergerCli/Dockerfile . - - name: Push CLI docker image - run: docker push ${{ secrets.ACR_URL }}/tiles-merger-cli:${{ github.ref_name }} - - update_service_artifact: - uses: MapColonies/shared-workflows/.github/workflows/update-artifacts-file.yaml@v2 - secrets: inherit - with: - type: docker - scope: raster - artifact-name: tiles-merger-service - artifact-tag: ${{ github.ref_name }} - - update_cli_artifact: - uses: MapColonies/shared-workflows/.github/workflows/update-artifacts-file.yaml@v2 - secrets: inherit - with: - type: docker - scope: raster - artifact-name: tiles-merger-cli - artifact-tag: ${{ github.ref_name }} - - build_and_push_helm: - uses: MapColonies/shared-workflows/.github/workflows/build-and-push-helm.yaml@v2 - secrets: inherit - with: - scope: raster + + - name: Build Service Docker Image + id: build-service + uses: MapColonies/shared-workflows/actions/build-docker@build-docker-v1.1.0 + with: + domain: raster + registry: ${{ secrets.ACR_URL }} + dockerfile: MergerService/Dockerfile + image_name: tiles-merger-service + + - name: Push Service Docker Image + uses: MapColonies/shared-workflows/actions/push-docker@push-docker-v1.0.1 + with: + image_name: ${{ steps.build-service.outputs.docker_image_full_name }} + image_tag: ${{ steps.build-service.outputs.docker_image_tag }} + + - name: Build CLI Docker Image + id: build-cli + uses: MapColonies/shared-workflows/actions/build-docker@build-docker-v1.1.0 + with: + domain: raster + registry: ${{ secrets.ACR_URL }} + dockerfile: MergerCli/Dockerfile + image_name: tiles-merger-cli + + - name: Push CLI Docker Image + uses: MapColonies/shared-workflows/actions/push-docker@push-docker-v1.0.1 + with: + image_name: ${{ steps.build-cli.outputs.docker_image_full_name }} + image_tag: ${{ steps.build-cli.outputs.docker_image_tag }} + + - name: Build and Push Helm Chart + uses: MapColonies/shared-workflows/actions/build-and-push-helm@build-and-push-helm-v1.0.1 + with: + context: ./helm + domain: raster + registry: ${{ secrets.ACR_URL }} + + - name: Update Artifacts File - Service Docker + uses: MapColonies/shared-workflows/actions/update-artifacts-file@update-artifacts-file-v1.1.1 + with: + domain: raster + artifact_name: tiles-merger-service + artifact_tag: ${{ github.ref_name }} + type: docker + registry: ${{ secrets.ACR_URL }} + github_token: ${{ secrets.GH_PAT }} + + - name: Update Artifacts File - CLI Docker + uses: MapColonies/shared-workflows/actions/update-artifacts-file@update-artifacts-file-v1.1.1 + with: + domain: raster + artifact_name: tiles-merger-cli + artifact_tag: ${{ github.ref_name }} + type: docker + registry: ${{ secrets.ACR_URL }} + github_token: ${{ secrets.GH_PAT }} + + - name: Update Artifacts File -Service Helm + uses: MapColonies/shared-workflows/actions/update-artifacts-file@update-artifacts-file-v1.1.1 + with: + domain: raster + artifact_name: ${{ github.event.repository.name }} + artifact_tag: ${{ github.ref_name }} + type: helm + registry: ${{ secrets.ACR_URL }} + github_token: ${{ secrets.GH_PAT }} diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 32c67301..c0696dea 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -1,20 +1,34 @@ -name: "Pull Request" - +name: pull_request on: [pull_request] jobs: + helm-lint: + name: Run Helm lint Check + runs-on: ubuntu-latest + + steps: + - name: Check out Git repository + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Helm Lint Checks + uses: MapColonies/shared-workflows/actions/helm-lint@helm-lint-v1 + tests: name: Run Tests runs-on: ubuntu-latest + strategy: matrix: - dotnet-version: ['6.0.x' ] + dotnet-version: ["6.0.x"] + steps: - name: Check out Git repository - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Setup .NET Core SDK ${{ matrix.dotnet-version }} - uses: actions/setup-dotnet@v2 + uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ matrix.dotnet-version }} @@ -25,18 +39,35 @@ jobs: run: dotnet build --configuration Release --no-restore - name: Run tests - run: dotnet test --no-restore --verbosity normal + run: dotnet test --no-restore --verbosity normal --logger "trx;LogFileName=test-results.trx" --results-directory ./TestResults - build_image: - name: Build Image + - name: Upload test results + uses: actions/upload-artifact@v4 + if: always() + with: + name: Test Results ${{ matrix.dotnet-version }} + path: ./TestResults/** + + build_docker_image: + name: Build Docker Images runs-on: ubuntu-latest steps: - name: Check out Git repository - uses: actions/checkout@v2 + uses: actions/checkout@v6 - - name: build service docker image - run: docker build --no-cache -t test-build-service:latest -f MergerService/Dockerfile . + - name: Build Service Docker image + uses: docker/build-push-action@v6 + with: + context: . + file: MergerService/Dockerfile + push: false + tags: test-build-service:latest - - name: build cli docker image - run: docker build --no-cache -t test-build-cli:latest -f MergerCli/Dockerfile . + - name: Build CLI Docker image + uses: docker/build-push-action@v6 + with: + context: . + file: MergerCli/Dockerfile + push: false + tags: test-build-cli:latest diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml new file mode 100644 index 00000000..8dbc55b5 --- /dev/null +++ b/.github/workflows/release-please.yml @@ -0,0 +1,21 @@ +name: Release Please + +on: + push: + branches: + - master + +permissions: + contents: write + pull-requests: write + +jobs: + release-please: + runs-on: ubuntu-latest + outputs: + release_created: ${{ steps.release.outputs.release_created }} + tag_name: ${{ steps.release.outputs.tag_name }} + steps: + - uses: googleapis/release-please-action@v4 + with: + token: ${{ secrets.GH_PAT }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 00000000..9ea0cbc2 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "2.1.7" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 00000000..d1ec716e --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "release-type": "simple", + "include-component-in-tag": false, + "packages": { + ".": { + "extra-files": [ + { + "type": "yaml", + "path": "helm/Chart.yaml", + "jsonpath": "$.version" + }, + { + "type": "yaml", + "path": "helm/Chart.yaml", + "jsonpath": "$.appVersion" + } + ] + } + } +}