diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fb9cd49..9f82e26 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -2,96 +2,92 @@ name: Release to Production on: push: - branches: [ main ] + branches: [main] env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PALETTE_VERSION: 4.0.2 - PALETTE_CLI_VERSION: 4.0.1 - PALETTE_EDGE_VERSION: 3.4.3 + PALETTE_CLI_VERSION: 4.2.2 + PALETTE_EDGE_VERSION: 4.2.3 PACKER_VERSION: 1.9.4 ORAS_VERSION: 1.0.0 - TERRAFORM_VERSION: 1.6.5 + TERRAFORM_VERSION: 1.7.0 + PALETTE_REGISTRY_CLI_VERSION: 4.2.0 - -jobs: +jobs: docker: name: "Release Docker image" runs-on: ubuntu-latest outputs: VERSION: ${{ steps.get-version.outputs.version }} steps: + - name: Setup nodeJs + uses: actions/setup-node@v1.4.4 + with: + node-version: "18" + - name: Check out code into the Go module directory + uses: actions/checkout@v4 - - name: Setup nodeJs - uses: actions/setup-node@v1.4.4 - with: - node-version: '18' - - - name: Check out code into the Go module directory - uses: actions/checkout@v4 - - - - name: "Get dependencies" - id: dependencies - run: | + - name: "Get dependencies" + id: dependencies + run: | npm ci npx semantic-release --dry-run cat VERSION.env source VERSION.env echo "version=$VERSION" >> $GITHUB_OUTPUT - - name: Set up QEMU - if: ${{ steps.dependencies.outputs.VERSION != ''}} - uses: docker/setup-qemu-action@v2 - - - name: "Set up Docker Buildx" - if: ${{ steps.dependencies.outputs.VERSION != ''}} - uses: docker/setup-buildx-action@v2 - + - name: Set up QEMU + if: ${{ steps.dependencies.outputs.VERSION != ''}} + uses: docker/setup-qemu-action@v2 - - name: Login to GHCR - if: ${{ steps.dependencies.outputs.VERSION != ''}} - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - - name: Build and push - if: ${{ steps.dependencies.outputs.VERSION != ''}} - uses: docker/build-push-action@v2 - id: build-and-push - with: - context: . - build-args: | - PALETTE_VERSION=${{env.PALETTE_VERSION}} - PALETTE_CLI_VERSION=${{env.PALETTE_CLI_VERSION}} - PALETTE_EDGE_VERSION=${{env.PALETTE_EDGE_VERSION}} - PACKER_VERSION=${{env.PACKER_VERSION}} - ORAS_VERSION=${{env.ORAS_VERSION}} - TERRAFORM_VERSION=${{env.TERRAFORM_VERSION}} - platforms: linux/amd64,linux/arm64 - push: true - tags: ghcr.io/${{ github.repository }}:${{steps.dependencies.outputs.VERSION}} - - - uses: sigstore/cosign-installer@v3.3.0 - - - name: Image Signing - run: | - cosign sign --yes \ - -a "repo=${{ github.repository }}" \ - -a "workflow=${{ github.workflow }}" \ - -a "ref=${{ github.sha }}" \ - -a "owner=Spectro Cloud" \ - --key env://COSIGN_PRIVATE_KEY --recursive "${TAGS}@${DIGEST}" - env: - TAGS: ghcr.io/${{ github.repository }}:${{steps.dependencies.outputs.VERSION}} - COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} - COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} - DIGEST: ${{ steps.build-and-push.outputs.digest }} + - name: "Set up Docker Buildx" + if: ${{ steps.dependencies.outputs.VERSION != ''}} + uses: docker/setup-buildx-action@v2 + - name: Login to GHCR + if: ${{ steps.dependencies.outputs.VERSION != ''}} + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + if: ${{ steps.dependencies.outputs.VERSION != ''}} + uses: docker/build-push-action@v2 + id: build-and-push + with: + context: . + build-args: | + PALETTE_VERSION=${{env.PALETTE_VERSION}} + PALETTE_CLI_VERSION=${{env.PALETTE_CLI_VERSION}} + PALETTE_EDGE_VERSION=${{env.PALETTE_EDGE_VERSION}} + PACKER_VERSION=${{env.PACKER_VERSION}} + ORAS_VERSION=${{env.ORAS_VERSION}} + TERRAFORM_VERSION=${{env.TERRAFORM_VERSION}} + PALETTE_REGISTRY_CLI_VERSION=${{env.PALETTE_REGISTRY_CLI_VERSION}} + platforms: linux/amd64,linux/arm64 + push: true + tags: ghcr.io/${{ github.repository }}:${{steps.dependencies.outputs.VERSION}} + + - uses: sigstore/cosign-installer@v3.3.0 + + - name: Image Signing + if: ${{ steps.dependencies.outputs.VERSION != ''}} + run: | + cosign sign --yes \ + -a "repo=${{ github.repository }}" \ + -a "workflow=${{ github.workflow }}" \ + -a "ref=${{ github.sha }}" \ + -a "owner=Spectro Cloud" \ + --key env://COSIGN_PRIVATE_KEY --recursive "${TAGS}@${DIGEST}" + env: + TAGS: ghcr.io/${{ github.repository }}:${{steps.dependencies.outputs.VERSION}} + COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} + COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }} + DIGEST: ${{ steps.build-and-push.outputs.digest }} release: name: "Release" @@ -113,4 +109,4 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - npx semantic-release \ No newline at end of file + npx semantic-release diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index ad2bd0f..034cbc0 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -7,18 +7,17 @@ on: env: GITHUB_TOKEN: ${{ github.token }} PALETTE_VERSION: 4.0.2 - PALETTE_CLI_VERSION: 4.0.1 - PALETTE_EDGE_VERSION: 3.4.3 + PALETTE_CLI_VERSION: 4.2.2 + PALETTE_EDGE_VERSION: 4.2.3 PACKER_VERSION: 1.9.4 ORAS_VERSION: 1.0.0 - TERRAFORM_VERSION: 1.6.5 + TERRAFORM_VERSION: 1.7.0 + PALETTE_REGISTRY_CLI_VERSION: 4.2.0 concurrency: group: docker-${{ github.ref }} cancel-in-progress: true - - jobs: run-ci: runs-on: ubuntu-latest @@ -27,9 +26,9 @@ jobs: shell: bash if: ${{ !github.event.pull_request.draft }} steps: - # If the condition above is not met, aka, the PR is not in draft status, then this step is skipped. - # Because this step is part of the critical path, omission of this step will result in remaining CI steps not gettinge executed. - # As of 8/8/2022 there is now way to enforce this beahvior in GitHub Actions CI. + # If the condition above is not met, aka, the PR is not in draft status, then this step is skipped. + # Because this step is part of the critical path, omission of this step will result in remaining CI steps not gettinge executed. + # As of 8/8/2022 there is now way to enforce this beahvior in GitHub Actions CI. - run: exit 0 docker: @@ -50,14 +49,12 @@ jobs: - name: Install dependencies run: npm ci - - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - - name: Login to GHCR uses: docker/login-action@v1 with: @@ -79,5 +76,4 @@ jobs: PACKER_VERSION=${{env.PACKER_VERSION}} ORAS_VERSION=${{env.ORAS_VERSION}} TERRAFORM_VERSION=${{env.TERRAFORM_VERSION}} - - + PALETTE_REGISTRY_CLI_VERSION=${{env.PALETTE_REGISTRY_CLI_VERSION}} diff --git a/Dockerfile b/Dockerfile index 6e575db..f9268ff 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,6 +20,7 @@ ADD static/defaults/registry-config.yml etc/spectro/config.yml ARG PALETTE_CLI_VERSION ARG PALETTE_EDGE_VERSION +ARG PALETTE_REGISTRY_CLI_VERSION ARG PACKER_VERSION ARG ORAS_VERSION ARG TERRAFORM_VERSION @@ -36,7 +37,7 @@ RUN adduser -H -u 1002 -D appuser appuser && \ apk update && \ apk add --no-cache bash curl git openssl jq bind-tools wget ca-certificates nano aws-cli xorriso govc podman -RUN wget https://software.spectrocloud.com/spectro-registry/cli/v$PALETTE_CLI_VERSION/linux/spectro && \ +RUN wget https://spectro-cli.s3.amazonaws.com/v$PALETTE_REGISTRY_CLI_VERSION/linux/spectro && \ mv spectro /usr/local/bin/spectro && \ chmod +x /usr/local/bin/spectro && \ wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz && \ diff --git a/docs/docker.md b/docs/docker.md index 843e30f..e48e5b3 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -12,37 +12,35 @@ You can start the container using the following command. docker run -p 5000:5000 --rm -it ghcr.io/spectrocloud/tutorials:1.0.12 bash ``` - > The Docker file is build for a Linux environment. You can use this on a Mac and Windows. Windows users will require the usage of WSL2. - The Docker image includes the following tools. -| Tool | Description | -|---------------|----------------------------------------------------------------| -| `terraform` | Infrastructure as code tool | -| `palette cli` | The offical Palette CLI | -| `spectro cli` | Spectro Cloud command-line interface | -| `palette edge cli`| The Edge Installer CLU | -| `spectro registry server` | Spectro Cloud Registry Server | -| `ngrok` | Secure tunnels to localhost | -| `kubectl` | Kubernetes command-line tool | -| `bash` | Unix shell | -| `curl` | Command line tool and library for transferring data with URLs | -| `git` | Distributed version control system | -| `openssl` | Toolkit for the Transport Layer Security (TLS) protocol | -| `jq` | Lightweight and flexible command-line JSON processor | -| `bind-tools` | Collection of DNS utilities, including dig, nslookup, and host | -| `wget` | Free utility for non-interactive download of files from the Web| -| `nano` | A text editior alternative to Vi. | -| `ca-certificates` | Common set of CA certificates | -| `canvos` | A utility for creating Edge artifacts | -| `nano` | A text editior for Unix-like computing systems or operating environments using a command line interface| -| `packer` | Hashicorp Image Builder for building Edge Native images | -| `GOVC` | Tool for interracting with VMware Vsphere via API | -| `aws-cli` | AWS command-line interface | -| `oras` | Tool for pushing and pulling OCI artifacts to and from OCI registries| -| `podman` | Tool for building and deploying OCI images | +| Tool | Description | +| ------------------------- | ------------------------------------------------------------------------------------------------------- | +| `terraform` | Infrastructure as code tool | +| `palette cli` | The offical Palette CLI | +| `spectro cli` | Spectro Cloud command-line interface | +| `palette edge cli` | The Edge Installer CLU | +| `spectro registry server` | Spectro Cloud Registry Server | +| `ngrok` | Secure tunnels to localhost | +| `kubectl` | Kubernetes command-line tool | +| `bash` | Unix shell | +| `curl` | Command line tool and library for transferring data with URLs | +| `git` | Distributed version control system | +| `openssl` | Toolkit for the Transport Layer Security (TLS) protocol | +| `jq` | Lightweight and flexible command-line JSON processor | +| `bind-tools` | Collection of DNS utilities, including dig, nslookup, and host | +| `wget` | Free utility for non-interactive download of files from the Web | +| `nano` | A text editior alternative to Vi. | +| `ca-certificates` | Common set of CA certificates | +| `canvos` | A utility for creating Edge artifacts | +| `nano` | A text editior for Unix-like computing systems or operating environments using a command line interface | +| `packer` | Hashicorp Image Builder for building Edge Native images | +| `GOVC` | Tool for interracting with VMware Vsphere via API | +| `aws-cli` | AWS command-line interface | +| `oras` | Tool for pushing and pulling OCI artifacts to and from OCI registries | +| `podman` | Tool for building and deploying OCI images | ### Spectro Cloud Pack Registry Server @@ -52,19 +50,17 @@ The Spectro Cloud registry server has the following credentials: - `password`: `admin` -You can start the registry server by issuing the following command. +You can start the registry server by issuing the following command. Keep in mind that the registry server is started in HTTP mode. For additional guidance, review the [Registry Server documentation](https://docs.spectrocloud.com/registries-and-packs/adding-a-custom-registry). ```shell registry serve /etc/spectro/config.yml > /var/log/registry.log 2>&1 & ``` - # Local Builds -If you are wanting to build the docker image locally you must provide the the build arguments for `PALETTE_VERSION`, `PALETTE_CLI_VERSION`, `PALETTE_EDGE_VERSION`, `PACKER_VERSION`, `ORAS_VERSION` and `TERRAFORM_VERSION`. Use the following command to build a local image. Replace the versions as needed. - +If you are wanting to build the docker image locally you must provide the the build arguments for `PALETTE_VERSION`, `PALETTE_CLI_VERSION`, `PALETTE_EDGE_VERSION`, `PACKER_VERSION`, `ORAS_VERSION` and `TERRAFORM_VERSION`. Use the following command to build a local image. Replace the versions as needed. ```shell -docker build --build-arg PALETTE_VERSION=4.0.2 --build-arg PALETTE_CLI_VERSION=4.0.1 --build-arg PALETTE_EDGE_VERSION=3.4.3 --build-arg PACKER_VERSION=1.9.4 --build-arg ORAS_VERSION=1.0.0 --build-arg TERRAFORM_VERSION=1.6.5 -t tutorials . -``` \ No newline at end of file +docker build --build-arg PALETTE_VERSION=4.0.2 --build-arg PALETTE_CLI_VERSION=4.2.2 --build-arg PALETTE_EDGE_VERSION=4.2.3 --build-arg PACKER_VERSION=1.9.4 --build-arg ORAS_VERSION=1.0.0 --build-arg PALETTE_REGISTRY_CLI_VERSION=4.2.0 --build-arg TERRAFORM_VERSION=1.7.0 -t tutorials . +```