mirror of
https://git.cloudron.io/cloudron/gitea-app
synced 2025-09-26 15:07:25 +00:00
Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c263876cdd | ||
|
6429ca8909 | ||
|
0cf326f08f | ||
|
2cc40fffef | ||
|
9a3c9338c3 | ||
|
58a6351ab2 | ||
|
ef557e98d7 | ||
|
2a17c1717d | ||
|
62f9860bf5 | ||
|
522923dbee | ||
|
b117af4511 | ||
|
dc2987aafb | ||
|
50a2444e76 | ||
|
ea72f04000 | ||
|
2759c0d852 | ||
|
7b0ec195e6 | ||
|
a677369189 | ||
|
2e8b2c637f | ||
|
07d07b342a | ||
|
93fa56da6b | ||
|
e68a0333a9 | ||
|
5ed9ee9284 | ||
|
a94c165c34 | ||
|
1b053028a0 | ||
|
5e7a1b2a37 | ||
|
cc63133f85 | ||
|
08cbfbb9d4 | ||
|
9944104273 | ||
|
076dd3946b | ||
|
2885c388e8 | ||
|
8693f77352 |
82
CHANGELOG
82
CHANGELOG
@@ -461,3 +461,85 @@
|
|||||||
[1.15.0]
|
[1.15.0]
|
||||||
* Update Gitea to 1.11.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)
|
||||||
|
|
||||||
|
[1.17.0]
|
||||||
|
* Update Gitea to 1.12.1
|
||||||
|
* [Full changelog](https://github.com/go-gitea/gitea/releases/tag/v1.12.0)
|
||||||
|
|
||||||
|
[1.18.0]
|
||||||
|
* Add forumUrl and update tags and screenshots
|
||||||
|
|
||||||
|
[1.18.1]
|
||||||
|
* Update Gitea to 1.12.2
|
||||||
|
* [Full changelog](https://github.com/go-gitea/gitea/releases/tag/v1.12.2)
|
||||||
|
|
||||||
|
[1.18.2]
|
||||||
|
* Update Gitea to 1.12.3
|
||||||
|
* [Full changelog](https://github.com/go-gitea/gitea/releases/tag/v1.12.3)
|
||||||
|
* Don't change creation date when updating Release (#12343) (#12351)
|
||||||
|
* Show 404 page when release not found (#12328) (#12332)
|
||||||
|
* Fix emoji detection in certain cases (#12320) (#12327)
|
||||||
|
* Reduce emoji size (#12317) (#12327)
|
||||||
|
* Fix double-indirection bug in logging IDs (#12294) (#12308)
|
||||||
|
* Link to pull list page on sidebar when view pr (#12256) (#12263)
|
||||||
|
* Extend Notifications API and return pinned notifications by default (#12164) (#12232)
|
||||||
|
|
||||||
|
[1.18.3]
|
||||||
|
* Update Gitea to 1.12.4
|
||||||
|
* [Full changelog](https://github.com/go-gitea/gitea/releases/tag/v1.12.4)
|
||||||
|
* Escape provider name in oauth2 provider redirect (#12648) (#12650)
|
||||||
|
* Escape Email on password reset page (#12610) (#12612)
|
||||||
|
* When reading expired sessions - expire them (#12686) (#12690)
|
||||||
|
* StaticRootPath configurable at compile time (#12371) (#12652)
|
||||||
|
* Fix to show an issue that is related to a deleted issue (#12651) (#12692)
|
||||||
|
* Expire time acknowledged for cache (#12605) (#12611)
|
||||||
|
* Fix diff path unquoting (#12554) (#12575)
|
||||||
|
* Improve HTML escaping helper (#12562)
|
||||||
|
* models: break out of loop (#12386) (#12561)
|
||||||
|
* Default empty merger list to those with write permissions (#12535) (#12560)
|
||||||
|
* Skip SSPI authentication attempts for /api/internal (#12556) (#12559)
|
||||||
|
* Prevent NPE on commenting on lines with invalidated comments (#12549) (#12550)
|
||||||
|
* Remove hardcoded ES indexername (#12521) (#12526)
|
||||||
|
* Fix bug preventing transfer to private organization (#12497) (#12501)
|
||||||
|
* Keys should not verify revoked email addresses (#12486) (#12495)
|
||||||
|
* Do not add prefix on http/https submodule links (#12477) (#12479)
|
||||||
|
* Fix ignored login on compare (#12476) (#12478)
|
||||||
|
* Fix incorrect error logging in Stats indexer and OAuth2 (#12387) (#12422)
|
||||||
|
* Upgrade google/go-github to v32.1.0 (#12361) (#12390)
|
||||||
|
* Render emoji's of Commit message on feed-page (#12373)
|
||||||
|
* Fix handling of diff on unrelated branches when Git 2.28 used (#12370)
|
||||||
|
@@ -4,9 +4,10 @@
|
|||||||
"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.15.0",
|
"version": "1.18.3",
|
||||||
"healthCheckPath": "/healthcheck",
|
"healthCheckPath": "/healthcheck",
|
||||||
"httpPort": 3000,
|
"httpPort": 3000,
|
||||||
|
"memoryLimit": 536870912,
|
||||||
"addons": {
|
"addons": {
|
||||||
"mysql": { },
|
"mysql": { },
|
||||||
"sendmail": { },
|
"sendmail": { },
|
||||||
@@ -26,15 +27,16 @@
|
|||||||
"icon": "file://logo.png",
|
"icon": "file://logo.png",
|
||||||
"optionalSso": true,
|
"optionalSso": true,
|
||||||
"mediaLinks": [
|
"mediaLinks": [
|
||||||
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/1.png",
|
"https://cloudron-app-screenshots.s3.amazonaws.com/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/1.png",
|
||||||
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/2.png",
|
"https://cloudron-app-screenshots.s3.amazonaws.com/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/2.png",
|
||||||
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/3.png",
|
"https://cloudron-app-screenshots.s3.amazonaws.com/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/3.png",
|
||||||
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/4.png",
|
"https://cloudron-app-screenshots.s3.amazonaws.com/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/4.png",
|
||||||
"https://s3.amazonaws.com/cloudron-app-screenshots/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/5.png"
|
"https://cloudron-app-screenshots.s3.amazonaws.com/io.gitea.cloudronapp/f89a2ab8d49094c80589f69a2d60bef63b2dbb62/5.png"
|
||||||
],
|
],
|
||||||
"tags": [ "version control", "git", "code hosting", "development" ],
|
"tags": [ "version control", "git", "code hosting", "development", "github", "bitbucket", "gitlab" ],
|
||||||
"changelog": "file://CHANGELOG",
|
"changelog": "file://CHANGELOG",
|
||||||
"postInstallMessage": "file://POSTINSTALL.md",
|
"postInstallMessage": "file://POSTINSTALL.md",
|
||||||
"minBoxVersion": "4.1.4",
|
"minBoxVersion": "5.3.0",
|
||||||
|
"forumUrl": "https://forum.cloudron.io/category/19/gitea",
|
||||||
"documentationUrl": "https://cloudron.io/documentation/apps/gitea/"
|
"documentationUrl": "https://cloudron.io/documentation/apps/gitea/"
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
This app packages Gitea <upstream>1.11.0</upstream>
|
This app packages Gitea <upstream>1.12.4</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.11.0
|
ARG VERSION=1.12.4
|
||||||
|
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y openssh-server git && \
|
apt-get install -y openssh-server git && \
|
||||||
|
@@ -1,14 +1,12 @@
|
|||||||
A default admin user has been setup with the following credentials (use the `Local` authentication source when logging in):
|
This app is pre-setup with an admin account (use the `Local` authentication source for logging in as admin).
|
||||||
|
The initial credentials are:
|
||||||
|
|
||||||
```
|
**Username**: root <br/>
|
||||||
username: root
|
**Password**: changeme <br/>
|
||||||
password: changeme
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** Please change the password and email immediately after installation.
|
Please change the admin password immediately.
|
||||||
|
|
||||||
<sso>
|
<sso>
|
||||||
This app integrates with the Cloudron SSO. Cloudron users can login and use Gitea
|
Cloudron users can login using the `Cloudron` authentication source.
|
||||||
using the `Cloudron` authentication source.
|
|
||||||
</sso>
|
</sso>
|
||||||
|
|
||||||
|
1746
test/package-lock.json
generated
1746
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": "^85.0.0",
|
||||||
"chromedriver": "^76.0.1",
|
|
||||||
"expect.js": "^0.3.1",
|
"expect.js": "^0.3.1",
|
||||||
"mocha": "^6.2.2",
|
"mocha": "^8.1.3",
|
||||||
"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": "^6.1.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
89
test/test.js
89
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) {
|
||||||
@@ -112,26 +117,6 @@ return done();
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function editFile(done) {
|
|
||||||
browser.get('https://' + app.fqdn + '/' + username + '/' + reponame + '/_edit/master/newfile').then(function () {
|
|
||||||
var cm = browser.findElement(By.xpath('//div[contains(@class,"CodeMirror")]'));
|
|
||||||
var text = 'yo';
|
|
||||||
return browser.executeScript('arguments[0].CodeMirror.setValue("' + text + '");', cm);
|
|
||||||
}).then(function () {
|
|
||||||
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 () {
|
|
||||||
return browser.findElement(By.xpath('//button[contains(text(), "Commit Changes")]')).click();
|
|
||||||
}).then(function () {
|
|
||||||
return waitForUrl('https://' + app.fqdn + '/' + username + '/' + reponame + '/src/branch/master/newfile');
|
|
||||||
}).then(function () {
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function login(username, password, done) {
|
function login(username, password, done) {
|
||||||
browser.get('https://' + app.fqdn + '/user/login').then(function () {
|
browser.get('https://' + app.fqdn + '/user/login').then(function () {
|
||||||
return browser.findElement(By.id('user_name')).sendKeys(username);
|
return browser.findElement(By.id('user_name')).sendKeys(username);
|
||||||
@@ -151,8 +136,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();
|
||||||
});
|
});
|
||||||
@@ -281,32 +272,30 @@ return done();
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
xit('build app', function () {
|
xit('build app', function () { execSync('cloudron build', EXEC_ARGS); });
|
||||||
execSync('cloudron build', EXEC_ARGS);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can login', function (done) {
|
// it('can login', function (done) {
|
||||||
var inspect = JSON.parse(execSync('cloudron inspect'));
|
// var inspect = JSON.parse(execSync('cloudron inspect'));
|
||||||
|
|
||||||
superagent.post(`https://${inspect.apiEndpoint}/api/v1/developer/login`).send({
|
// superagent.post(`https://${inspect.apiEndpoint}/api/v1/developer/login`).send({
|
||||||
username: username,
|
// username: username,
|
||||||
password: password
|
// password: password
|
||||||
}).end(function (error, result) {
|
// }).end(function (error, result) {
|
||||||
if (error) return done(error);
|
// if (error) return done(error);
|
||||||
if (result.statusCode !== 200) return done(new Error('Login failed with status ' + result.statusCode));
|
// if (result.statusCode !== 200) return done(new Error('Login failed with status ' + result.statusCode));
|
||||||
|
|
||||||
token = result.body.accessToken;
|
// token = result.body.accessToken;
|
||||||
|
|
||||||
superagent.get(`https://${inspect.apiEndpoint}/api/v1/profile`)
|
// superagent.get(`https://${inspect.apiEndpoint}/api/v1/profile`)
|
||||||
.query({ access_token: token }).end(function (error, result) {
|
// .query({ access_token: token }).end(function (error, result) {
|
||||||
if (error) return done(error);
|
// if (error) return done(error);
|
||||||
if (result.statusCode !== 200) return done(new Error('Get profile failed with status ' + result.statusCode));
|
// if (result.statusCode !== 200) return done(new Error('Get profile failed with status ' + result.statusCode));
|
||||||
|
|
||||||
email = result.body.email;
|
// email = result.body.email;
|
||||||
done();
|
// done();
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
|
|
||||||
it('install app', function () { execSync(`cloudron install --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
|
it('install app', function () { execSync(`cloudron install --location ${LOCATION} -p SSH_PORT=${SSH_PORT}`, EXEC_ARGS); });
|
||||||
|
|
||||||
@@ -337,7 +326,6 @@ return done();
|
|||||||
it('can clone the url', cloneRepo);
|
it('can clone the url', cloneRepo);
|
||||||
|
|
||||||
it('can add and push a file', pushFile);
|
it('can add and push a file', pushFile);
|
||||||
it('can edit file', editFile);
|
|
||||||
|
|
||||||
it('can add custom file', addCustomFile);
|
it('can add custom file', addCustomFile);
|
||||||
it('can check custom file', checkCustomFile);
|
it('can check custom file', checkCustomFile);
|
||||||
@@ -349,13 +337,8 @@ return done();
|
|||||||
it('can clone the url', cloneRepo);
|
it('can clone the url', cloneRepo);
|
||||||
it('file exists in repo', fileExists);
|
it('file exists in repo', fileExists);
|
||||||
|
|
||||||
it('backup app', function () {
|
it('backup app', function () { execSync('cloudron backup create --app ' + app.id, EXEC_ARGS); });
|
||||||
execSync('cloudron backup create --app ' + app.id, EXEC_ARGS);
|
it('restore app', function () { execSync('cloudron restore --app ' + app.id, EXEC_ARGS); });
|
||||||
});
|
|
||||||
|
|
||||||
it('restore app', function () {
|
|
||||||
execSync('cloudron restore --app ' + app.id, EXEC_ARGS);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('can login', login.bind(null, username, password));
|
it('can login', login.bind(null, username, password));
|
||||||
it('can get avatar', checkAvatar);
|
it('can get avatar', checkAvatar);
|
||||||
|
Reference in New Issue
Block a user