Browse Source

Gha (#946)

* Typings for editor SDK.

* Multiplatform build.

* Remove old port.

* Test something.

* Gha build.

* No set output.

* Shared concurrency.

* Remove old step.

* Improve versions.
pull/949/head
Sebastian Stehle 4 years ago
committed by GitHub
parent
commit
a7405be4e1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 116
      .github/workflows/dev.yml
  2. 141
      .github/workflows/release.yml
  3. 9
      Dockerfile

116
.github/workflows/dev.yml

@ -1,5 +1,5 @@
name: Dev
concurrency: dev
concurrency: build
on:
push:
@ -16,94 +16,59 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v3.1.0
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
- name: Calculate Version
env:
BUILD_NUMBER: ${{ github.run_number }}
run: |
echo "BUILD_NUMBER=$(($BUILD_NUMBER + 6000))" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.2.1
- name: Cache Docker layers
uses: actions/cache@v3.0.11
- name: Login to Docker Hub
uses: docker/login-action@v2.1.0
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: BUILD
uses: docker/build-push-action@v3.2.0
with:
push: false
load: true
build-args: "SQUIDEX__VERSION=5.0.0-dev-${{ env.BUILD_NUMBER }}"
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
tags: squidex-tmp
- name: Export Image
run: docker save squidex-tmp | gzip > squidex-tmp.tar.gz
- name: Save Image to Cache
uses: actions/cache@v3.0.11
with:
path: squidex-tmp.tar.gz
key: squidex-dev-image-${{ github.sha }}
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
push: true
build-args: "SQUIDEX__RUNTIME__VERSION=7.0.0-dev-${{ env.BUILD_NUMBER }}"
cache-from: type=gha
cache-to: type=gha,mode=max
tags: squidex/squidex-build
test:
needs: build
runs-on: ubuntu-latest
steps:
- name: Calculate Version
env:
BUILD_NUMBER: ${{ github.run_number }}
run: |
echo "BUILD_NUMBER=$(($BUILD_NUMBER + 6000))" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v3.1.0
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
- name: Get Image From Cache
uses: actions/cache@v3.0.11
with:
path: squidex-tmp.tar.gz
key: squidex-dev-image-${{ github.sha }}
- name: Load Image
run: docker load < squidex-tmp.tar.gz
- name: Pull from Cache
run: docker pull squidex/squidex-build
- name: Replace Image Name1
uses: mikefarah/yq@v4.28.2
with:
cmd: yq e '.services.squidex1.image = "squidex-tmp"' -i backend/tests/docker-compose.yml
cmd: yq e '.services.squidex1.image = "squidex/squidex-build"' -i backend/tests/docker-compose.yml
- name: Replace Image Name2
uses: mikefarah/yq@v4.28.2
with:
cmd: yq e '.services.squidex2.image = "squidex-tmp"' -i backend/tests/docker-compose.yml
cmd: yq e '.services.squidex2.image = "squidex/squidex-build"' -i backend/tests/docker-compose.yml
- name: Replace Image Name3
uses: mikefarah/yq@v4.28.2
with:
cmd: yq e '.services.squidex3.image = "squidex-tmp"' -i backend/tests/docker-compose.yml
cmd: yq e '.services.squidex3.image = "squidex/squidex-build"' -i backend/tests/docker-compose.yml
- name: Start Test
run: docker-compose up -d
@ -166,42 +131,39 @@ jobs:
publish:
needs: test
runs-on: ubuntu-latest
if: github.event_name != 'pull_request'
steps:
- name: Checkout
uses: actions/checkout@v3.1.0
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
- name: Calculate Version
env:
BUILD_NUMBER: ${{ github.run_number }}
run: |
echo "BUILD_NUMBER=$(($BUILD_NUMBER + 6000))" >> $GITHUB_ENV
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.2.1
- name: Login to Docker Hub
uses: docker/login-action@v2.1.0
if: github.event_name != 'pull_request'
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Get Image From Cache
if: github.event_name != 'pull_request'
uses: actions/cache@v3.0.11
- name: BUILD
uses: docker/build-push-action@v3.2.0
with:
path: squidex-tmp.tar.gz
key: squidex-dev-image-${{ github.sha }}
- name: Load Image
if: github.event_name != 'pull_request'
run: docker load < squidex-tmp.tar.gz
- name: Rename Tags
if: github.event_name != 'pull_request'
run: |
docker tag squidex-tmp squidex/squidex:dev
docker tag squidex-tmp squidex/squidex:dev-${{ env.BUILD_NUMBER }}
- name: Push Tags
if: github.event_name != 'pull_request'
run: |
docker push squidex/squidex:dev
docker push squidex/squidex:dev-${{ env.BUILD_NUMBER }}
push: true
build-args: "SQUIDEX__RUNTIME__VERSION=7.0.0-dev-${{ env.BUILD_NUMBER }}"
cache-from: type=gha
cache-to: type=gha,mode=max
tags: |
squidex/squidex:dev
squidex/squidex:dev-${{ env.BUILD_NUMBER }}

141
.github/workflows/release.yml

@ -1,5 +1,5 @@
name: Release
concurrency: release
concurrency: build
on:
push:
@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v3.1.0
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
@ -22,71 +22,48 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.2.1
- name: Cache Docker layers
uses: actions/cache@v3.0.11
- name: Login to Docker Hub
uses: docker/login-action@v2.1.0
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: BUILD
uses: docker/build-push-action@v3.2.0
with:
push: false
load: true
tags: squidex-tmp
build-args: "SQUIDEX__VERSION=${{ env.GITHUB_REF_SLUG }}"
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
- name: Export Image
run: docker save squidex-tmp | gzip > squidex-tmp.tar.gz
- name: Save Image to Cache
uses: actions/cache@v3.0.11
with:
path: squidex-tmp.tar.gz
key: squidex-release-image-${{ github.sha }}
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
push: true
build-args: "SQUIDEX__BUILD__VERSION=${{ env.GITHUB_REF_SLUG }},SQUIDEX__RUNTIME__VERSION=${{ env.GITHUB_REF_SLUG }}"
cache-from: type=gha
cache-to: type=gha,mode=max
tags: squidex/squidex-build
test:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v3.1.0
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
- name: Get Image From Cache
uses: actions/cache@v3.0.11
with:
path: squidex-tmp.tar.gz
key: squidex-release-image-${{ github.sha }}
- name: Load Image
run: docker load < squidex-tmp.tar.gz
- name: Pull from Cache
run: docker pull squidex/squidex-build
- name: Replace Image Name1
uses: mikefarah/yq@v4.28.2
with:
cmd: yq e '.services.squidex1.image = "squidex-tmp"' -i backend/tests/docker-compose.yml
cmd: yq e '.services.squidex1.image = "squidex/squidex-build"' -i backend/tests/docker-compose.yml
- name: Replace Image Name2
uses: mikefarah/yq@v4.28.2
with:
cmd: yq e '.services.squidex2.image = "squidex-tmp"' -i backend/tests/docker-compose.yml
cmd: yq e '.services.squidex2.image = "squidex/squidex-build"' -i backend/tests/docker-compose.yml
- name: Replace Image Name3
uses: mikefarah/yq@v4.28.2
with:
cmd: yq e '.services.squidex3.image = "squidex-tmp"' -i backend/tests/docker-compose.yml
cmd: yq e '.services.squidex3.image = "squidex/squidex-build"' -i backend/tests/docker-compose.yml
- name: Start Test
run: docker-compose up -d
@ -150,18 +127,15 @@ jobs:
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3.1.0
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
- name: Login to Docker Hub
uses: docker/login-action@v2.1.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Get Major Version
id: version
uses: rishabhgupta/split-by@v1.0.1
uses: rishabhgupta/split-by@v1
with:
string: "${{ env.GITHUB_REF_SLUG }}"
split-by: "."
@ -170,59 +144,64 @@ jobs:
id: normal-version
run: |
if [[ ${{ env.GITHUB_REF_SLUG }} =~ ^[0-9]+\.[0-9]+$ ]]; then
echo ::set-output name=match::true
echo "STABLE_VERSION=true" >> $GITHUB_ENV
fi
- name: Get Image From Cache
uses: actions/cache@v3.0.11
with:
path: squidex-tmp.tar.gz
key: squidex-release-image-${{ github.sha }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.1.0
- name: Load Image
run: docker load < squidex-tmp.tar.gz
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.2.1
- name: Rename Tags
run: |
docker tag squidex-tmp squidex/squidex:latest
docker tag squidex-tmp squidex/squidex:${{ env.GITHUB_REF_SLUG }}
docker tag squidex-tmp squidex/squidex:${{ steps.version.outputs._0 }}
- name: Login to Docker Hub
uses: docker/login-action@v2.1.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Push Version
run: |
docker push squidex/squidex:latest
docker push squidex/squidex:${{ env.GITHUB_REF_SLUG }}
docker push squidex/squidex:${{ steps.version.outputs._0 }}
- name: BUILD
uses: docker/build-push-action@v3.2.0
with:
push: true
build-args: "SQUIDEX__BUILD__VERSION=${{ env.GITHUB_REF_SLUG }},SQUIDEX__RUNTIME__VERSION=${{ env.GITHUB_REF_SLUG }}"
cache-from: type=gha
cache-to: type=gha,mode=max
tags: |
squidex/squidex:latest
squidex/squidex:${{ env.GITHUB_REF_SLUG }}
squidex/squidex:${{ steps.version.outputs._0 }}
if: env.STABLE_VERSION == 'true'
- name: Push Latest
run: |
docker push squidex/squidex:latest
if: steps.normal-version.outputs.match == 'true'
- name: BUILD
uses: docker/build-push-action@v3.2.0
with:
push: true
build-args: "SQUIDEX__BUILD__VERSION=${{ env.GITHUB_REF_SLUG }},SQUIDEX__RUNTIME__VERSION=${{ env.GITHUB_REF_SLUG }}"
cache-from: type=gha
cache-to: type=gha,mode=max
tags: |
squidex/squidex:${{ env.GITHUB_REF_SLUG }}
squidex/squidex:${{ steps.version.outputs._0 }}
if: env.STABLE_VERSION != 'true'
release:
needs: publish
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v3.1.0
- name: Inject slug/short variables
uses: rlespinasse/github-slug-action@v4.3.2
- name: Get Image From Cache
uses: actions/cache@v3.0.11
with:
path: squidex-tmp.tar.gz
key: squidex-release-image-${{ github.sha }}
- name: Load Image
run: docker load < squidex-tmp.tar.gz
- name: Pull from Cache
run: docker pull squidex/squidex-build
- name: Make directories
run: sudo mkdir /build /release
- name: Create container
run: docker create --name squidex-container squidex-tmp:latest
run: docker create --name squidex-container squidex/squidex-build
- name: Get binaries
run: sudo docker cp squidex-container:/app/. /build

9
Dockerfile

@ -3,7 +3,7 @@
#
FROM mcr.microsoft.com/dotnet/sdk:7.0 as backend
ARG SQUIDEX__VERSION=7.0.0
ARG SQUIDEX__BUILD__VERSION=7.0.0
WORKDIR /src
@ -30,7 +30,7 @@ COPY backend .
RUN dotnet test --no-restore --filter Category!=Dependencies
# Publish
RUN dotnet publish --no-restore src/Squidex/Squidex.csproj --output /build/ --configuration Release -p:version=$SQUIDEX__VERSION
RUN dotnet publish --no-restore src/Squidex/Squidex.csproj --output /build/ --configuration Release -p:version=$SQUIDEX__BUILD__VERSION
# Install tools
RUN dotnet tool install --tool-path /tools dotnet-counters \
@ -70,6 +70,8 @@ RUN cp -a build /build/
#
FROM mcr.microsoft.com/dotnet/aspnet:7.0-bullseye-slim
ARG SQUIDEX__RUNTIME__VERSION=7.0.0
# Curl for debugging and libc-dev for protobuf
RUN apt-get update \
&& apt-get install -y curl libc-dev
@ -89,7 +91,6 @@ COPY --from=frontend /build/ wwwroot/build/
EXPOSE 80
EXPOSE 443
EXPOSE 11111
ENV DIAGNOSTICS__COUNTERSTOOL=/tools/dotnet-counters
ENV DIAGNOSTICS__DUMPTOOL=/tools/dotnet-dump
@ -97,3 +98,5 @@ ENV DIAGNOSTICS__GCDUMPTOOL=/tools/dotnet-gcdump
ENV DIAGNOSTICS__TRACETOOL=/tools/dotnet-trace
ENTRYPOINT ["dotnet", "Squidex.dll"]
ENV EXPOSEDCONFIGURATION__VERSION=$SQUIDEX__RUNTIME__VERSION
Loading…
Cancel
Save