mirror of
https://git.cloudron.io/cloudron/gitea-app
synced 2025-09-26 06:57:26 +00:00
Compare commits
21 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2e8b2c637f | ||
|
07d07b342a | ||
|
93fa56da6b | ||
|
e68a0333a9 | ||
|
5ed9ee9284 | ||
|
a94c165c34 | ||
|
1b053028a0 | ||
|
5e7a1b2a37 | ||
|
cc63133f85 | ||
|
08cbfbb9d4 | ||
|
9944104273 | ||
|
076dd3946b | ||
|
2885c388e8 | ||
|
8693f77352 | ||
|
5a0d2ea12e | ||
|
3fbe8140a7 | ||
|
ac4eecf92b | ||
|
3fc5685027 | ||
|
9320ee11ad | ||
|
664677527a | ||
|
b1f8b8cb9a |
97
CHANGELOG
97
CHANGELOG
@@ -400,3 +400,100 @@
|
|||||||
* Update Gitea to 1.10.0
|
* Update Gitea to 1.10.0
|
||||||
* [Full changelog](https://github.com/go-gitea/gitea/releases/tag/v1.10.0)
|
* [Full changelog](https://github.com/go-gitea/gitea/releases/tag/v1.10.0)
|
||||||
|
|
||||||
|
[1.14.1]
|
||||||
|
* Update Gitea to 1.10.1
|
||||||
|
* Fix max length check and limit in multiple repo forms (#9148) (#9204)
|
||||||
|
* Properly fix displaying virtual session provider in admin panel (#9137) (#9203)
|
||||||
|
* Upgrade levelqueue to 0.1.0 (#9192) (#9199)
|
||||||
|
* Fix panic when diff (#9187) (#9193)
|
||||||
|
* Smtp logger configuration sendTos should be an array (#9154) (#9157)
|
||||||
|
* Always Show Password Field on Link Account Sign-in Page (#9150)
|
||||||
|
* Create PR on Current Repository by Default (#8670) (#9141)
|
||||||
|
* Fix race on indexer (#9136) (#9139)
|
||||||
|
* Fix reCAPTCHA URL (#9119)
|
||||||
|
* Hide migrated credentials (#9098)
|
||||||
|
* Update golang.org/x/crypto vendor to use acme v2 (#9056) (#9085)
|
||||||
|
* Fix password checks on admin create/edit user (#9076) (#9081)
|
||||||
|
* Fix add search as a reserved username (#9063) (#9065)
|
||||||
|
* Fix permission checks for close/reopen from commit (#8875) (#9033)
|
||||||
|
* Ensure Written is set in GZIP ProxyResponseWriter (#9018) (#9025)
|
||||||
|
* Fix broken link to branch from issue list (#9003) (#9021)
|
||||||
|
* Fix wrong system notice when repository is empty (#9020)
|
||||||
|
* Shadow password correctly for session config (#8984) (#9002)
|
||||||
|
|
||||||
|
[1.14.2]
|
||||||
|
* Update Gitea to 1.10.2
|
||||||
|
* Allow only specific Columns to be updated on Issue via API (#9539) (#9580)
|
||||||
|
* Add ErrReactionAlreadyExist error (#9550) (#9564)
|
||||||
|
* Fix bug when migrate from API (#8631) (#9563)
|
||||||
|
* Use default avatar for ghost user (#9536) (#9537)
|
||||||
|
* Fix repository issues pagination bug when there are more than one label filter (#9512) (#9528)
|
||||||
|
* Fix deleted branch not removed when push the branch again (#9516) (#9524)
|
||||||
|
* Fix missing repository status when migrating repository via API (#9511)
|
||||||
|
* Trigger webhook when deleting a branch after merging a PR (#9510)
|
||||||
|
* Fix paging on /repos/{owner}/{repo}/git/trees/{sha} API endpoint (#9482)
|
||||||
|
* Fix NewCommitStatus (#9434) (#9435)
|
||||||
|
* Use OriginalURL instead of CloneAddr in migration logging (#9418) (#9420)
|
||||||
|
* Fix Slack webhook payload title generation to work with Mattermost (#9404)
|
||||||
|
* DefaultBranch needs to be prefixed by BranchPrefix (#9356) (#9359)
|
||||||
|
* Fix issue indexer not triggered when migrating a repository (#9333)
|
||||||
|
* Fix bug that release attachment files not deleted when deleting repository (#9322) (#9329)
|
||||||
|
* Fix migration releases (#9319) (#9326) (#9328)
|
||||||
|
* Fix File Edit: Author/Committer interchanged (#9297) (#9300)
|
||||||
|
|
||||||
|
[1.14.3]
|
||||||
|
* Update Gitea to 1.10.3
|
||||||
|
* Hide credentials when submitting migration (#9102) (#9704)
|
||||||
|
* Never allow an empty password to validate (#9682) (#9684)
|
||||||
|
* Prevent redirect to Host (#9678) (#9680)
|
||||||
|
* Hide public repos owned by private orgs (#9609) (#9616)
|
||||||
|
* Allow assignee on Pull Creation when Issue Unit is deactivated (#9836) (#9838)
|
||||||
|
* Fix download file wrong content-type (#9825) (#9835)
|
||||||
|
* Fix wrong identify poster on a migrated pull request when submit review (#9827) (#9831)
|
||||||
|
* Fix dump non-exist log directory (#9818) (#9820)
|
||||||
|
* Fix compare (#9808) (#9815)
|
||||||
|
* Fix missing msteam webhook on organization (#9781) (#9795)
|
||||||
|
* Fix add team on collaborator page when same name as organization (#9783)
|
||||||
|
* Fix cache problem on dashboard (#9358) (#9703)
|
||||||
|
* Send tag create and push webhook when release created on UI (#8671) (#9702)
|
||||||
|
* Branches not at ref commit ID should not be listed as Merged (#9614) (#9639)
|
||||||
|
|
||||||
|
[1.15.0]
|
||||||
|
* Update Gitea to 1.11.0
|
||||||
|
|
||||||
|
[1.15.1]
|
||||||
|
* Update Gitea to 1.11.1
|
||||||
|
* Repo name added to automatically generated commit message when merging (#9997) (#10285)
|
||||||
|
* Fix Workerpool deadlock (#10283) (#10284)
|
||||||
|
* Divide GetIssueStats query in smaller chunks (#10176) (#10282)
|
||||||
|
* Fix reply on code review (#10257)
|
||||||
|
* Stop hanging issue indexer initialisation from preventing shutdown (#10243) (#10249)
|
||||||
|
* Fix filter label emoji width (#10241) (#10244)
|
||||||
|
* Fix issue sidebar menus having an infinite height (#10239) (#10240)
|
||||||
|
* Fix commit between two commits calculation if there is only last commit (#10225) (#10226)
|
||||||
|
* Only check for conflicts/merging if the PR has not been merged in the interim (#10132) (#10206)
|
||||||
|
* Blacklist manifest.json & milestones user (#10292) (#10293)
|
||||||
|
|
||||||
|
[1.15.2]
|
||||||
|
* Update Gitea to 1.11.2
|
||||||
|
|
||||||
|
[1.15.3]
|
||||||
|
* Update Gitea to 1.11.3
|
||||||
|
|
||||||
|
[1.15.4]
|
||||||
|
* Update Gitea to 1.11.4
|
||||||
|
|
||||||
|
[1.16.0]
|
||||||
|
* Update Gitea to [1.11.5](https://github.com/go-gitea/gitea/releases/tag/v1.11.5)
|
||||||
|
* Update base image to 2.0.0
|
||||||
|
|
||||||
|
[1.16.1]
|
||||||
|
* Update Gitea to 1.11.6
|
||||||
|
* [Full changelog](https://github.com/go-gitea/gitea/releases/tag/v1.11.6)
|
||||||
|
* Fix missing authorization check on pull for public repos of private/limited org (#11656) (#11683)
|
||||||
|
* Use session for retrieving org teams (#11438) (#11439)
|
||||||
|
* Return json on 500 error from API (#11574) (#11660)
|
||||||
|
* Fix wrong milestone in webhook message (#11596) (#11612)
|
||||||
|
* Prevent (caught) panic on login (#11590) (#11598)
|
||||||
|
* Fix commit page js error (#11527)
|
||||||
|
|
||||||
|
@@ -4,7 +4,7 @@
|
|||||||
"author": "Gitea developers",
|
"author": "Gitea developers",
|
||||||
"description": "file://DESCRIPTION.md",
|
"description": "file://DESCRIPTION.md",
|
||||||
"tagline": "A painless self-hosted Git Service",
|
"tagline": "A painless self-hosted Git Service",
|
||||||
"version": "1.14.0",
|
"version": "1.16.1",
|
||||||
"healthCheckPath": "/healthcheck",
|
"healthCheckPath": "/healthcheck",
|
||||||
"httpPort": 3000,
|
"httpPort": 3000,
|
||||||
"addons": {
|
"addons": {
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
This app packages Gitea <upstream>1.10.0</upstream>
|
This app packages Gitea <upstream>1.11.6</upstream>
|
||||||
|
|
||||||
Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket or Gitlab.
|
Gitea is a painless self-hosted Git service. It is similar to GitHub, Bitbucket or Gitlab.
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
FROM cloudron/base:1.0.0@sha256:147a648a068a2e746644746bbfb42eb7a50d682437cead3c67c933c546357617
|
FROM cloudron/base:2.0.0@sha256:f9fea80513aa7c92fe2e7bf3978b54c8ac5222f47a9a32a7f8833edf0eb5a4f4
|
||||||
|
|
||||||
ARG VERSION=1.10.0
|
ARG VERSION=1.11.6
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y openssh-server git && \
|
apt-get install -y openssh-server git && \
|
||||||
|
988
test/package-lock.json
generated
988
test/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -9,11 +9,12 @@
|
|||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"selenium-webdriver": "^3.6.0",
|
"chromedriver": "^83.0.0",
|
||||||
"chromedriver": "^76.0.1",
|
|
||||||
"expect.js": "^0.3.1",
|
"expect.js": "^0.3.1",
|
||||||
"mocha": "^6.2.2",
|
"mocha": "^7.2.0",
|
||||||
"rimraf": "^3.0.0",
|
"rimraf": "^3.0.2",
|
||||||
"superagent": "^5.1.0"
|
"selenium-server-standalone-jar": "^3.141.59",
|
||||||
|
"selenium-webdriver": "^3.6.0",
|
||||||
|
"superagent": "^5.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
42
test/test.js
42
test/test.js
@@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
require('chromedriver');
|
||||||
|
|
||||||
var execSync = require('child_process').execSync,
|
var execSync = require('child_process').execSync,
|
||||||
expect = require('expect.js'),
|
expect = require('expect.js'),
|
||||||
fs = require('fs'),
|
fs = require('fs'),
|
||||||
@@ -31,10 +33,10 @@ describe('Application life cycle test', function () {
|
|||||||
var LOCATION = 'test';
|
var LOCATION = 'test';
|
||||||
var SSH_PORT = 29420;
|
var SSH_PORT = 29420;
|
||||||
|
|
||||||
var browser;
|
|
||||||
var app;
|
var app;
|
||||||
var token;
|
var token;
|
||||||
|
|
||||||
|
var server, browser = new Builder().forBrowser('chrome').build();
|
||||||
var repodir = '/tmp/testrepo';
|
var repodir = '/tmp/testrepo';
|
||||||
var reponame = 'testrepo';
|
var reponame = 'testrepo';
|
||||||
|
|
||||||
@@ -43,7 +45,10 @@ describe('Application life cycle test', function () {
|
|||||||
var email = process.env.EMAIL;
|
var email = process.env.EMAIL;
|
||||||
|
|
||||||
before(function () {
|
before(function () {
|
||||||
browser = new Builder().forBrowser('chrome').setChromeOptions(new Options().windowSize({ width: 1280, height: 1024 })).build();
|
var seleniumJar= require('selenium-server-standalone-jar');
|
||||||
|
var SeleniumServer = require('selenium-webdriver/remote').SeleniumServer;
|
||||||
|
server = new SeleniumServer(seleniumJar.path, { port: 4444 });
|
||||||
|
server.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
after(function (done) {
|
after(function (done) {
|
||||||
@@ -119,6 +124,10 @@ return done();
|
|||||||
return browser.executeScript('arguments[0].CodeMirror.setValue("' + text + '");', cm);
|
return browser.executeScript('arguments[0].CodeMirror.setValue("' + text + '");', cm);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return browser.findElement(By.xpath('//input[@name="commit_summary"]')).sendKeys('Dummy edit');
|
return browser.findElement(By.xpath('//input[@name="commit_summary"]')).sendKeys('Dummy edit');
|
||||||
|
}).then(function () {
|
||||||
|
// explicitly make the button clickable since CodeMirror.setValue() does not update the form state correctly
|
||||||
|
var button = browser.findElement(By.xpath('//button[contains(text(), "Commit Changes")]'));
|
||||||
|
return browser.executeScript('arguments[0].removeAttribute("disabled")', button);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
return browser.findElement(By.xpath('//button[contains(text(), "Commit Changes")]')).click();
|
return browser.findElement(By.xpath('//button[contains(text(), "Commit Changes")]')).click();
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
@@ -147,8 +156,14 @@ return done();
|
|||||||
}
|
}
|
||||||
|
|
||||||
function logout(done) {
|
function logout(done) {
|
||||||
browser.get('https://' + app.fqdn + '/user/logout').then(function () {
|
browser.get('https://' + app.fqdn).then(function () {
|
||||||
return waitForUrl('https://' + app.fqdn + '/explore/repos');
|
return browser.findElement(By.xpath('//img[contains(@class, "avatar")]')).click();
|
||||||
|
}).then(function () {
|
||||||
|
browser.sleep(2000);
|
||||||
|
}).then(function () {
|
||||||
|
return browser.findElement(By.xpath('//a[@data-url="/user/logout"]')).click();
|
||||||
|
}).then(function () {
|
||||||
|
browser.sleep(2000);
|
||||||
}).then(function () {
|
}).then(function () {
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
@@ -304,9 +319,7 @@ return done();
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
xit('install app', function () {
|
it('install app', function () { execSync(`cloudron install --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
|
||||||
execSync(`cloudron install --new --wait --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can get app information', getAppInfo);
|
it('can get app information', getAppInfo);
|
||||||
it('can get the main page', function (done) {
|
it('can get the main page', function (done) {
|
||||||
@@ -340,10 +353,7 @@ return done();
|
|||||||
it('can add custom file', addCustomFile);
|
it('can add custom file', addCustomFile);
|
||||||
it('can check custom file', checkCustomFile);
|
it('can check custom file', checkCustomFile);
|
||||||
|
|
||||||
it('can restart app', function (done) {
|
it('can restart app', function () { execSync('cloudron restart --app ' + app.id); });
|
||||||
execSync('cloudron restart --wait --app ' + app.id);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
|
|
||||||
xit('can login', login.bind(null, username, password)); // no need to relogin since session persists
|
xit('can login', login.bind(null, username, password)); // no need to relogin since session persists
|
||||||
it('displays correct clone url', checkCloneUrl);
|
it('displays correct clone url', checkCloneUrl);
|
||||||
@@ -367,7 +377,7 @@ return done();
|
|||||||
//browser.manage().deleteAllCookies(); // commented because of error "'Network.deleteCookie' wasn't found"
|
//browser.manage().deleteAllCookies(); // commented because of error "'Network.deleteCookie' wasn't found"
|
||||||
// ensure we don't hit NXDOMAIN in the mean time
|
// ensure we don't hit NXDOMAIN in the mean time
|
||||||
browser.get('about:blank').then(function () {
|
browser.get('about:blank').then(function () {
|
||||||
execSync('cloudron configure --wait --location ' + LOCATION + '2 --app ' + app.id, EXEC_ARGS);
|
execSync('cloudron configure --location ' + LOCATION + '2 --app ' + app.id, EXEC_ARGS);
|
||||||
var inspect = JSON.parse(execSync('cloudron inspect'));
|
var inspect = JSON.parse(execSync('cloudron inspect'));
|
||||||
app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0];
|
app = inspect.apps.filter(function (a) { return a.location === LOCATION + '2'; })[0];
|
||||||
expect(app).to.be.an('object');
|
expect(app).to.be.an('object');
|
||||||
@@ -392,7 +402,7 @@ return done();
|
|||||||
|
|
||||||
// check if the _first_ login via email succeeds
|
// check if the _first_ login via email succeeds
|
||||||
it('can login via email', function (done) {
|
it('can login via email', function (done) {
|
||||||
execSync(`cloudron install --new --wait --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS);
|
execSync(`cloudron install --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS);
|
||||||
var inspect = JSON.parse(execSync('cloudron inspect'));
|
var inspect = JSON.parse(execSync('cloudron inspect'));
|
||||||
|
|
||||||
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
|
app = inspect.apps.filter(function (a) { return a.location === LOCATION; })[0];
|
||||||
@@ -411,7 +421,7 @@ return done();
|
|||||||
|
|
||||||
// No SSO
|
// No SSO
|
||||||
it('install app (no sso)', function () {
|
it('install app (no sso)', function () {
|
||||||
execSync(`cloudron install --new --wait --no-sso --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS);
|
execSync(`cloudron install --no-sso --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can get app information', function () {
|
it('can get app information', function () {
|
||||||
@@ -431,7 +441,7 @@ return done();
|
|||||||
|
|
||||||
// test update
|
// test update
|
||||||
it('can install app', function () {
|
it('can install app', function () {
|
||||||
execSync(`cloudron install --new --wait --appstore-id ${app.manifest.id} --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS);
|
execSync(`cloudron install --appstore-id ${app.manifest.id} --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('can get app information', getAppInfo);
|
it('can get app information', getAppInfo);
|
||||||
@@ -444,7 +454,7 @@ return done();
|
|||||||
it('can add and push a file', pushFile);
|
it('can add and push a file', pushFile);
|
||||||
|
|
||||||
it('can update', function () {
|
it('can update', function () {
|
||||||
execSync('cloudron install --wait --app ' + app.id, EXEC_ARGS);
|
execSync('cloudron update --app ' + app.id, EXEC_ARGS);
|
||||||
});
|
});
|
||||||
|
|
||||||
xit('can admin login', adminLogin);
|
xit('can admin login', adminLogin);
|
||||||
|
Reference in New Issue
Block a user