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

141
.github/workflows/release.yml

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

9
Dockerfile

@ -3,7 +3,7 @@
# #
FROM mcr.microsoft.com/dotnet/sdk:7.0 as backend 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 WORKDIR /src
@ -30,7 +30,7 @@ COPY backend .
RUN dotnet test --no-restore --filter Category!=Dependencies RUN dotnet test --no-restore --filter Category!=Dependencies
# Publish # 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 # Install tools
RUN dotnet tool install --tool-path /tools dotnet-counters \ 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 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 # Curl for debugging and libc-dev for protobuf
RUN apt-get update \ RUN apt-get update \
&& apt-get install -y curl libc-dev && apt-get install -y curl libc-dev
@ -89,7 +91,6 @@ COPY --from=frontend /build/ wwwroot/build/
EXPOSE 80 EXPOSE 80
EXPOSE 443 EXPOSE 443
EXPOSE 11111
ENV DIAGNOSTICS__COUNTERSTOOL=/tools/dotnet-counters ENV DIAGNOSTICS__COUNTERSTOOL=/tools/dotnet-counters
ENV DIAGNOSTICS__DUMPTOOL=/tools/dotnet-dump ENV DIAGNOSTICS__DUMPTOOL=/tools/dotnet-dump
@ -97,3 +98,5 @@ ENV DIAGNOSTICS__GCDUMPTOOL=/tools/dotnet-gcdump
ENV DIAGNOSTICS__TRACETOOL=/tools/dotnet-trace ENV DIAGNOSTICS__TRACETOOL=/tools/dotnet-trace
ENTRYPOINT ["dotnet", "Squidex.dll"] ENTRYPOINT ["dotnet", "Squidex.dll"]
ENV EXPOSEDCONFIGURATION__VERSION=$SQUIDEX__RUNTIME__VERSION
Loading…
Cancel
Save