diff --git a/.github/actions/chocolatey/Dockerfile b/.github/actions/chocolatey/Dockerfile new file mode 100644 index 0000000000000..acfaa369400e9 --- /dev/null +++ b/.github/actions/chocolatey/Dockerfile @@ -0,0 +1,20 @@ +FROM alpine:latest + +ARG CHOCOVERSION=1.1.0 + +RUN apk add --no-cache bash ca-certificates git \ + && apk --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing add mono mono-dev \ + && cert-sync /etc/ssl/certs/ca-certificates.crt \ + && wget "https://github.com/chocolatey/choco/archive/${CHOCOVERSION}.tar.gz" -O- | tar -xzf - \ + && cd choco-"${CHOCOVERSION}" \ + && chmod +x build.sh zip.sh \ + && ./build.sh -v \ + && mv ./code_drop/chocolatey/console /opt/chocolatey \ + && mkdir -p /opt/chocolatey/lib \ + && rm -rf /choco-"${CHOCOVERSION}" \ + && apk del mono-dev \ + && rm -rf /var/cache/apk/* + +ENV ChocolateyInstall=/opt/chocolatey +COPY entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/.github/actions/chocolatey/VERIFICATION.txt b/.github/actions/chocolatey/VERIFICATION.txt new file mode 100644 index 0000000000000..4d18877b68b0a --- /dev/null +++ b/.github/actions/chocolatey/VERIFICATION.txt @@ -0,0 +1,8 @@ +VERIFICATION + +Verification is intended to assist the Chocolatey moderators and community +in verifying that this package's contents are trustworthy. + +The installer has been downloaded from https://github.com/coder/coder/releases + +Checksums can be found in the coder_VERSION_checksums.txt at https://github.com/coder/coder/releases diff --git a/.github/actions/chocolatey/action.yml b/.github/actions/chocolatey/action.yml new file mode 100644 index 0000000000000..a6724cf38c44c --- /dev/null +++ b/.github/actions/chocolatey/action.yml @@ -0,0 +1,16 @@ +name: 'Chocolatey publish action' +description: 'Creates package for Chocolatey and pushes it' +inputs: + version: + description: 'Package version' + required: false + chocolateyKey: + description: 'Chocolatey API key' + required: false + publish: + description: 'Whether package should be published' + required: false + default: 'false' +runs: + using: 'docker' + image: 'Dockerfile' diff --git a/.github/actions/chocolatey/entrypoint.sh b/.github/actions/chocolatey/entrypoint.sh new file mode 100755 index 0000000000000..be73ae9bf3dcd --- /dev/null +++ b/.github/actions/chocolatey/entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e + +function choco { + mono /opt/chocolatey/choco.exe "$@" --allow-unofficial --nocolor +} + +rm -f coder.*.nupkg + +mkdir -p tools +cp LICENSE tools/LICENSE.txt +cp VERIFICATION tools/VERIFICATION.txt +sed -i "s/VERSION/${INPUT_VERSION}/g" tools/VERIFICATION.txt +cp ./build/coder_*_windows_amd64.exe tools/ + +choco pack coder.nuspec --version "${INPUT_VERSION}" + +if [[ "$INPUT_PUBLISH" == "true" ]]; then + choco push coder."${INPUT_VERSION}".nupkg --api-key="${INPUT_CHOCOLATEYKEY}" --source="https://push.chocolatey.org/" --timeout 180 +fi diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a209df4343592..46d21bcc409f7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -104,6 +104,7 @@ jobs: go mod download version="$(./scripts/version.sh)" + echo "CODER_RELEASE_VERSION=$version" >> $GITHUB_ENV make gen/mark-fresh make -j \ build/coder_"$version"_linux_{amd64,armv7,arm64}.{tar.gz,apk,deb,rpm} \ @@ -180,3 +181,10 @@ jobs: ./build/*.deb ./build/*.rpm retention-days: 7 + + - name: Publish to Chocolatey + uses: ./.github/actions/chocolatey + with: + publish: ${{ ! (github.event.inputs.dry_run || github.event.inputs.snapshot) }} + version: ${{ env.CODER_RELEASE_VERSION }} + chocolateyKey: ${{ secrets.CHOCOLATEY_KEY }} diff --git a/coder.nuspec b/coder.nuspec new file mode 100644 index 0000000000000..e1938d26bdc53 --- /dev/null +++ b/coder.nuspec @@ -0,0 +1,29 @@ + + + + + coder + 0.0.0 + https://github.com/coder/coder + coder + coder + coder + https://coder.com + https://github.com/coder/presskit/raw/main/logos/coder%20logo%20black%20square.png + Coder Technologies Inc + https://raw.githubusercontent.com/coder/coder/main/LICENSE + false + https://github.com/coder/coder + https://coder.com/docs/coder-oss/latest + https://github.com/coder/coder/issues + golang + Software development on your infrastructure. Offload your team's development from local workstations to cloud servers. Onboard developers in minutes. Build, test and compile at the speed of the cloud. Keep your source code and data behind your firewall. + Software development on your infrastructure. Offload your team's development from local workstations to cloud servers. Onboard developers in minutes. Build, test and compile at the speed of the cloud. Keep your source code and data behind your firewall. + + + + + + + +