diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e16092d..7063249 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,10 +9,25 @@ on: pull_request: branches: - "main" + env: GOLANG_VERSION: '1.21' jobs: + init-variable: + runs-on: ubuntu-latest + outputs: + container_tag: ${{ steps.init_variable.outputs.container_tag }} + steps: + - name: checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: output environment variable + id: init_variable + run: | + echo container_tag=$(git describe --tags --abbrev=8) >> $GITHUB_OUTPUT + unit-tests: name: Unit tests running runs-on: ubuntu-latest @@ -29,7 +44,6 @@ jobs: run: | go test -v ./... - linting: name: Go code linting runs-on: ubuntu-latest @@ -61,4 +75,4 @@ jobs: - name: Build creation run: | - go build -v \ No newline at end of file + go build -v diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..d624db0 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,107 @@ +# This workflow will build a golang project +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go + +name: Contour plugin CI +on: + push: + tags: + - '*' + +env: + GOLANG_VERSION: '1.21' + +jobs: + init-variable: + runs-on: ubuntu-latest + outputs: + container_tag: ${{ steps.init_variable.outputs.container_tag }} + steps: + - name: checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: output environment variable + id: init_variable + run: | + echo container_tag=$(git describe --tags --abbrev=8) >> $GITHUB_OUTPUT + + unit-tests: + name: Unit tests running + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GOLANG_VERSION }} + + - name: Checkout code + uses: actions/checkout@v3.1.0 + + - name: Unit tests running + run: | + go test -v ./... + + linting: + name: Go code linting + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GOLANG_VERSION }} + + - name: Checkout code + uses: actions/checkout@v3.1.0 + + - name: Run golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + args: --verbose --timeout 6m + + build: + name: Build creation + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: ${{ env.GOLANG_VERSION }} + + - name: Checkout code + uses: actions/checkout@v3.1.0 + + - name: Build creation + run: | + go build -v + + image: + needs: [init-variable] + name: Build Docker image + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: "Login to Docker Registry" + uses: docker/login-action@v3 + with: + registry: release.daocloud.io + username: ${{ secrets.DAOCLOUD_REGISTRY_USERNAME }} + password: ${{ secrets.DAOCLOUD_REGISTRY_PWD }} + - name: Use setup-buildx-action + uses: docker/setup-buildx-action@v2 + - name: Build Docker image + uses: docker/build-push-action@v4.1.1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + push: true + provenance: false + platforms: linux/amd64,linux/arm64 + tags: | + release.daocloud.io/skoala/rollouts-plugin-trafficrouter-contour:${{ needs.init-variable.outputs.container_tag }} + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index ab53a5f..0c22794 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,10 @@ WORKDIR /app COPY . . -RUN CGO_ENABLED=0 GOOS=linux GOARCH=$(TARGETARCH) go build -ldflags "-s -w" -o rollouts-plugin-trafficrouter-contour-linux-$(TARGETARCH) . +RUN CGO_ENABLED=0 GOOS=linux GOARCH=${TARGETARCH} go build -ldflags "-s -w" -o rollouts-plugin-trafficrouter-contour-linux-${TARGETARCH} . FROM alpine:3.19.0 -COPY --from=builder /app/rollouts-plugin-trafficrouter-contour-linux-$(TARGETARCH) /bin/ +ARG TARGETARCH + +COPY --from=builder /app/rollouts-plugin-trafficrouter-contour-linux-${TARGETARCH} /bin/